This is an old revision of the document!
Table of Contents
Lua API
Overview
Initial author: Daniel-Constantin Mierla
Module app_lua allows execution of Lua scripts from SIP router configuration file, providing access to SIP message which is processed at that time. Exported functions by app_lua are available in the Lua script as package sr.
References:
- app_lua module: README
- Lua: http://www.lua.org
Remarks:
- check the modules' documentation that export functions to Lua (they match subpackage name) to understand better the functionality provided by specific functions
- the parameters must be strings if the prototype have them in between double quotes, or integers if there are no double quotes
- any parameter specified in prototype enclosed in between square brackets is optional
SR Package
Core functions.
sr.dbg
Print message to L_DBG level using internal log API.
Prototype
sr.dbg("message")
sr.err
Print message to L_ERR level using internal log API.
Prototype
sr.err("message")
sr.log
Print message to 'level' using internal log API.
Prototype
sr.log("level", "message")
Parameter level can be"
- dbg
- info
- warn
- err
- crit
sr.modf
Run a function exported by a module
Prototype:
sr.modf("function", "param1", "param2", ...);
Can be up to 6 optional parameters.
Example:
sr.modf("sl_reply_error");
Note that module functions that have parameter fixups cannot be executed unless they have free fixup. This is to prevent memory leaks caused by fixup functions. If you have doubts about a module function, whether it is safe to execute or not from Lua, ask on devel mailing list: sr-dev [at] lists.sip-router.org.
SR.HDR Package
Header management functions.
sr.hdr.append
Append header to end of headers list.
Prototype
sr.hdr.append("text")
sr.hdr.insert
Insert header to first position.
Prototype
sr.hdr.insert("text")
sr.hdr.remove
sr.hdr.append_to_reply
Append a header to SIP reply generated by proxy.
Prototype
sr.hdr.append_to_reply("text")
SR.PV Package
Pseudo-variable management functions.
sr.pv.get
Get the value of a pseudo-variable.
Prototype
sr.pv.get("pv")
sr.pv.seti
Set the integer value to pseudo-variable.
Prototype
sr.pv.seti("pv", value)
sr.pv.sets
Set the string value to pseudo-variable.
Prototype
sr.pv.sets("pv", "value")
sr.pv.unset
Unset pseudo-variables (assign $null).
Prototype
sr.pv.unset("pv")
sr.pv.is_null
Check if the pseudo-variable value is $null or not.
Prototype
sr.pv.is_null("pv")
SR.SL Package
Functions of SL module.
sr.sl.send_reply
Send SIP reply.
Prototype
sr.sl.send_reply(code, "reason")
Example:
lua_dostring("sr.sl.send_reply(200, [[ok from lua]])");
sr.sl.get_reply_totag
Return To-dag for SIP reply.
Prototype
sr.sl.get_reply_totag()
SR.TM Package
sr.tm.t_reply
Send stateful SIP reply.
Prototype
sr.tm.t_reply(code, "reason")
sr.tm.t_relay
Forward statefully SIP request.
Prototype
sr.tm.t_relay()
SR.SQLOPS Package
sr.sqlops.query
Execute SQL query.
Prototype
sr.sqlops.query("connection", "query", "result")
sr.sqlops.value
Return a value from result of SQL query.
Prototype
sr.sqlops.value("result", row, column)
sr.sqlops.is_null
Return true if a value from result is NULL.
Prototype
sr.sqlops.is_null("result", row, column)
sr.sqlops.column
Return a column name from result of SQL query.
Prototype
sr.sqlops.column("result", index)
sr.sqlops.nrows
Return number of rows from result of SQL query.
Prototype
sr.sqlops.nrows("result")
sr.sqlops.ncols
Return number of columns from result of SQL query.
Prototype
sr.sqlops.ncols("result")
sr.sqlops.reset
Free the result of SQL query.
Prototype
sr.sqlops.reset("result")
SR.RR Package
sr.rr.record_route
Add Record-Route header.
Prototype
sr.rr.record_route(["params"])
sr.rr.loose_route
Handle Route headers.
Prototype
sr.rr.loose_route()
SR.AUTH Package
sr.auth.www_challenge
Send WWW digest authentication challenge reply (401).
Prototype
sr.auth.www_challenge("realm", flags)
sr.auth.proxy_challenge
Send Proxy digest authentication challenge reply (401).
Prototype
sr.auth.proxy_challenge("realm", flags)
sr.auth.pv_www_authenticate
Perform WWW digest authentication using password from parameter.
Prototype
sr.auth.pv_www_authenticate("realm", "password", flags)
sr.auth.pv_proxy_authenticate
Perform Proxy digest authentication using password from parameter.
Prototype
sr.auth.pv_proxy_authenticate("realm", "password", flags)
sr.auth.consume_credentials
Delete authentication credentials from SIP request.
Prototype
sr.auth.consume_credentials()
SR.AUTH_DB Package
sr.auth_db.www_authenticate
Perform WWW digest authentication against database.
Prototype
sr.auth_db.www_authenticate("realm", "table")
sr.auth_db.proxy_authenticate
Perform Proxy digest authentication against database.
Prototype
sr.auth_db.proxy_authenticate("realm", "table")
SR.MAXFWD Package
sr.maxfwd.process_maxfwd
Handle Max Forward header.
Prototype
sr.maxfwd.process_maxfwd(newlimit)
SR.REGISTRAR Package
sr.registrar.save
Save contacts to user location table.
Prototype
sr.registrar.save("table" [, flags])
sr.registrar.lookup
Lookup contacts in user location table.
Prototype
sr.registrar.lookup("table")