万能 FreeSWITCH directory 脚本
来源:互联网 发布:软件使用说明书 编辑:程序博客网 时间:2024/05/24 05:26
万能 FreeSWITCH directory 脚本
好多人问我如何使用 mod_xml_curl 进行用户验证,每次回答指导都很费劲。今天用 PHP 写了一个万能脚本,希望对大家有帮助。
FreeSWITCH 默认使用静态的 XML 文件配置用户,但如果需要动态认证,就需要跟数据库关联。FreeSWITCH 通过使用 mod_xml_curl 模块完美解决了这个问题。实现思路是你自己提供一个 WEB 服务器,当有用户注册(或 INVITE)请求时,FreeSWITCH 向你的WEB服务器发送请求,你查询数据库生成一个标准的XML文件,FreeSWITCH 进而通过这一文件对用户进行认证。
好了,别的不多说了,看脚本(用PHP实现):
<?php $user = $POST['user']; $domain = $POST['domain']; $context = $_POST['context']; $password = "1234"; ?>
<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; ?>"/> <param name="vm-password" value="<?php echo $password; ?>"/> </params> <variables> <variable name="toll_allow" value="domestic,international,local"/> <variable name="accountcode" value="<?php echo $user; ?>"/> <variable name="user_context" value="<?php echo $context ?>"/> <variable name="effective_caller_id_name" value="FreeSWITCH-CN"/> <variable name="effective_caller_id_number" value="<?php echo $user;?>"/> <!-- <variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/> --> <!-- <variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/> --> <variable name="callgroup" value="default"/> <variable name="sip-force-contact" value="NDLB-connectile-dysfunction"/> <variable name="x-powered-by" value="http://www.freeswitch.org.cn"/> </variables> </user> </users> </group> </groups></domain>
之所以称这是万能脚本,是因为它根本不查询数据库,任何注册请求只要密码是 1234 就都能通过注册。
好了,把上述PHP文件放到你的服务器上,确保它能正确执行。
接下来配置你的 FreeSWITCH, conf/autoload_configs/xml_curl.conf.xml
<binding name="directory"> <param name="gateway-url" value="http://localhost/~seven/freeswitch/directory.php" bindings="directory"/></binding>
然后
reloadxmlreload mod_xml_curl
拿起你的SIP电话注册试试吧,别忘了万能密码是 1234。
然后怎么办?把最开头的几行换能你的业务逻辑(查询数据库等),就实现你自己的认证了。
上面的 php 脚本也放到 github 上了:https://gist.github.com/1086122
调试:
- load mod_xml_curl 错误
mod_xml_curl 默认是不编译的,到你的源代码目录中执行 make mod_xml_curl-install
- 还是不行
哥们,别告诉我不行,你要告诉我哪里出错了。在 FS 中执行 xml_curl debug_on ,FS 会把每次请求生成的 XML 存到类似 /tmp/xxx.xml 的一个文件里,看看里面有什么。
- 万能 FreeSWITCH directory 脚本
- freeswitch ivr脚本
- freeswitch会议模块lua脚本
- 《FreeSWITCH: VoIP实战》:嵌入式脚本
- linux万能解压脚本
- 万能拆分脚本
- FreeSWITCH向lua脚本传递参数
- freeswitch 使用外部directory 动态加载配置信息
- freeswitch 使用外部directory 动态加载配置信息 2
- FreeSWITCH
- freeswitch
- FreeSWITCH
- freeswitch
- 《FreeSWITCH: VoIP实战》: 一个在FreeSWITCH中外呼的Lua脚本
- Freeswitch 各版本一键安装脚本 Freeswitch 快速安装 G729编解码库
- 学习怎么开发shell安装脚本--freeswitch 安装
- FreeSWITCH 中的lua脚本里使用cjson的办法
- Active Directory扩展脚本的编写
- JNI:使用RegisterNatives方法传递和使用Java自定义类
- Web应用界面设计规范
- IE下 struts中使用滤镜对本地图片进行预览
- C#多线程访问定义的全局变量(lock线程锁)
- hdu 2103
- 万能 FreeSWITCH directory 脚本
- linux 中关于java的环境
- JDBC批处理
- FSM 有限状态机
- web容器 web服务器 servlet/jsp容器 之间的区别和关系
- JS得到当前鼠标的坐标
- linux定时执行,脚本问题解决汇总
- 用perl对文件中的字符串做处理的一个简单的示例
- 流程图的作用