Astconf Query Language

AQL (Astconf Query Language) 是用于查询,修改,插入和删除Asterisk配置文件的类sql语法的解析器,是基于php的一个库,你可以很容易和方便的使用它. ENGLISH

描述

AQL的目的是为了使让asterisk的配置文件更容易控制,它快速而且可靠.你甚至可以使用通常的SQL语句来控制配置文件而不用再担心你自己手动写入时格式是否正确的问题

建议:

  • 大于10000的用户: 除分机配置文件外都用AQL来管理.
  • 小于10000的用户: 用AQL来管理所有的配置.

语法

<?
include("aql.php");

// 从sip.conf查询8001的设置
$aql = new aql;
$aql->set('basedir','/etc/asterisk/');
$db = $aql->query("select * from sip.conf where section='8001'");
print_r($db);
?>

输出:
Array
(
    [8888] => Array
        (
            [type] => friend
            .....
        )

)

指南

获取AQL源码

从SVN:
>svn export http://darwin.freeiris.org/svn/freeiris/addition/aql/

安装

拷贝inc/及其下所有文件到你的程序目录.
加载aql.php到你程序,例如:

<?
require("../inc/aql.php");

$a = new aql();

if (!$a->set('basedir','./')) {
    echo __LINE__.' '.$a->get_error();
}

$a->query(....);
.....
?>

命令行模式

命令行模式类似于mysql控制台.

aql源码目录:
chmod +x aqlcli.php
./aqlcli.php <config_base_path>

例如:
./aqlcli.php /etc/asterisk/

Welcome to the AQL command line interface.  Commands end pass Enter key
Your AQL Library version : 1.0 ,   AQL_Confparser Version : 0.3

键入'help'查看帮助.

AQLcli>select * from sip.conf (<-type this)

输出结果

方法

$AQL->set(option,value)

对AQL对象进行设置.

  • basedir : 配置文件的所在目录, 该选项必须在所有操作前执行.
  • autocommit : 自动提交, 为false时你需要额外执行$aql——>commit(…) 来完成操作.

$AQL->query(expression)

执行AQL语法

关于语法的更多详细请参看Query Language Interface Reference

$AQL->commit($filename)

提交操作. 默认情况下不需要手动执行,除非你设置'autucommit'为false.

# 系统将一步步执行操作,如果不commit,你的删除操作将无效.
$AQL->set('autocommit','false');
$AQL->query("select * from sip.conf");
$AQL->query("delete from sip.conf where section='8001'");
$AQL->commit("sip.conf");

$AQL->commit_clean($filename)

回滚. 当'autocommit'设置为true才需要此操作

$AQL->get_error()

返回最后错误信息

$AQL->get_affected_rows()

获取最后一条AQL命令影响的行数

语法参考

基本语法

  • 每个asterisk配置文件相当与SQL中的表名
  • 每个段落名都是表的”section”字段和主键(PRIMARY KEY),它在任何结果中都是一个静态的关键字
  • 支持多个关键字
  • 在Asterisk中多个同名的关键字在AQL中将被转换为加[N]的形式,例allow=g729 allow=g723 到 allow allow[1], 但第一个关键字不会被改变.
  • 如果段落名'[unsection]'存在, 则查询section = null等同section = '[unsection]'

表达式

AQL的语法如下:


查询 :

  SELECT * FROM <config_file>
    [WHERE <condition> [AND <condition> ...]]
    [LIMIT [<offset>,]<count>]

编辑 :

  UPDATE <config_file> SET key=value[,key2=value2]
    [WHERE <condition> [AND <condition> ...]]
    [LIMIT [<offset>,]<count>]
    
添加 :

  ALTER TABLE <config_file> ADD key=value[,key2=value2...] [AFTER(keyname)|BEFORE(keyname)]
    [WHERE <condition> [AND <condition> ...]]
    [LIMIT [<offset>,]<count>]
    
删除 :

  ALTER TABLE <config_file> DROP key,[key2...]
    [WHERE <condition> [AND <condition> ...]]
    [LIMIT [<offset>,]<count>]

添加新section和数据:

  INSERT INTO <config_file> SET key=value[,key2=value2]
  
删除section :

  DELETE FROM <config_file>
    [WHERE <condition> [AND <condition> ...]]
    [LIMIT [<offset>,]<count>]

更换路径(类似于$aql->set('basedir',path)) :

  USE <path>
  

相对于SQL来说AQL关键字是不区分大小写的.但表名,字段名,数据则有大小写区分.

限制条件

只有名为”section =“才支持,因为”section”在asterisk配置文件中是唯一的.

WHERE可以让你指定查询的条件,AQL允许你使用and关键字,但没有or

# 查询8001到8004的分机.
where section >= 8001 and section <= 8004
# query results from unsection in any files.
where section = ''

操作符

比较 : = != < > <= >=
文字匹配 :
like '%string'
like 'string%'
like '%string%'

注意: 类似'%string%'这样的操作会比较慢.

Limit

LIMIT允许你限定查询的数量和指定数据游标.

limit 10
limit 10,10

功能接口参考

所有功能的接口继承于 aql_confparser.php.

get_version()

返回aql_confparser.php的版本

get_database()

返回全部的数据库数据

注意: 数据库数据是包含了所有的配置文件.

get_config_array($filename)

从数据库中返回解析过的配置信息

get_commit_assign($filename)

返回提交的列表

open_config_file($filename)

打开配置文件

open_reload($filename)

重新加载和解析指定的配置文件.

save_config_file($filename)

保存配置到指定文件.

check_database_exists($filename)

检查指定文件是否存在,返回true或false

free_database()

设置数据库变量为null

assign_append($section,$key,$value,$position=null,$match_key=null)

数据位置

$position:

  • null : 在section的最后或section的空白行.
  • before : 指定关键字之前,需设置'match_keyname'
  • after : 指定关键字之后,需设置'match_keyname'

assign_delkey($section,$key)

删除section中的关键字

assign_addsection($section,$datachunk)

添加一个新的section和相关数据

assign_delsection($section)

删除指定的section

FAQ

作者

COPYRIGHT

Copyright © 2010, Fonoirs CO.,LTD.

本软件基于GPL2协议释出.

企业入门级标准SIP话机-BW210

企业入门级标准SIP话机-BW210
厂商: 北京开源方诺科技有限公司  编号:   质保: 12月  查看详细
 此产品为第三方赞助商向您推荐.
Freeiris爱好者QQ群  43185599
aql_cn.txt · Last modified: 2010/07/02 17:47 by nsnake
Copyright © 2010 Freeiris DevelopTeam All Rights Reserved