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
<?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>
    <domain>
      <params>
        <param value="{presence_id=${dialed_user}@${dialed_domain}}${sofia_contact(${dialed_user}@${dialed_domain})}"/>
      </params>
      <groups>
        <group>
          <users>
            <user>
              <params>
                <param value="<?php echo $password; ?>"/>
                </params>
              <variables>
                <variable 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怎么设置的,自己加上原先的参数。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/9068359711291322492acde9fbb9ee63.html