123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310 |
- app_lua Module
- Daniel-Constantin Mierla
- asipto.com
- Edited by
- Daniel-Constantin Mierla
- <[email protected]>
- Copyright © 2010 Daniel-Constantin Mierla (asipto.com)
- __________________________________________________________________
- Table of Contents
- 1. Admin Guide
- 1. Overview
- 2. Dependencies
- 2.1. Kamailio Modules
- 2.2. External Libraries or Applications
- 3. Parameters
- 3.1. load (string)
- 3.2. register (string)
- 3.3. reload (boolean)
- 4. Functions
- 4.1. lua_dofile(path)
- 4.2. lua_dostring(script)
- 4.3. lua_run(function, params)
- 4.4. lua_runstring(script)
- 5. Exported RPC Commands
- 5.1. app_lua.list
- 5.2. app_lua.reload
- 6. Example of usage
- List of Examples
- 1.1. Set load parameter
- 1.2. Set register parameter
- 1.3. Set reload parameter
- 1.4. lua_dofile usage
- 1.5. lua_dostring usage
- 1.6. lua_run usage
- 1.7. lua_runstring usage
- Chapter 1. Admin Guide
- Table of Contents
- 1. Overview
- 2. Dependencies
- 2.1. Kamailio Modules
- 2.2. External Libraries or Applications
- 3. Parameters
- 3.1. load (string)
- 3.2. register (string)
- 3.3. reload (boolean)
- 4. Functions
- 4.1. lua_dofile(path)
- 4.2. lua_dostring(script)
- 4.3. lua_run(function, params)
- 4.4. lua_runstring(script)
- 5. Exported RPC Commands
- 5.1. app_lua.list
- 5.2. app_lua.reload
- 6. Example of usage
- 1. Overview
- This module allows executing Lua scripts from config file. It exports a
- set of functions to Lua in order to access the current processed SIP
- message. These functions are within Lua module 'sr'.
- Lua (http://www.lua.org) is a fast and easy to embed scripting
- language. Exported API from SIP router to Lua is documented in the
- dokuwiki.
- The module has two Lua contexts:
- * first is used for functions lua_dofile() and lua_dostring().
- * second is used for function lua_run() and parameter 'load'.
- Therefore lua_run() cannot execute functions from scripts loaded
- via lua_dofile() in config. This is kind of caching mode, avoiding
- reading file every time, but you must be sure you do not have
- someting that is executed by default and requires access to SIP
- message.
- 2. Dependencies
- 2.1. Kamailio Modules
- 2.2. External Libraries or Applications
- 2.1. Kamailio Modules
- The following modules must be loaded before this module:
- * none.
- 2.2. External Libraries or Applications
- The following libraries or applications must be installed before
- running Kamailio with this module loaded:
- * liblua5.1-dev - Lua devel library.
- 3. Parameters
- 3.1. load (string)
- 3.2. register (string)
- 3.3. reload (boolean)
- 3.1. load (string)
- Set the path to the Lua script to be loaded at startup. Then you can
- use lua_run(function, params) to execute a function from the script at
- runtime.
- Default value is "null".
- Example 1.1. Set load parameter
- ...
- modparam("app_lua", "load", "/usr/local/etc/kamailio/lua/myscript.lua")
- ...
- 3.2. register (string)
- Use this function to register optional SIP Router submodules to Lua.
- Available submodules are:
- * alias_db - register functions from alias_db module under
- 'sr.alias_db'.
- * auth - register functions from auth module under 'sr.auth'.
- * auth_db - register functions from auth_db module under
- 'sr.auth_db'.
- * dispatcher - register functions from dispatcher module under
- 'sr.dispatcher'.
- * maxfwd - register functions from maxfwd module under 'sr.maxfwd'.
- * msilo - register functions from msilo module under 'sr.msilo'.
- * presence - register functions from presence module under
- 'sr.presence'.
- * presence_xml - register functions from presence_xml module under
- 'sr.presence_xml'.
- * pua_usrloc - register functions from pua_usrloc module under
- 'sr.pua_usrloc'.
- * registrar - register functions from registrar module under
- 'sr.registrar'.
- * rls - register functions from rls module under 'sr.rls'.
- * rr - register functions from rr module under 'sr.rr'.
- * sanity - register functions from sanity module under 'sr.sanity'.
- * sdpops - register functions from sdpops module under 'sr.sdpops'.
- * siputils - register functions from siputils module under
- 'sr.siputils'.
- * sl - register functions from sl module under 'sr.sl'.
- * sqlops - register functions from sqlops module under 'sr.sqlops'.
- * textops - register functions from textops module under
- 'sr.textops'.
- * tm - register functions from tm module under 'sr.tm'.
- * xhttp - register functions from xhttp module under 'sr.xhttp'.
- Note that 'sr', 'sr.hdr' and 'sr.pv' modules are always registered to
- Lua.
- Default value is "null".
- Example 1.2. Set register parameter
- ...
- modparam("app_lua", "register", "sl")
- ...
- 3.3. reload (boolean)
- If reload is 1 enables the ability to reload the scripts using the RPC
- app_lua.reload command.
- Default value is "0 (off)".
- Example 1.3. Set reload parameter
- ...
- modparam("app_lua", "reload", 1)
- ...
- 4. Functions
- 4.1. lua_dofile(path)
- 4.2. lua_dostring(script)
- 4.3. lua_run(function, params)
- 4.4. lua_runstring(script)
- 4.1. lua_dofile(path)
- Execute the Lua script stored in 'path'. The parameter can be a string
- with pseudo-variables evaluated at runtime.
- Example 1.4. lua_dofile usage
- ...
- lua_dofile("/usr/local/etc/kamailio/lua/myscript.lua");
- ...
- 4.2. lua_dostring(script)
- Execute the Lua script stored in parameter. The parameter can be a
- string with pseudo-variables.
- Example 1.5. lua_dostring usage
- ...
- if(!lua_dostring("sr.log([[err]], [[----------- Hello World from $fU\n]])"))
- {
- xdbg("SCRIPT: failed to execute lua script!\n");
- }
- ...
- 4.3. lua_run(function, params)
- Execute the Lua function 'func' giving params as parameters. There can
- be up to 3 string parameters. The function must exist in the script
- loaded at startup via parameter 'load'. Parameters can be strings with
- pseudo-variables that are evaluated at runtime.
- Example 1.6. lua_run usage
- ...
- if(!lua_run("sr_append_fu_to_reply"))
- {
- xdbg("SCRIPT: failed to execute lua function!\n");
- }
- ...
- lua_run("lua_funcx", "$rU", "2");
- ...
- 4.4. lua_runstring(script)
- Execute the Lua script stored in parameter. The parameter can be a
- string with pseudo-variables. The script is executed in Lua context
- specific to loaded Lua files at startup.
- Example 1.7. lua_runstring usage
- ...
- if(!lua_runstring("sr.log([[err]], [[----------- Hello World from $fU\n]])"))
- {
- xdbg("SCRIPT: failed to execute lua script!\n");
- }
- ...
- 5. Exported RPC Commands
- 5.1. app_lua.list
- 5.2. app_lua.reload
- 5.1. app_lua.list
- Lists the id and path for every script loaded by the load parameter.
- Name: app_lua.list
- Parameters: none
- Example:
- kamcmd app_lua.lists
- 5.2. app_lua.reload
- Marks the need to reload the selected script. The actual reload is done
- by every working process when the next call to lua_run function is
- executed. If no parameter is added all the scripts are selected to be
- reloaded.
- Name: app_lua.reload
- Parameters: id
- Example:
- kamcmd app_lua.reload 0
- 6. Example of usage
- Create your Lua script and stored on file system, say:
- '/usr/local/etc/kamailio/lua/myscript.lua'.
- ...
- function sr_append_fu_to_reply()
- sr.hdr.append_to_reply("P-From: " .. sr.pv.get("$fu") .. "\r\n");
- end
- ...
- Load the script via parameter 'load' and execute function via
- lua_run(...).
- ...
- modparam("app_lua", "load", "/usr/local/etc/kamailio/lua/myscript.lua")
- ...
- route {
- ...
- if(!lua_run("sr_append_fu_to_reply"))
- {
- xdbg("SCRIPT: failed to execute lua function!\n");
- }
- ...
- }
- ...
|