# $Id$ # # sems.conf.sample # # Sip Express Media Server (sems) # # sample configuration file # # # whitespaces (spaces and tabs) are ignored # comments start with a "#" and may be used inline # # example: option=value # i like this option # # @filename includes mod_config_path/filename # @/absolute/path/to/file includes file ############################################################ # Network configuration # If only one signaling (SIP) and media (RTP) interface is # to be used, configure the options # sip_ip / sip_port / media_ip/ rtp_low_port / # rtp_high_port / public_ip / sig_sock_opts # If more than one interface is to be used, configure the option # 'interfaces' and those options for each interface. ############# configuration for single interface ############ # optional parameter: sip_ip=| # # - SIP IP where the SIP stack is bound to. This also sets # the value used for contact header in outgoing calls and # registrations. # - If neither 'media_ip' nor 'sip_ip' are set, defaults # to first non-loopback interface, and the port configured below # is ignored. # # Example: # sip_ip=10.0.0.34 # sip_ip=en0 # optional parameter: sip_port= # # - port where its SIP stack should be bound to, ignored if sip_ip not set. # default: 5060 # #sip_port=5080 # optional parameter: media_ip=| # # - IP address or interface that SEMS uses to send and receive media. # - If neither 'media_ip' nor 'sip_ip' are set, defaults # to first non-loopback interface. If 'sip_ip' is set, # 'media_ip' defaults to 'sip_ip. # # Examples: # media_ip=10.0.0.34 # media_ip=eth0 # optional parameter: rtp_low_port= # # - sets lowest for RTP used port (Default: 1024) rtp_low_port=10000 # optional parameter: rtp_high_port= # # - sets highest for RTP used port (Default: 0xffff) rtp_high_port=60000 # optional parameter: public_ip= # # - near end NAT traversal. when running SEMS behind certain static # NATs, use this parameter to inform SEMS of its public IP # address. If this parameter is set, SEMS will write this value # into SDP bodies and Contact. # If this parameter is not set, the local IP address is used. # N.B., there is no support for port translation; the local # RTP port is advertised in SDP in either case. # # Example: # public_ip=75.101.219.48 # # optional parameter: sig_sock_opts=option,option,option,... # # - signaling socket options # o force_via_address - force sending replies to 1st Via # o no_transport_in_contact - do not add transport to contact in replies # # Example: # sig_sock_opts=force_via_address,no_transport_in_contact # optional parameter: tcp_connect_timeout= # Default: 2000 (2 sec) # optional parameter: tcp_idle_timeout= # Default: 3600000 (1 hour) ############# configuration for multiple interfaces ############ # interfaces = # # 'interfaces' must be set if more than one interface is to be used # for the same purpose (e.g. more than one interface for SIP). # Configure additional interfaces if networks should be bridged or # separate networks should be served. # # For each interface, a set of parameters suffixed with the # interface name should be configured. # # Please note that for each additional interface, # 'sip_ip_[if_name]' is mandatory (but can be the interface # name, then the first assigned IP is used). The other # parameters are optional. 'media_ip_[if_name]' # is derived from 'sip_ip_[if_name]' if not set. # 'public_ip_[ip_name]' is also based on 'sip_ip_[if_name]' # if not set explicitly. # # Example: interfaces=rhizo,vsat # sip_ip_rhizo=<%= @vpn_ip_address %> sip_port_rhizo=5095 media_ip_rhizo=<%= @vpn_ip_address %> rtp_low_port_rhizo=12000 rtp_high_port_rhizo=13000 # sip_ip_vsat=<%= @vsat_ip_address %> sip_port_vsat=5090 media_ip_vsat=<%= @vsat_ip_address %> rtp_low_port_vsat=14000 rtp_high_port_vsat=15000 #sig_sock_opts_vsat=force_via_address tcp_connect_timeout_vsat=1000 tcp_idle_timeout_vsat=900000 ############# other network configuration ############################## # NAT handling for SIP:sip_nat_handling={yes|no} # # Learn remote next hop address from the source of the address where # requests are received from. This option does not apply to the sbc module. # # default: no # #sip_nat_handling=yes # NAT handling for RTP: force_symmetric_rtp={yes|no} # # Force comedia style "symmetric RTP" NAT handling, i.e. # learn remote RTP address from where RTP packets come from # (This option does not apply to the sbc module's RTP relay) # # default: no # force_symmetric_rtp=no # optional parameter: outbound_proxy=uri # # - this sets an outbound proxy for dialogs and registrations initiated # by SEMS. A preloaded Route header containing the uri is added to # each initial request. The request is then sent to destination obtained # by resolving the uri. If outbound_proxy is not set (default setting), # no preloaded Route header is added and request is sent to destination # obtained by resolving r-uri. Resolving is done by SIP stack with DNS # if uri contains domain name. Warning: If uri can not be resolved, no # requests will be sent out at all! # # default: empty # # Example: # outbound_proxy=sip:proxy.mydomain.net # optional parameter: force_outbound_proxy={yes|no} # # - forces SEMS to set outbound_proxy for any requests (not just for # registrations and dialog initiating requests). See above what setting # of outbound_proxy means. This option will only have an effect if the # outbound_proxy option has been set, and it will break 3261 compatibility # in some cases; better use next_hop. # # default: no # # Example: # force_outbound_proxy=yes # optional parameter: next_hop=address[:port][/transport] # - if this is set, all outgoing requests will be sent to # this address (IP address or domain name), regardless of R-URI etc. # # Examples: # next_hop=192.168.5.1 # next_hop=foo.example.com:5080/tcp # optional parameter: next_hop_1st_req={yes|no} # - if set to yes, next_hop behavior (routing without pre-loaded route set) # applies only to initial request. Subsequent requests are routed # normally based on route set learned from reply to initial request. # # default: no # # Example: # next_hop_1st_req=yes # optional parameter:next_hop_for_replies # - use next_hop for replies, too? # #next_hop_for_replies=yes # RTP multiplexing configuration - see doc/rtp_mux/ # # IP:port to open an incoming (listening) RTP MUX port rtp_mux_ip=<%= @vsat_ip_address %> rtp_mux_port=<%= @rtp_mux_port %> # # Interface to send outgoing RTP MUX packets from (port is auto-assigned) rtp_mux_out_interface=vsat # # Parameters for outgoing mux: # MTU threshold: frame is sent if over this threshold; leave 1 RTP payload size to actual MTU rtp_mux_mtu_threshold=135 # max frame age: .. or this old (millisec), i.e. max delay introduced rtp_mux_max_frame_age_ms=30 # # For gatewaying, additionally a_rtp_mux_ip/a_rtp_mux_port or b_rtp_mux_ip/ # b_rtp_mux_port must be configured in the SBC profile. # rtp_mux_stream_id_min=<%= @stream_min %> rtp_mux_stream_id_max=<%= @stream_min+30 %> ############################################################ # modules and application configuration # # Configuration of plugin (module) loading: # - if load_plugins is set, only those are loaded. # - if load_plugins is not set, all modules in the plugin_path # directory are loaded, except those which are listed # in exclude_plugins. # # optional parameter: plugin_path= # # - sets the path to the plug-ins' binaries # - may be absolute or relative to CWD plugin_path=/usr/lib/sems/plug-in/ # optional parameter: load_plugins= # # semicolon-separated list of modules to load. # If empty, all modules in plugin_path are loaded. # # example for announcement with only g711 and ilbc codecs # load_plugins=wav;ilbc;announcement load_plugins=wav;isac;l16;speex;g722;gsm;ilbc;stats;sbc;xmlrpc2di # optional parameter: exclude_plugins= # # semicolon-separated list of modules to exclude from loading # ('blacklist'). If empty, all modules in plugin_path are loaded. # This has only effect it load_plugins is not set. # # o precoded_announce: no precoded sample files present # o py_sems: conflicts with ivr (in some cases) # o db_reg_agent: needs DB tables # o cc_* : sbc call control modules (loaded from sbc.conf) exclude_plugins=precoded_announce;py_sems;db_reg_agent;cc_call_timer;cc_ctl;cc_pcalls;cc_prepaid;cc_prepaid_xmlrpc;cc_rest;cc_syslog_cdr # optional: load_plugins_rtld_global= # # load these plugins with RTLD_GLOBAL (by default py_sems, # dsm, ivr, sbc, diameter_client, registrar_client, uac_auth) # #load_plugins_rtld_global=myapp # optional parameter: application # # This controls which application is to be executed for incoming calls # is no explicit application requested (outgoing calls) # # This can be one of # $(ruri.user) - user part of ruri is taken as application, # e.g. sip:announcement@host # $(ruri.param) - uri parameter "app", e.g. # sip:joe@host.net;app=announcement # $(apphdr) - the value of the P-App-Name header is used # # $(mapping) - regex=>application mapping is read from # app_mapping.conf (see app_mapping.conf) # - application name configured here, e.g. # application=announcement # # examples: # application = conference # application = $(mapping) # application = $(ruri.user) # application = $(ruri.param) # application = $(apphdr) application=sbc # parameter: plugin_config_path= # # - in this path configuration files of the applications # (e.g. announcement.conf) are searched plugin_config_path=/etc/sems/etc/ # optional parameter: exclude_payloads= # # semicolon-separated list of payloads to exclude from loading # ('blacklist'). # # For example, to only use low bandwidth codecs: # exclude_payloads=PCMU;PCMA;G726-40;G726-32;G721;L16 # or, to use only codecs which are not CPU-intensive: # exclude_payloads=iLBC;speex; # only use G711 (exclude everything else): # exclude_payloads=iLBC;speex;G726-40;G726-32;G721;G726-24;G726-16;GSM;L16 ############################################################ # logging and running # optional parameter: fork={yes|no} # # - specifies if sems should run in daemon mode (background) # (fork=no is the same as -E) fork=yes # optional parameter: stderr={yes|no} # # - debug mode: do not fork and log to stderr # (stderr=yes is the same as -E) stderr=no # optional parameter: loglevel={0|1|2|3} # # - sets log level (error=0, warning=1, info=2, debug=3) # (same as -D) loglevel=2 # optional parameter: syslog_facility={DAEMON|USER|LOCAL[0-7]} # # - sets the log facility that is used for syslog. Using this, # the log can for example be filtered into a special file # by the syslog daemon. # # Default: DAEMON # # Example: # syslog_facility=LOCAL0 # optional parameter: log_sessions=[yes|no] # # Default: no # # If log_sessions=yes is set, INFO level log messages are generated # for each session when it is started and stopped. # # log_sessions=yes # optional parameter: log_events=[yes|no] # # Default: no # # If log_eventy=yes is set, generic DBG level log messages are # generated for each event that is posted into an event queue. # # log_events=yes # optional parameter: max_shutdown_time=