lua脚本在kamailio中应用

lua语法

学习教程来自菜鸟,当然网上也有很多其他的教程。这里只是记录一些我觉得比较重要的点

安装(linux)

下载源码包,终端解压编译
sudo apt update
sudo apt install lua5.3

注释

– (单行注释:两个连字符,也就是两个减号)
–[[ ]]-- (多行注释)

标识符

字母、数字和下划线(不支持数字开头,下划线和大写字母也最好不用),区分大小写

变量

不需要声明,直接使用。非nil即存在,赋nil即删除。
type函数查看类型
变量只要没有local就是全局,local还可以标识局部函数
基本类型:nil、boolean、number、string、userdata、function、thread 和 table

  • nil:条件表达式中等同于false
  • boolean:false、true
  • number:双精度实浮点
  • function:c或者lua编写函数
  • userdata:储存在变量中的c数据结构
  • string:单双引号都可以。[]可以表示多行。#加字符串计算长度,两点表示连接字符串。也可以使用string.len\utf8.len(中文)
  • table:关联数组,索引可以是数字、字符串或表结构。初始索引从1开始,长度自动增长,可以使用[]或者.访问
  • function:支持匿名函数

循环

while,for,repeat-until
break
goto

  • label的格式为 :: label ::(后面可以直接接语句)

条件

if then,else,end
0也为真,只有false或者nil为假

函数

没有local就是全局
可变参数 …,函数内使用select(‘#’,…)可获取可变参数的数量、select(n,…)返回n开始的参数

运算符

算数:+ - * / % ^ //(整除)
关系:== ~=(不等于) > < >= <=
逻辑:and or not
优先级

  • ^
  • not - (unary)
  • *(乘) / %
  • +(加) -
  • < > <= >= ~= ==
  • and
  • or

字符串操作

string.upper , string.lower, string.gsub(替换), string.find, string.reverse, string.format, string.char, string.byte, string.len, string.rep(n个拷贝), string.gmatch(查找符合pattern的子串,返回迭代器), string.match, string.sub

table操作

table.contact, table.insert, table.maxn, table.remove, table.sort

模块

模块就是一个table。把需要到处的常量和函数都放进去table就行。文件最后返回这个table
加载使用require (require()/require “”)。

lua语言还是很全面,还有元表、协同程序、调试等。通过table+元表还能实现面向对象

kamailio+lua

kamailio支持嵌入其他语言(按照官方的说法,嵌入其他语言就是使用别的语言去写路由块处理的那些函数)。
如果要使用lua语言来编写路由逻辑模块,需要加载app_lua模块。目前支持lua版本:5.1、5.2、5.3、5.4

下面的介绍都是来自官方文档

使用方法

采用cfg+lua的方式。cfg文件中定义全局参数、导入运行需要的模块、模块的参数设置等,通过下面的配置,加载lua文件中定义的路由逻辑
# 导入kamailio模块
loadmodule "app_lua.so"
# 设置lua文件
modparam("app_lua", "load", "/path/to/script.lua")
# 执行lua文件
cfgengine "lua"
  • 在lua文件中KSR标识导出kamailio功能的对象。只要是在cfg文件中导入的模块,在lua文件中使用KSR.模块名.函数名来调用,使用方法都和cfg文件中的相同。
  • kamailio的core中的函数也能使用KSR.函数

kamailio路由和lua函数对应关系

  • request_route -> ksr_request_route
  • reply_route -> ksr_reply_route
  • onsend_route -> ksr_onsend_route
  • exit -> KSR.x.exit
  • drop -> KSR.x.drop

core函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值