Table of Contents
List of Examples
Table of Contents
This module offers topology hiding by stripping the SIP routing headers that show topology details. The script interpreter gets the SIP messages with full content, so all existing functionality is preserved.
The module is transparent for the configuration writer. It only needs to be loaded (tune the parameters if needed).
It also works for SIP MESSAGE or other requests that do not create a call dialog -- record_route() must be used for them as well, the headers are not going to be in the messages sent to the network, they are needed to know local addresses used to communicate with each side.
The following modules must be loaded before this module:
rr module - server must perform record routing to ensure in-dialog requests are encoded/decoded (it must be done for all initial requests).
database module - to store the data for topology stripping and restoring.
Type of storage, valid types are:
db - Database Backend
redis - Redis Backend
Default value is “db”.
Database URL.
Default value is “mysql://kamailio:kamailiorw@localhost/kamailio”.
Example 1.2. Set db_url
parameter
... modparam("topos", "db_url", "dbdriver://username:password@dbhost/dbname") ...
Note: this functionality is not implemented yet - the parameter is present in order to be in pair with topoh module.
Whether to replace or not the Call-ID with another unique id generated by Kamailio.
Default value is 0 (do not mask).
If set to 1, topos module will bind to sanity module in order to perform sanity checks over received SIP request. Default sanity checks are done. It is useful to check if received request is well formated before proceeding to encoding/decoding.
Default value is 0 (do not bind to sanity module).
Interval in seconds after which the branch records are deleted.
Default value is 180 (3 min).
Interval in seconds after which the dialog records are deleted.
Default value is 10800 (3 hours).
Interval in seconds to run the clean up of stored records.
Default value is 60 (1 min).
The name of the function in the KEMI configuration file (embedded scripting language such as Lua, Python, ...) to be executed instead of event_route[...] blocks.
The function receives a string parameter with the name of the event.
Default value is 'empty' (no function is executed for events).
Example 1.8. Set event_callback
parameter
... modparam("topos", "event_callback", "ksr_topos_event") ... -- event callback function implemented in Lua function ksr_topos_event(evname) KSR.info("===== topos module triggered event: " .. evname .. "\n"); return 1; end ...
It is executed before doing topology stripping processing for an outgoing SIP message. If 'drop' is executed inside the event route, then the module skips doing the topology hiding.
Inside the event route the variables $sndto(ip), $sndto(port) and $sndto(proto) point to the destination. The SIP message is not the one to be sent out, but an internally generated one at startup, to avoid reparsing the outgoing SIP message for the cases when topology hiding is not wanted.
Example 1.9. Usage of event_route[topos:msg-outgoing]
... event_route[topos:msg-outgoing] { if($sndto(ip)=="10.1.1.10") { drop; } } ...