资源描述:
《使用数据库保存asterisk配置》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、在默认情况下,Asterisk的配置文件都保存在/etc/asterisk目录中,以ini文件的格式保存。我们也可以使用数据库来保存大多数Asterisk配置信息。Asterisk使用数据库保存配置信息有两种方法:静态和动态,对于不经常修改的配置数据,可以使用静态的方式保存,这些数据都是在Asterisk对应的模块加载时获取配置信息。动态方式适合那些经常变化的数据,例如SIP帐号信息。使用数据库来保存SIP帐号信息还有一个好处:Asterisk会自动把SIP帐号登录Asterisk的相关资料保存到表中,这样大大的方便了管理员检
2、查当前SIP帐号的使用情况和状态。下面开始介绍Asterisk的数据库获取配置的方法。我使用的是Asterisk版本是11.0.0。在这里,我只对Asterisk的基本配置和SIP相关的配置感兴趣,AIX帐号的配置和SIP的配置应该类似,不想多作分析。1.基本介绍1.1.获取数据的方法配置信息可以保存在多种数据库中,下面是Asterisk支持的数据库的列表和对应的模块:lodbcres_config_odbclsqliteres_config_sqlitelpgsqlres_config_pgsqllcurlres_confi
3、g_curllldapres_config_ldap为了通用性,我选择了ODBC作为获得和修改Asterisk配置信息的方式,数据库使用mysql。在这里我不介绍如何安装unixODBC和mysql,只对相关的表和配置文件做介绍。1.2.使用到的表结构1.2.1.静态配置表CREATETABLE`ast_config`(`id`int(11)NOTNULLauto_increment,`cat_metric`int(11)NOTNULLdefault'0',`var_metric`int(11)NOTNULLdefault'0
4、',`commented`int(11)NOTNULLdefault'0',`filename`varchar(128)NOTNULLdefault'',`category`varchar(128)NOTNULLdefault'default',`var_name`varchar(128)NOTNULLdefault'',`var_val`varchar(128)NOTNULLdefault'',PRIMARYKEY(`id`),KEY`filename_comment`(`filename`,`commented`))这个表
5、结构是一个通用的保存各种.conf文件信息的表结构。Asterisk可以让模块的配置信息保存在一个表中,或者分别保存在不同的表中。下面是表的说明ColumnnameColumntypeDescriptionidSerial,auto-incrementingAnauto-incrementinguniquevalueforeachrowinthetable.cat_metricIntegerTheweightofthecategorywithinthefile.Alowermetricmeansitappearshigheri
6、nthefile(seethesidebar).context类型的权重var_metricIntegerTheweightofanitemwithinacategory.Alowermetricmeansitappearshigherinthelist(seethesidebar).Thisisusefulforthingslikecodecorderinsip.conf,oriax.confwhereyouwantdisallow=alltoappearfirst(metricof0),followedbyallow=ul
7、aw(metricof1),thenallow=gsm(metricof2).变量的权重filenameVarchar128Thefilenamethemodulewouldnormallyreadfromtheharddriveofyoursystem(e.g.,musiconhold.conf,sip.conf,iax.conf,etc.).文件名categoryVarchar128Thesectionnamewithinthefile,suchas[general].Donotincludethesquarebracke
8、tsaroundthenamewhensavingtothedatabase.类型var_nameVarchar128Theoptionontheleftsideoftheequalssign(e.g.,disallowisthevar_nameindisallow=all)