Purpose
-------
The db_reg_agent module allows SEMS to read SIP accounts from a database
and register the accounts to SIP a registrar. In that it serves a similar
purpose as the reg_agent/registrar_client modules, with the differences
that it reads accounts from mysql DB instead of the file system, and that
it is built to support many (up to several 10k) subscription. Additionally,
accounts may be added, changed and removed while SEMS is running; the
db_reg_agent then can be triggered via DI interface (XMLRPC/json-rpc) to
pick up the new registration.
Features
- configurable subscription query
- configurable desired expires
- flatten out re-register spikes by intelligently planning registration refresh
- ratelimiting (x new REGISTER requests per y seconds)
- seamless restart of SEMS server possible; registration status is restored from DB.
max/avg calls and calls/s values, can be accessed via
get_callsmax/get_callsavg/get_cpsmax/get_cpsavg from
- stats server
- XMLRPC through xmlrpc2di
based on a patch by Robert Szokovacs rsokovacs gammatelecom hu
* dsm_lang:
DSM: support variables in range, e.g. range($myvar)
DSM: size($arrayname, $dst) action
added [] to chars not allowed in var names
DSM: fix for ($bar in array) for structs
DSM: parsing of "else", if conditions without []
DSM: implement for ($x in range(2, 5))
DSM: "for (x in array)" and "for (k,v in struct)"
dsm: execution reordered (small optimization)
reindent
reindent
implementation of functions in DSM
initial support for if blocks (no else)
SIGHUP - broadcast shutdown, usually sends BYE and stops all calls. The server does not terminate.
SIGINT - broadcast shutdown (usually sends BYE and stops all calls), and stop.
SIGTERM - stop the server, without broadcasting shutdown (no BYEs sent).
- regex maps are files with regex=>value entries which,
once loaded, can be used with $M(key=>mapname) pattern replacement
- it is now possible to use replacements in active_profile, and
also a list of profiles can be specified here - the first matching
will be used
if refuse_with is set, all calls in this profile are refused with
the specified response code and reason. pattern replacement is
enabled on both code and reason. append_headers option, too.
Development of this module was sponsored by TelTech Systems Inc.
The groups module implements a group event broadcast system. DSM calls can
join and leave groups, and post events to groups. Events are passed to all
members of the group that the event is posted to. Events can, just like the
`postEvent` function of DSM, contain either some variables, or all variables.
If a call ends, it is automatically removed from all groups it belongs to.
Actions:
groups.join(groupname) - Join a group
groups.leave(groupname) - Leave a group
groups.leaveAll() - Leave all groups
groups.postEvent(groupname, var1;var2) - post event to groupname with var1 and var2
groups.postEvent(groupname, var) - post event to groupname with all variables
- add reliable_1xx REL100_IGNORED, where all rel100 stuff is ignored
- set B2B sessions as reliable_1xx=REL100_IGNORED
- translate RAck Cseq
- for this: adds rack_method and rack_cseq to sip request (should possibly be reworked to use some dynamic field)
- relay Rseq (if exist)