测试OpenSIPS3.4.3的lua模块

这几天测试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才是真正的编程语言

相关推荐
呆呆敲代码的小Y1 天前
【游戏开发】Lua 与 C# 交互原理解析
c#·lua·交互·热更新·lua与c#交互·游戏热更新
呆呆敲代码的小Y1 天前
Lua 上值(UpValue)
开发语言·junit·lua·lua上值·upvalue
呆呆敲代码的小Y1 天前
【游戏开发】xLua 性能优化技巧
junit·性能优化·lua·xlua
曼巴UE51 天前
Unlua UE5.3 调试
ue5·lua·unlua
nvd111 天前
实战:用 Lua 手写 Kong 安全鉴权插件并通过 ArgoCD GitOps 零编译部署到 DbGate 服务
安全·lua·kong
攻城有术3 天前
专项攻克——redis分布式锁-用LUA脚本解决setNX锁不释放问题
redis·分布式·lua
肠畔码农9 天前
底层视角拆解:Redis Lua脚本原子性、主线程阻塞与主从不一致全解析
java·redis·lua
小的~~10 天前
面试被问懵了?为什么 Redis 单线程还能保证 Lua 脚本原子性,却偏偏选了 Lua?
redis·面试·lua
難釋懷11 天前
Nginx-Lua
nginx·junit·lua
mCell12 天前
Lua 编程入门:从基础语法到元表
javascript·算法·lua