1. 免费使用跨数据库的FreeSWITCH注册模块:
  2. 宁卫通信
  3. 新闻动态
  4. 宁卫新闻
  5. 免费使用跨数据库的FreeSWITCH注册模块

免费使用跨数据库的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 =?"

正确的返回值

<?xml version='1.0' encoding='UTF-8' standalone='no'?><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!

如果是没有该分机,则返回

<?xml version='1.0' encoding='UTF-8' standalone='no'?><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的账号间的处理,配置相对而言过于麻烦。

六、免费

本来之前是分享一些代码,但是模块的编译也是个麻烦事,再加上还有一些别的代码,所以我们就不再开源相关代码,但是此功能免费让用户使用。

七、免责说明

此能力我们免费提供大家使用,不负责为用户背锅,一切的使用或其它相关问题,由用户自行负责。