freeswitch xml_rpc模块

概述
freeswitch有非常多的周边模块,给我们提供各种各样的功能,有些功能在适当的场景下可以极大的方便我们的开发和应用。
今天我们介绍一个不常用的模块mod_xml_rpc。
freeswitch自身内置有http服务器模块,而mod_xml_rpc模块提供了一种非常方便的访问fs内部API接口的方式:通过webapi方式访问,并且可以做到和fs命令行一样的效果。
我们只需要在freeswitch的配置文件中打开一些默认配置,就可以很方便的使用该功能。
环境
centos:CentOS release 7.0 (Final)或以上版本
freeswitch:v1.8.7
GCC:4.8.5
安装mod_xml_rpc模块
freeswitch的源码安装部署请参照之前的文章。
mod_xml_rpc模块在fs编译安装过程中,默认是有编译安装的,不需要额外的操作步骤。
cd /usr/local/freeswitch/mod ll -rwxr-xr-x. 1 root root 1642704 8月 17 09:59 mod_xml_rpc.so -rwxr-xr-x. 1 root root 1347 8月 17 09:59 mod_xml_rpc.la
配置启动
mod_xml_rpc模块默认安装,但是在默认配置中是没有启动的,我想应该是出于安全的考虑,毕竟大多数使用fs的人员在不清楚mod_xml_rpc的功能的情况下,是有安全风险的。
修改freeswitch模块加载文件,启动加载mod_xml_rpc模块
cd /usr/local/freeswitch/conf/autoload_configs
vi modules.conf.xml
<!-- XML Interfaces -->
<load module="mod_xml_rpc"/>
查看xml_rpc模块配置文件,其中有http端口配置,默认是8080,另外有fs的鉴权信息,如果不做修改直接打开了公网的端口,有很大的安全风险。
[root@localhost autoload_configs]# cat xml_rpc.conf.xml
<configuration name="xml_rpc.conf" description="XML RPC">
<settings>
<!-- The port where you want to run the http service (default 8080) -->
<param name="http-port" value="8080"/>
<!-- if all 3 of the following params exist all http traffic will require auth -->
<param name="auth-realm" value="freeswitch"/>
<param name="auth-user" value="freeswitch"/>
<param name="auth-pass" value="works"/>
<!-- regex pattern to match against commands called against this service.
If a command with arguments matches, it will be logged at INFO level -->
<!--<param name="commands-to-log" value=""/> -->
</settings>
</configuration>
测试
使用浏览器打开http://192.168.0.152:8080/,用户名密码使用xml_rpc.conf.xml文件中的配置,查看如图

使用浏览器打开http://192.168.0.152:8080/webapi/status,查看如图,和直接在命令行中使用status命令返回信息一致

使用curl方式调用fs的webapi接口
[root@localhost ~]# curl --user freeswitch:works http://192.168.0.152:8080/webapi/status <h1>FreeSWITCH Status</h1> 2021-09-22 13:47:12<br> UP 0 years, 0 days, 2 hours, 15 minutes, 55 seconds, 38 milliseconds, 425 microseconds<br> FreeSWITCH (Version 1.8.7 64bit) is ready<br> 0 session(s) since startup<br> 0 session(s) - peak 0, last 5min 0 <br> 0 session(s) per Sec out of max 30, peak 0, last 5min 0 <br> 1000 session(s) max<br> min idle cpu 0.00/99.87<br> Current Stack Size/Max 240K/8192K
使用curl方式调用fs的自定义接口task,并附带参数test1 1234,mod_task模块代码见之前的文章
[root@localhost ~]# curl --user freeswitch:works http://192.168.0.152:8080/webapi/task?test1%201234 task api test1, cmd:test1 1234, session:(nil)
总结
freeswitch的mod_xml_prc模块在某些场景中有大用处,通过webapi方式调用fs内部api很方便,同时也要考虑到安全方面的风险。
freeswitch内部的API提供给外部调用的方式还是挺多的,后续我们再慢慢介绍。
最后,freeswitch通过webapi方式访问自定义API配合访问自定义模块的代码逻辑,可以深入研究一下。
fs官方文档:
https://freeswitch.org/confluence/display/FREESWITCH/mod_xml_rpc
空空如常
求真得真
freeswitch xml_rpc模块的更多相关文章
- freeswitch新增模块
概述 freeswitch的架构由稳定的核心模块和大量的外围插件式模块组成.核心模块保持稳定,外围模块可以动态的加载/卸载,非常灵活方便. 外围模块通过核心提供的 Public API与核心进行通信, ...
- freeswitch新增模块API
概述 上一章我们讲解了freeswitch的源码基本结构,以及如何新增一个插件式模块. freeswitch的架构非常适合这种业务开发模式,即以freeswitch的基本功能为开发平台,新增插件式模块 ...
- freeswitch python模块
概述 freeswitch支持多种语言的业务开发,包括C/C++,java,python,js,lua,Golang等等.freeswitch在使用python做业务开发时,有俩种接入方式,一种是ES ...
- freeswitch tts_commandline模块介绍
概述 freeswitch是开源.免费的VOIP软交换平台,自带了很多功能各异的模块. mod_tts_commandline模块,本身没有TTS能力,而是通过调用TTS引擎的命令生成语音文件,tts ...
- freeswitch自定义模块的wiki地址
http://wiki.freeswitch.org/wiki/Authoring_Freeswitch_Modules
- freeswitch拨打分机号源代码跟踪
概述 freeswitch是一款非常好用的开源VOIP软交换平台. 之前我们有介绍过使用fs拨打分机号的方法,其中代码流程是比较复杂的,所以单独开一章介绍. fs拨打分机号,是使用send_dtmf接 ...
- freeswitch模块之event_socket
这是我之前整理的关于freeswitch mod_event_socket的相关内容,这里记录下,也方便我以后查阅. mod_event_socket以socket的形式,对外提供控制FS一种途径, ...
- 《FreeSWITCH: VoIP实战》:SIP 模块 - mod_sofia
SIP 模块是 FreeSWITCH 的主要模块,所以,值得拿出专门一章来讲解. 在前几章时里,你肯定见过几次 sofia 这个词,只是或许还不知道是什么意思.是这样的,Sofia-SIP 是由诺基亚 ...
- FreeSWITCH 加载模块过程解读
今天来学习FreeSWITCH 加载模块过程. 哪些模块需要编译,是由源码下的 modules.conf 文件决定的. 哪些模块在程序启动时自动加载,是由 freeswitch/conf/autolo ...
- freeswitch插件式模块接口实现方式
概述 freeswitch的外围模块是插件式的,可以动态的加载和卸载,使用起来非常的灵活和方便. 如果我们自己来设计一个开源的代码框架,相信这种插件式的模块结构是非常适合多人合作的模式. 本文对fs的 ...
随机推荐
- [CF1748D] ConstructOR
题目描述 You are given three integers $ a $ , $ b $ , and $ d $ . Your task is to find any integer $ x $ ...
- Java在指定路径下执行cmd命令的方法
目前状态:毕业设计ing 背景: 做毕设时,由于需要将python的运行效果展示出来,所以使用了Java写了一个前端的界面.但是在使用Java对python的脚本进行调用时就尴尬了,出错-- 这里也许 ...
- Tampermonkey(油猴)的获取方法
介绍: Tampermonkey中有大量的脚本,可以方便我们在日常的上网使用. 有那么一句话说:没有了Tampermonkey(油猴)我都不知道该如何上网. 获取Tampermonkey的步骤: 1. ...
- Java五种设计模式实现奶茶订单生成系统小DEMO
前言 这是大学时候上设计模式这门课写的程序,当时课程任务是要求结合五个设计模式写一个系统,最近偶然翻到,把系统分享一下. 成品预览 主界面 功能介绍 订单管理系统,实现了对订单的增删改查.且实现了 ...
- LeetCode331:验证二叉树的前序序列化(递归)
解题思路:把所有元素存成数组,设置一个全局下标next,表示当前节点如果要继续遍历应当从数组的哪个位置开始,然后从下标 0 开始DFS.如果DFS返回真并且next下标等于数组的长度,说明元素已经全部 ...
- Mongo 数据库备份和恢复命令
转载请注明出处: 在MongoDB中,使用mongodump和mongorestore命令来备份和恢复数据库 mongodump 1.使用方法: 使用 mongodump 命令可以备份MongoDB数 ...
- 这样delete居然不走索引
背景 由于业务变迁,合规要求,我们需要删除大量非本公司的数据,涉及到上百张表,几个T的数据清洗.我们的做法是先从基础数据出发,将要删除的数据id收集到一张表,然后再由上往下删除子表,多线程并发处理. ...
- 网安区过年-Log4j2
Log4j2-2021 漏洞原理 Apache Log4j 2 是Java语言的日志处理套件,使用极为广泛.在其2.0到2.14.1版本中存在一处JNDI注入漏洞,攻击者在可以控制日志内容的情况下,通 ...
- Recursion Function 递归笔记
递归的解释: 递归(英语:Recursion),又译为递回, 在数学与计算机科学中,是指在函数的定义中使用函数自身的方法.(本文要讨论的重点) 递归一词还较常用于描述以自相似方法重复事物的过程.(指一 ...
- zabbix+oracle环境部署
oracle11安装完成后, 实例名: zbx01 oracle创建zbx01用户:col file_name for a60;set linesize 160;select file_name,ta ...