exec module allows to start an external command from an OpenSER script. The commands may be any valid shell commands–the command string is passed to shell using “popen” command. OpenSER passes additionally lot of information about request in environment variables:
- SIP_HF_<hf_name> contains value of each header field in request. If a header field occurred multiple times, values are concatenated and comma-separated. <hf_name> is in capital letters. Ff a header-field name occurred in compact form, <hf_name> is canonical.
- SIP_TID is transaction identifier. All request retransmissions or CANCELs/ACKs associated with a previous INVITE result in the same value.
- SIP_DID is dialog identifier, which is the same as to-tag. Initially, it is empty.
- SIP_SRCIP is source IP address from which request came.
- SIP_ORURI is original request URI.
- SIP_RURI is current request URI (if unchanged, equal to original).
- SIP_USER is userpart of current request URI.
- SIP_OUSER is userpart of original request URI.
In OpenSER 1.2.0, the commands to be executed can be composed with pseudo-variable, in this way is possible to give arguments to command.
# print From URI in file 'caller.log'
exec_msg("echo '$fu' >caller.log");
exec_msg() can be used to execute command, the output of command being ignored. exec_dset() gets each line from command output and sets destination set (R-URI and branches). exec_avp() gets each line from command output and add as AVPs.