阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

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

455次阅读
没有评论

共计 3583 个字符,预计需要花费 9 分钟才能阅读完成。

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

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

准备工作:
一套 LAMP 或 LNMP 环境
编译 FreeSWITCH 的 mod_xml_curl 模块

Apache + php7 + MySQL 5.7 中的 php 脚本

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

linuxidc@linuxidc/var/www/html$ cat linuxidc_test.php
<?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);
?>
<document type=”freeswitch/xml”>
  <section name=”directory”>
    <domain name=”<?php echo $domain;?>”>
      <params>
        <param name=”dial-string” value=”{presence_id=${dialed_user}@${dialed_domain}}${sofia_contact(${dialed_user}@${dialed_domain})}”/>
      </params>
      <groups>
        <group name=”default”>
          <users>
            <user id=”<?php echo $user; ?>”>
              <params>
                <param name=”password” value=”<?php echo $password; ?>”/>
                </params>
              <variables>
                <variable name=”user_context” value=”default”/>
              </variables>
            </user>
          </users>
        </group>
      </groups>
    </domain>
  </section>
</document>
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

    <!– <load module=”mod_xml_curl”/> –>
改为
    <load module=”mod_xml_curl”/>
   

修改 FreeSWITCH 用户注册的方式,HTTP 优先,如果请求失败了,再到本地磁盘找 xml 文件
[root@CentOS freeswitch]# vim autoload_configs/xml_curl.conf.xml
<configuration name=”xml_curl.conf” description=”cURL XML Gateway”>
  <bindings>
    <binding name=”directory”>
      <param name=”gateway-url” value=”http://172.16.20.17/linuxidc_test.php” bindings=”directory”/>
    </binding>
  </bindings>
</configuration>

修改拨号计划,添加通话路由
[root@CentOS freeswitch]# vim dialplan/default.xml 
<condition field=”destination_number” expression=”^(10[01][0-9]|1234|lao_wang)$”>

启动 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

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

lao_wang 的电话显示 1234 来电了

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

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-07/145379.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计3583字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19350
评论数
4
阅读量
7910817
文章搜索
热门文章
开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南 大家好,我是星哥。之前介绍了腾讯云的 Code...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装 Black 群晖 DSM7.2 系统安装教程(在 Vmware 虚拟机中、实体机均可)! 前言 大家好,...
安装并使用谷歌AI编程工具Antigravity(亲测有效)

安装并使用谷歌AI编程工具Antigravity(亲测有效)

  安装并使用谷歌 AI 编程工具 Antigravity(亲测有效) 引言 Antigravity...
告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

  告别 Notion 焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁” 引言 在数字笔记工...
星哥带你玩飞牛NAS-2:飞牛配置RAID磁盘阵列

星哥带你玩飞牛NAS-2:飞牛配置RAID磁盘阵列

星哥带你玩飞牛 NAS-2:飞牛配置 RAID 磁盘阵列 前言 大家好,我是星哥之前星哥写了《星哥带你玩飞牛 ...
开发者福利:免费 .frii.site 子域名,一分钟申请即用

开发者福利:免费 .frii.site 子域名,一分钟申请即用

  开发者福利:免费 .frii.site 子域名,一分钟申请即用 前言 在学习 Web 开发、部署...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
开发者福利:免费 .frii.site 子域名,一分钟申请即用

开发者福利:免费 .frii.site 子域名,一分钟申请即用

  开发者福利:免费 .frii.site 子域名,一分钟申请即用 前言 在学习 Web 开发、部署...
把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地 大家好,我是星哥,今天教大家在飞牛 NA...
4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

  4 盘位、4K 输出、J3455、遥控,NAS 硬件入门性价比之王 开篇 在 NAS 市场中,威...
星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛 NAS-12:开源笔记的进化之路,效率玩家的新选择 前言 如何高效管理知识与笔记,已经成为技术...
星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的 NAS 中! 大家对「数据安全感」的需求越来越高 ...