免费使用跨数据库的FreeSWITCH注册模块
微信公众号链接:
https://mp.weixin.qq.com/s?__biz=MzI3NzQ0NzkyNQ==&mid=2247486735&idx=1&sn=afe98bcf2a88e54691e6a2e6206e3637&chksm=eb675895dc10d1838689c61554c584de95c9e39d1e48be1429342eeeed8dde2670f5945e765c&token=1616075071&lang=zh_CN#rd
不需要lua,不需要其它方式,配置即可按自己数据库表结构进行注册认证的模块。
下载:
通过网盘分享的文件:nacd2.4.1.zip
链接: https://pan.baidu.com/s/1Fa7Wxl61U-zOyWudoq41WA?pwd=8h75 提取码: 8h75
一、 测试连接方式可用否
postgresql
./test postgres "postgres://postgres:Nway2017@127.0.0.1/cloudcc_web?sslmode=disable" 10001 10.0.0.25 "SELECT extension_pswd FROM nway_extension WHERE extension_number = \$1"
注意:这里的$1需要加,否则会被shell转义
mysql
./test mysql "mysql://root:Nway2017@127.0.0.1/cloudcc_web" 10001 10.0.0.25 "SELECT extension_pswd FROM nway_extension WHERE extension_number =?"
正确的返回值
<document type='freeswitch/xml'>
<section name='directory'>
<domain name='10.0.0.25'>
<params>
<param name='dial-string' value='{presence_id=${dialed_user}@${dialed_domain}}${sofia_contact(${dialed_user}@${dialed_domain})}'/>
</params>
<groups>
<group name='nway'>
<users>
<user id='10001'>
<params>
<param name='password' value='123456'/>
<param name='vm-password' value='123456'/>
</params>
<variables>
<variable name='user_context' value='default'/>
<variable name='effective_caller_id_number' value='10001'/>
<variable name='outbound_caller_id_number' value='10001'/>
</variables>
</user>
</users>
</group>
</groups>
</domain>
</section>
</document>
如果连接不了数据库,则返回
Database Disconnected!
如果是没有该分机,则返回
<document type='freeswitch/xml'>
<section name='directory'>
</section >
</document >
二、配置
在nacd.conf.xml中主要关心
<configuration name="nacd.conf" description="Nway ACD Module">
<settings>
<!-- 分机注册相关配置 -->
<param name="db_type" value="postgres"/> <!-- 支持postgres和mysql -->
<param name="db_string" value="postgres://postgres:Nway2017@127.0.0.1/cloudcc_web?sslmode=disable"/>
<param name="ext_query_string" value="SELECT extension_pswd FROM nway_extension WHERE extension_number = $1"/>
</settings>
</configuration>
注意:其它部分和认证功能无关,包括授权等,都和认证这部分无关,直接使用即可
配置说明:
-
db_type:指定数据库类型,支持
postgres
和mysql
。根据所使用的数据库类型,mod_nacd
会进行相应处理。 -
db_string:数据库连接字符串,这里使用了 PostgreSQL 的标准连接格式。连接字符串格式需要与数据库类型一致。
-
ext_query_string:查询语句,用于查找分机的密码。
$1
是查询参数,用来替代分机号码,模块将会使用此语句从数据库中获取用户的注册信息。
三、程序说明
mod_nacd.so FreeSWITCH的模块,放于$FS_PATH/mod/
nacd.conf.xml mod_nacd的配置文件 ,放于 $FS_PATH/conf/autoload_configs/
nway_extensionV20241028.sql 我们fsgui中定义的nway_extension表结构,mysql可参考
test 用于实现以上访问数据库能力的测试程序
四、核心功能:静态编译和自定义数据库结构
mod_nacd
的核心特点是使用静态编译,通过集成数据库查询功能的 Go 代码,避免了对 MySQL 或 PostgreSQL C 客户端库的依赖。这种方式的优势在于:
-
减少依赖:无需安装额外的数据库客户端库,模块可以直接与数据库通信。
-
灵活性:用户可以自定义查询语句和表结构,使得模块能够适配不同的数据库设计。
模块的数据库交互功能通过静态编译后的 Go 库(如 libndb_conn.a
)实现,这个库包含了数据库连接和查询的逻辑,编译为 .a
文件后直接嵌入到模块中,保证了独立性。
五、用途
代替到现在还有人要用lua或xml等进行数据库和FreeSWITCH的账号间的处理,配置相对而言过于麻烦。
六、免费
本来之前是分享一些代码,但是模块的编译也是个麻烦事,再加上还有一些别的代码,所以我们就不再开源相关代码,但是此功能免费让用户使用。
七、免责说明
此能力我们免费提供大家使用,不负责为用户背锅,一切的使用或其它相关问题,由用户自行负责。