这几天测试OpenSIPS3.4.3的lua模块,记录如下:
- 功能比Kamailio的KEMI少,少多了,更要命的是没lua例子
我凑了一个简单的例子:
# opensips.cfg
loadmodule "lua.so"
modparam("lua", "luafilename", "/etc/opensips/opensips.lua")
modparam("lua", "lua_auto_reload", 1)
...
route {
lua_exec("func1");
...
}
-- opensips.lua
function func1(msg)
local mb = pseudoVar(msg, "$mb")
local via = getHeader(msg, "Via")
xlog("L_NOTICE", "request = " .. mb .. "\n")
xlog("via = " .. via .. "\n")
local m = getmem()
xlog("total_size = " .. m.total_size .. "\n")
xlog("total_frags = " .. m.total_frags .. "\n")
end
-
lua_exec可以带参数
opensips.cfg
loadmodule "lua.so"
modparam("lua", "luafilename", "/etc/opensips/opensips.lua")
modparam("lua", "lua_auto_reload", 1)
...route {
lua_exec("func2", "1");# 传伪变量也可 $var(x) = '2'; lua_exec("func2", $var(x)); ...
}
-- opensips.lua
function func2(msg, param)
-- ...
end
但只能带一个参数,只能是字符串类型
- lua_auto_reload 参数如果配置为1,那么lua修改之后自动reload
- 有很多函数没写到文档里面
在源码里面搜索luaL_Reg可以找到很多,有时间方面的,有mysql方面的,还有memcache方面的
- lua模块还是很实用的
有一次客户要修改sdp,native路由很难处理,但对lua就是小菜一碟了(多行字符串处理), 毕竟lua才是真正的编程语言