linux下使用外部磁盘,FreeSWITCH 使用外部Directory 代替磁盘xml文件

大家都知道,FreeSWITCH默认是从磁盘中xml文件,决定系统中有哪些用户的。对于一个常规的信息系统,用户信息都是存储在数据库中。

以下非常简单的演示了,FreeSWITCH中的用户如何使用数据库注册。

准备工作:

一套LAMP或LNMP环境

编译FreeSWITCH 的mod_xml_curl 模块

Apache + php7 + MySQL 5.7 中的php脚本

根据实际情况,修改相关参数

linuxidc@linuxidc/var/www/html$ cat linuxidc_test.php

/*

* 作者:李春利

* 功能:演示接收FreeSWITCH注册请求,连接到远程MySQL数据库检索用户密码,返回XML文件

* 备注:PHP 7.0 版本程序,注意MySQL函数发生了变化

* MySQL数据库表快速创建:

CREATE DATABASE IF NOT EXISTS `freeswitch`  DEFAULT CHARACTER SET utf8;

USE `freeswitch`;

DROP TABLE IF EXISTS `authentication`;

CREATE TABLE `authentication` (

`user_name` varchar(100) NOT NULL,

`user_password` varchar(100) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `authentication` VALUES ('lao_wang','tiger'),('1234','4321'),('linuxidc','chunli'),('1030','123456'),('1019','1234'),('2222','12345678');

*/

$user  = $_POST['user'];

$domain = $_POST['domain'];

$password = "";

$db_host = "172.16.66.111";

$db_user = "root";

$db_pwd  = "root";

$db_name = "freeswitch";

function getlink($db_host,$db_user,$sb_pwd,$db_name)

{

$link=mysqli_connect($db_host,$db_user,$sb_pwd);

if(!$link)

{

echo"MySQL数据库连接失败\n";

exit();

}

if(!mysqli_select_db($link,$db_name))

{

echo"MySQL 数据库选择失败\n";

exit();

}

mysqli_query($link, "setnames utf8");

return $link;

}

$link=getlink($db_host,$db_user,$db_pwd,$db_name);

$result=mysqli_query($link, "select user_password  from authentication where user_name = '${user}'");

if(mysqli_num_rows($result) > 0)

{

while($row=$result->fetch_row())

{

foreach($row as $key=>$val)

{

$password = $val;

}

}

$result->free();

}

else

{

echo"查无此人{$user}\n";

exit();

}

mysqli_close($link);

?>

linuxidc@linuxidc/var/www/html$

编译FreeSWITCH 相关模块

[root@CentOS ~]# iptables -F

[root@CentOS ~]# iptables -X

编译mod_xml_curl,默认不编译

[root@CentOS 01_install]# vim freeswitch-1.6.17/modules.conf

#xml_int/mod_xml_curl

改为

xml_int/mod_xml_curl

编译 ./configure && make && make mod_xml_curl-install

具体你的configure怎么设置的,自己加上原先的参数。

使FreeSWITCH自动加载mod_xml_curl

[root@CentOS freeswitch]# vim ./autoload_configs/modules.conf.xml

改为

修改FreeSWITCH用户注册的方式,HTTP优先,如果请求失败了,再到本地磁盘找xml文件

[root@CentOS freeswitch]# vim autoload_configs/xml_curl.conf.xml

修改拨号计划,添加通话路由

[root@CentOS freeswitch]# vim dialplan/default.xml

启动FreeSWITCH

一个SIP 使用 ('lao_wang','tiger'),注册

一个SIP 使用('1234','4321'), 注册

互相拨打电话,试试

调错技巧:

按F8,打开 debug级别日志。

拨打电话,打不通,如果出现以下情况,说明HTTP请求是失败的,检查php脚本的ip,user,password参数

2017-06-29 01:21:40.705900 [WARNING] mod_voicemail.c:3487 Can't find user [1000@172.16.66.88]

如果出现以下情况,说明HTTP请求被拒绝,tcpdump 查看发来的包结构。

2017-06-29 00:22:38.681206 [WARNING] mod_xml_curl.c:294 CURL returned error:[52] Server returned nothing (no headers, no data)

用户1234 拨打 lao_wang

f08505e0a256ae35c840f565f7a170d6.png

lao_wang的电话显示1234来电了

86cd043eb672ea69a364e545fcca58cf.png

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值