<html><body><div style="color:#000; background-color:#fff; font-family:Courier New, courier, monaco, monospace, sans-serif;font-size:10pt"><div><span style="font-family: tahoma, 'new york', times, serif; font-weight: bold;">Hi Sir,&nbsp;</span></div><div><span style="font-family: tahoma, 'new york', times, serif;"><br></span></div><div><span style="font-family: tahoma, 'new york', times, serif;">Sending the email again.</span></div><div><span style="font-family: tahoma, 'new york', times, serif;">&nbsp;</span></div><div><span style="font-family: tahoma, 'new york', times, serif;">Regards,<br><br></span></div><div><span style="font-family: tahoma, 'new york', times, serif; font-weight: bold;">Faisal Rehman</span><br>  <div style="font-size: 10pt; font-family: 'Courier New', courier, monaco, monospace, sans-serif; "> <div style="font-size: 12pt; font-family: 'times new roman', 'new york', times, serif; "> <div dir="ltr"> <font size="2" face="Arial"> -----
 Forwarded Message -----<br>  <b><span style="font-weight:bold;">From:</span></b> Faisal Rehman &lt;faisal.rehman22@yahoo.com&gt;<br> <b><span style="font-weight: bold;">To:</span></b> SIP Router - Kamailio ( Open SER) and SIP Express Router ( SER) - Users Mailing List &lt;sr-users@lists.sip-router.org&gt; <br> <b><span style="font-weight: bold;">Sent:</span></b> Saturday, March 17, 2012 2:31 AM<br> <b><span style="font-weight: bold;">Subject:</span></b> Users being registered without any Authentication<br> </font> </div> <br><div id="yiv846369460"><div><div style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); font-size: 10pt; font-family: tahoma, 'new york', times, serif; "><div style="font-size:10pt;"><span style="font-weight:bold;">Hi,</span></div><div style="font-size:10pt;"><br></div><div style="font-size:10pt;">I have the below configuration file <span style="font-family: courier, monaco, monospace, sans-serif; ">kamailio.cfg
 </span>but all the users are not being registered with authentication, so am I doing some mistake in it?</div><div style="font-size:10pt;"><span style="font-family: courier, monaco, monospace, sans-serif; "><br></span></div><div style="font-size:10pt;"><span style="font-family: courier, monaco, monospace, sans-serif; "><br></span></div><div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!KAMAILIO</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># Kamailio (OpenSER) SIP Server v3.2 - default configuration script</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># &nbsp; &nbsp; - web: http://www.kamailio.org</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># &nbsp; &nbsp; - git:
 http://sip-router.org</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># Direct your questions about this file to: &lt;sr-users@lists.sip-router.org&gt;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># Refer to the Core CookBook at http://www.kamailio.org/dokuwiki/doku.php</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># for an explanation of possible statements, functions and parameters.</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># Several features can be enabled using '#!define
 WITH_FEATURE' directives:</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># *** To run in debug mode:&nbsp;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># &nbsp; &nbsp; - define WITH_DEBUG</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># *** To enable mysql:&nbsp;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># &nbsp; &nbsp; - define WITH_MYSQL</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># *** To enable authentication
 execute:</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># &nbsp; &nbsp; - enable mysql</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># &nbsp;
 &nbsp; - define WITH_AUTH</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># &nbsp; &nbsp; - add users using 'kamctl'</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># *** To enable IP authentication execute:</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># &nbsp; &nbsp; - enable mysql</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># &nbsp; &nbsp; - enable authentication</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># &nbsp; &nbsp; - define WITH_IPAUTH</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># &nbsp; &nbsp; - add IP addresses with group id '1' to 'address'
 table</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># *** To enable persistent user location execute:</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># &nbsp; &nbsp; - enable mysql</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># &nbsp; &nbsp; - define WITH_USRLOCDB</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># *** To enable presence server execute:</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># &nbsp; &nbsp; - enable mysql</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># &nbsp;
 &nbsp; - define WITH_PRESENCE</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># *** To enable nat traversal execute:</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># &nbsp; &nbsp; - define WITH_NAT</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># &nbsp; &nbsp; - install RTPProxy: http://www.rtpproxy.org</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># &nbsp; &nbsp; - start RTPProxy:</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># &nbsp; &nbsp; &nbsp; &nbsp;rtpproxy -l _your_public_ip_ -s udp:localhost:7722</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#</font></div><div><font
 size="2" style="font-family: courier, monaco, monospace, sans-serif; "># *** To enable PSTN gateway routing execute:</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># &nbsp; &nbsp; - define WITH_PSTN</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># &nbsp; &nbsp; - set the value of pstn.gw_ip</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># &nbsp; &nbsp; - check route[PSTN] for regexp routing condition</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># *** To enable database aliases lookup execute:</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># &nbsp; &nbsp; - enable mysql</font></div><div><font size="2" style="font-family:
 courier, monaco, monospace, sans-serif; "># &nbsp; &nbsp; - define WITH_ALIASDB</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># *** To enable speed dial lookup execute:</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># &nbsp; &nbsp; - enable mysql</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># &nbsp; &nbsp; - define WITH_SPEEDDIAL</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># *** To enable multi-domain support execute:</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># &nbsp; &nbsp; - enable mysql</font></div><div><font size="2"
 style="font-family: courier, monaco, monospace, sans-serif; "># &nbsp; &nbsp; - define WITH_MULTIDOMAIN</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># *** To enable TLS support execute:</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># &nbsp; &nbsp; - adjust CFGDIR/tls.cfg as needed</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># &nbsp; &nbsp; - define WITH_TLS</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># *** To enable XMLRPC support execute:</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># &nbsp; &nbsp; - define
 WITH_XMLRPC</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># &nbsp; &nbsp; - adjust route[XMLRPC] for access policy</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># *** To enable anti-flood detection execute:</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># &nbsp; &nbsp; - adjust pike and htable=&gt;ipban settings as needed (default is</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># &nbsp; &nbsp; &nbsp; block if more than 16 requests in 2 seconds and ban for 300 seconds)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># &nbsp; &nbsp; - define WITH_ANTIFLOOD</font></div><div><font size="2" style="font-family: courier, monaco,
 monospace, sans-serif; ">#</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># *** To block 3XX redirect replies execute:</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># &nbsp; &nbsp; - define WITH_BLOCK3XX</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># *** To enable VoiceMail routing execute:</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># &nbsp; &nbsp; - define WITH_VOICEMAIL</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># &nbsp; &nbsp; - set the value of voicemail.srv_ip</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># &nbsp; &nbsp; - adjust the value of
 voicemail.srv_port</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># *** To enhance accounting execute:</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># &nbsp; &nbsp; - enable mysql</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># &nbsp; &nbsp; - define WITH_ACCDB</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># &nbsp; &nbsp; - add following columns to database</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!ifdef ACCDB_COMMENT</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">&nbsp; ALTER TABLE acc ADD COLUMN src_user VARCHAR(64) NOT NULL DEFAULT '';</font></div><div><font size="2"
 style="font-family: courier, monaco, monospace, sans-serif; ">&nbsp; ALTER TABLE acc
 ADD COLUMN src_domain VARCHAR(128) NOT NULL DEFAULT '';</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">&nbsp; ALTER TABLE acc ADD COLUMN src_ip varchar(64) NOT NULL default '';</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">&nbsp; ALTER TABLE acc ADD COLUMN dst_ouser VARCHAR(64) NOT NULL DEFAULT '';</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">&nbsp; ALTER TABLE acc ADD COLUMN dst_user VARCHAR(64) NOT NULL DEFAULT '';</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">&nbsp; ALTER TABLE acc ADD COLUMN dst_domain VARCHAR(128) NOT NULL DEFAULT '';</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">&nbsp; ALTER TABLE missed_calls ADD COLUMN src_user VARCHAR(64)
 NOT NULL DEFAULT '';</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">&nbsp; ALTER TABLE missed_calls ADD COLUMN src_domain VARCHAR(128) NOT NULL DEFAULT '';</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">&nbsp; ALTER TABLE missed_calls ADD COLUMN src_ip varchar(64) NOT NULL default '';</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">&nbsp; ALTER TABLE missed_calls ADD COLUMN dst_ouser VARCHAR(64) NOT NULL DEFAULT '';</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">&nbsp; ALTER TABLE missed_calls ADD COLUMN dst_user VARCHAR(64) NOT NULL DEFAULT '';</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">&nbsp; ALTER TABLE missed_calls ADD COLUMN dst_domain
 VARCHAR(128) NOT NULL DEFAULT '';</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!endif</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">####### Defined Values #########</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># *** Value defines - IDs used later in config</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!ifdef WITH_MYSQL</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># - database URL - used to connect to database server by
 modules such</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># &nbsp; &nbsp; &nbsp; as: auth_db, acc, usrloc, a.s.o.</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!define DBURL "mysql://faisal:faisal123@localhost/kamailio"</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!endif</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!ifdef WITH_MULTIDOMAIN</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># - the value for 'use_domain' parameters</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!define MULTIDOMAIN 1</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!else</font></div><div><font size="2" style="font-family: courier, monaco,
 monospace, sans-serif; ">#!define MULTIDOMAIN 0</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!endif</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># - flags</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># &nbsp; FLT_ - per transaction (message) flags</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#<span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>FLB_ - per branch flags</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!define FLT_ACC 1</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!define FLT_ACCMISSED 2</font></div><div><font size="2"
 style="font-family: courier, monaco, monospace, sans-serif; ">#!define FLT_ACCFAILED 3</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!define FLT_NATS 5</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!define FLB_NATB 6</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!define FLB_NATSIPPING 7</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">####### Global Parameters #########</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!ifdef
 WITH_DEBUG</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">debug=4</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">log_stderror=yes</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!else</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">debug=2</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">log_stderror=no</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!endif</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">memdbg=5</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">memlog=5</font></div><div><font
 size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">log_facility=LOG_LOCAL0</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">fork=yes</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">children=4</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">/* uncomment the next line to disable TCP (default on) */</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#disable_tcp=yes</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif;
 "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">/* uncomment the next line to disable the auto discovery of local aliases</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">&nbsp; &nbsp;based on reverse DNS on IPs (default on) */</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#auto_aliases=no</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">/* add local domain aliases */</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">/* uncomment and configure the following line if you want Kamailio to&nbsp;</font></div><div><font size="2"
 style="font-family: courier, monaco, monospace, sans-serif; ">&nbsp; &nbsp;bind on a specific interface/port/proto (default bind on all available) */</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">listen=udp:192.162.15.23:5161</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">listen=tcp:129.162.15.23:5161</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">alias="xmpp.kamailio.org"</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">/* port to listen to</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">&nbsp;* - can be specified more than once if needed to listen on many ports */</font></div><div><font size="2" style="font-family: courier,
 monaco, monospace, sans-serif; ">port=5161</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!ifdef WITH_TLS</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">enable_tls=yes</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!endif</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># life time of TCP connection when there is no traffic</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># - a bit higher than registration expires to cope with UA behind NAT</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif;
 ">tcp_connection_lifetime=3605</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">####### Custom Parameters #########</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># These parameters can be modified runtime via RPC interface</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># - see the documentation of 'cfg_rpc' module.</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># Format:
 group.id = value 'desc' description</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># Access: $sel(cfg_get.group.id) or @cfg_get.group.id</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!ifdef WITH_PSTN</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># PSTN GW Routing</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># - pstn.gw_ip: valid IP or hostname as string value,
 example:</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># pstn.gw_ip = "10.0.0.101" desc "My PSTN GW Address"</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># - by default is empty to avoid misrouting</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">pstn.gw_ip = "" desc "PSTN GW Address"</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!endif</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!ifdef WITH_VOICEMAIL</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># VoiceMail Routing on offline,
 busy or no answer</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># - by default Voicemail server IP is empty to avoid misrouting</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">voicemail.srv_ip = "" desc "VoiceMail IP Address"</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">voicemail.srv_port = "5060" desc "VoiceMail Port"</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!endif</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">####### Modules Section ########</font></div><div><font size="2" style="font-family: courier, monaco, monospace,
 sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># set paths to location of modules (to sources or installation folders)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!ifdef WITH_SRCPATH</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">mpath="modules_k:modules"</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!else</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">mpath="/usr/local/lib/kamailio/modules_k/:/usr/local/lib/kamailio/modules/"</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!endif</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco,
 monospace, sans-serif; ">#!ifdef WITH_MYSQL</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">loadmodule "db_mysql.so"</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!endif</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">loadmodule "mi_fifo.so"</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">loadmodule "kex.so"</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">loadmodule "tm.so"</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">loadmodule "tmx.so"</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">loadmodule "sl.so"</font></div><div><font size="2"
 style="font-family: courier, monaco, monospace, sans-serif; ">loadmodule "rr.so"</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">loadmodule "pv.so"</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">loadmodule "maxfwd.so"</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">loadmodule "usrloc.so"</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">loadmodule "registrar.so"</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">loadmodule "textops.so"</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">loadmodule "siputils.so"</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">loadmodule "xlog.so"</font></div><div><font size="2" style="font-family: courier,
 monaco, monospace, sans-serif; ">loadmodule "sanity.so"</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">loadmodule "ctl.so"</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">loadmodule
 "cfg_rpc.so"</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">loadmodule "mi_rpc.so"</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">loadmodule "acc.so"</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">loadmodule "xmpp.so"</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!ifdef WITH_AUTH</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">loadmodule "auth.so"</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">loadmodule "auth_db.so"</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!ifdef WITH_IPAUTH</font></div><div><font size="2"
 style="font-family: courier, monaco, monospace, sans-serif; ">loadmodule "permissions.so"</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!endif</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!endif</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!ifdef WITH_ALIASDB</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">loadmodule "alias_db.so"</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!endif</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!ifdef WITH_SPEEDDIAL</font></div><div><font
 size="2" style="font-family: courier, monaco, monospace, sans-serif; ">loadmodule "speeddial.so"</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!endif</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!ifdef WITH_MULTIDOMAIN</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">loadmodule "domain.so"</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!endif</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!ifdef WITH_PRESENCE</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">loadmodule
 "presence.so"</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">loadmodule "presence_xml.so"</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!endif</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!ifdef WITH_NAT</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">loadmodule "nathelper.so"</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">loadmodule "rtpproxy.so"</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!endif</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco,
 monospace, sans-serif; ">#!ifdef WITH_TLS</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">loadmodule "tls.so"</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!endif</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!ifdef WITH_ANTIFLOOD</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">loadmodule "htable.so"</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">loadmodule "pike.so"</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!endif</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier,
 monaco, monospace, sans-serif; ">#!ifdef WITH_XMLRPC</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">loadmodule "xmlrpc.so"</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!endif</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!ifdef WITH_DEBUG</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">loadmodule "debugger.so"</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!endif</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># ----------------- setting module-specific parameters
 ---------------</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># ----- mi_fifo params -----</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("mi_fifo", "fifo_name", "/tmp/kamailio_fifo")</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># ----- tm params -----</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># auto-discard branches from previous serial forking
 leg</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("tm",
 "failure_reply_mode", 3)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># default retransmission timeout: 30sec</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("tm", "fr_timer", 30000)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># default invite retransmission timeout after 1xx: 120sec</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("tm", "fr_inv_timer", 120000)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#--------XMPP Module Params---------------</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("xmpp", "domain_separator", "%")</font></div><div><font
 size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("xmpp", "xmpp_domain", "192.168.15.23")</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("xmpp", "xmpp_host", "192.168.15.23")</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("xmpp", "gateway_domain", "192.168.15.23")</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("xmpp", "backend", "server")</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("xmpp", "xmpp_port", 5299)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("xmpp",
 "xmpp_password", "casilla233")</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># ----- rr params -----</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># add value to ;lr param to cope with most of the UAs</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("rr", "enable_full_lr", 1)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># do not append from tag to the RR (no need for this script)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("rr", "append_fromtag", 0)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family:
 courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># ----- registrar params -----</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("registrar", "method_filtering", 1)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">/* uncomment the next line to disable parallel forking via location */</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># modparam("registrar", "append_branches", 0)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">/* uncomment the next line not to allow more than 10 contacts per AOR
 */</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#modparam("registrar", "max_contacts", 10)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># max value for expires of registrations</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("registrar", "max_expires", 3600)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># ----- acc params -----</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">/* what special events should be accounted ?
 */</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("acc", "early_media", 0)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("acc", "report_ack", 0)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("acc", "report_cancels", 0)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">/* by default ww do not adjust the direct of the sequential requests.</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">&nbsp; &nbsp;if you enable this parameter, be sure the enable "append_fromtag"</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">&nbsp; &nbsp;in "rr" module */</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("acc",
 "detect_direction", 0)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">/* account triggers (flags) */</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("acc", "log_flag", FLT_ACC)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("acc", "log_missed_flag", FLT_ACCMISSED)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("acc", "log_extra",&nbsp;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>"src_user=$fU;src_domain=$fd;src_ip=$si;"</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">
        </span>"dst_ouser=$tU;dst_user=$rU;dst_domain=$rd")</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("acc", "failed_transaction_flag", FLT_ACCFAILED)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">/* enhanced DB accounting */</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!ifdef WITH_ACCDB</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("acc", "db_flag", FLT_ACC)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("acc", "db_missed_flag", FLT_ACCMISSED)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("acc", "db_url", DBURL)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("acc",
 "db_extra",</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>"src_user=$fU;src_domain=$fd;src_ip=$si;"</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>"dst_ouser=$tU;dst_user=$rU;dst_domain=$rd")</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!endif</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># ----- usrloc params -----</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">/* enable DB
 persistency for location entries */</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!ifdef WITH_USRLOCDB</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("usrloc", "db_url", DBURL)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("usrloc", "db_mode", 2)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("usrloc", "use_domain", MULTIDOMAIN)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!endif</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># ----- auth_db params
 -----</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!ifdef WITH_AUTH</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("auth_db", "db_url", DBURL)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("auth_db", "calculate_ha1", yes)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("auth_db", "password_column",
 "password")</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("auth_db", "load_credentials", "")</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("auth_db", "use_domain", MULTIDOMAIN)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># ----- permissions params -----</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!ifdef WITH_IPAUTH</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("permissions", "db_url", DBURL)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("permissions", "db_mode", 1)</font></div><div><font size="2" style="font-family: courier, monaco,
 monospace, sans-serif; ">#!endif</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!endif</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># ----- alias_db params -----</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!ifdef WITH_ALIASDB</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("alias_db", "db_url", DBURL)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("alias_db", "use_domain", MULTIDOMAIN)</font></div><div><font
 size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!endif</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># ----- speedial params -----</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!ifdef WITH_SPEEDDIAL</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("speeddial",
 "db_url", DBURL)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("speeddial", "use_domain", MULTIDOMAIN)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!endif</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># ----- domain params -----</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!ifdef WITH_MULTIDOMAIN</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("domain", "db_url", DBURL)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># use caching</font></div><div><font
 size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("domain", "db_mode", 1)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># register callback to match myself condition with domains list</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("domain", "register_myself", 1)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!endif</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!ifdef WITH_PRESENCE</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># ----- presence params -----</font></div><div><font
 size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("presence", "db_url", DBURL)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># ----- presence_xml params -----</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("presence_xml", "db_url", DBURL)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("presence_xml", "force_active", 1)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!endif</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family:
 courier, monaco, monospace, sans-serif; ">#!ifdef WITH_NAT</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># ----- rtpproxy params -----</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("rtpproxy", "rtpproxy_sock", "udp:127.0.0.1:7722")</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># ----- nathelper params
 -----</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("nathelper", "natping_interval", 30)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("nathelper", "ping_nated_only", 1)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("nathelper", "sipping_bflag", FLB_NATSIPPING)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("nathelper", "sipping_from", "sip:pinger@kamailio.org")</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># params needed for NAT traversal in other modules</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("nathelper|registrar",
 "received_avp", "$avp(RECEIVED)")</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("usrloc", "nat_bflag", FLB_NATB)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!endif</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!ifdef WITH_TLS</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># ----- tls params -----</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("tls", "config", "/usr/local/etc/kamailio/tls.cfg")</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif;
 ">#!endif</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!ifdef WITH_ANTIFLOOD</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># ----- pike params -----</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("pike", "sampling_time_unit", 2)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("pike", "reqs_density_per_unit", 16)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("pike", "remove_latency", 4)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># ----- htable
 params -----</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># ip ban htable with autoexpire after 5 minutes</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("htable", "htable", "ipban=&gt;size=8;autoexpire=300;")</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!endif</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!ifdef WITH_XMLRPC</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># ----- xmlrpc params -----</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("xmlrpc", "route", "XMLRPC");</font></div><div><font size="2" style="font-family: courier, monaco, monospace,
 sans-serif; ">modparam("xmlrpc", "url_match", "^/RPC")</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!endif</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!ifdef WITH_DEBUG</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># ----- debugger params
 -----</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">modparam("debugger", "cfgtrace", 1)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!endif</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">####### Routing Logic ########</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># Main SIP request routing logic</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># - processing of any incoming SIP request starts with this
 route</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># - note: this is the same as route { ... }</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">request_route {</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span># per request initial checks</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>route(REQINIT);</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span"
 style="white-space:pre;">        </span># NAT detection</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>route(NATDETECT);</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span># handle requests within SIP dialogs</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>route(WITHINDLG);</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span"
 style="white-space:pre;">        </span>### only initial requests (no To tag)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span># CANCEL processing</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>if (is_method("CANCEL"))</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>{</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>if (t_check_trans())</font></div><div><font size="2" style="font-family:
 courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                        </span>t_relay();</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>exit;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">
        </span>t_check_trans();</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>#authentication</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>route(AUTH);</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">###############-----------------------------------XMPP Server Configuration----------------------------------------#################</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">if (uri =~ "sip:.+@sip-xmpp\.kamailio\.org") {</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">&nbsp; #absorb transmission</font></div><div><font size="2" style="font-family: courier, monaco, monospace,
 sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>if (!t_newtran()){</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>sl_reply_error();</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>exit;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#Handling Instant Messaging</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span
 class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>if (is_method("MESSAGE")){</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>xlog("message to XMPP: from &lt;$fu&gt; ru&gt;\n");</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>if (xmpp_send_message()){</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>sl_send_reply("202", "Accepted");</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>} else
 {</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>sl_send_reply("404", "Not found");</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>exit;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">&nbsp; &nbsp;}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#Un-supported Type of SIP Message</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>xlog("message
 to XMPP: method [$rm] not supported yet\n");</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>sl_send_reply("503", "Service unavailable");</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>exit;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">##################--------------------------------XMPP Server Configuration-----------------------------------------------###############</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span
 class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span># record routing for dialog forming requests (in case they are routed)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span># - remove preloaded route headers</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>remove_hf("Route");</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>if (is_method("INVITE|SUBSCRIBE"))</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>record_route();</font></div><div><font size="2"
 style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span># account only INVITEs</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>if (is_method("INVITE"))</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>{</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>setflag(FLT_ACC); # do
 accounting</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span># dispatch requests to foreign domains</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>route(SIPOUT);</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">
        </span>### requests for my local domains</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span># handle presence related requests</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>route(PRESENCE);</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span># handle registrations</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span"
 style="white-space:pre;">        </span>route(REGISTRAR);</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>if ($rU==$null)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>{</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span># request with no Username in RURI</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>sl_send_reply("484","Address
 Incomplete");</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>exit;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span># dispatch destinations to PSTN</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>route(PSTN);</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font
 size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span># user location service</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>route(LOCATION);</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>route(RELAY);</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2"
 style="font-family: courier, monaco, monospace, sans-serif; ">route[RELAY] {</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span># enable additional event routes for forwarded requests</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span># - serial forking, RTP relaying handling, a.s.o.</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>if (is_method("INVITE|SUBSCRIBE"))
 {</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>t_on_branch("MANAGE_BRANCH");</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>t_on_reply("MANAGE_REPLY");</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>if (is_method("INVITE")) {</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        
        </span>t_on_failure("MANAGE_FAILURE");</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>if (!t_relay()) {</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>sl_reply_error();</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span
 class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>exit;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># Per SIP request initial checks</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">route[REQINIT] {</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!ifdef WITH_ANTIFLOOD</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span># flood dection from same IP and traffic ban for a while</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span
 class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span># be sure you exclude checking trusted peers, such as pstn gateways</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span># - local host excluded (e.g., loop to self)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>if(src_ip!=myself)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>{</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        
        </span>if($sht(ipban=&gt;$si)!=$null)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>{</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                        </span># ip is already blocked</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                        </span>xdbg("request from blocked IP - $rm from $fu (IP:$si:$sp)\n");</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                        </span>exit;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span"
 style="white-space:pre;">                </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>if (!pike_check_req())</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>{</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                        </span>xlog("L_ALERT","ALERT: pike blocking $rm from $fu (IP:$si:$sp)\n");</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                        </span>$sht(ipban=&gt;$si) = 1;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span"
 style="white-space:pre;">                        </span>exit;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!endif</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>if (!mf_process_maxfwd_header("10")) {</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        
        </span>sl_send_reply("483","Too Many Hops");</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>exit;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>if(!sanity_check("1511", "7"))</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>{</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span
 class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>xlog("Malformed SIP message from $si:$sp\n");</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>exit;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># Handle requests within SIP dialogs</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">route[WITHINDLG] {</font></div><div><font size="2" style="font-family: courier, monaco,
 monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>if (has_totag()) {</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span># sequential request withing a dialog should</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span># take the path determined by record-routing</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>if (loose_route()) {</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                        </span>if (is_method("BYE")) {</font></div><div><font size="2"
 style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                                </span>setflag(FLT_ACC); # do accounting ...</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                                </span>setflag(FLT_ACCFAILED); # ... even if the transaction fails</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                        </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                        </span>if ( is_method("ACK") ) {</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                                </span># ACK is forwarded
 statelessy</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                                </span>route(NATMANAGE);</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                        </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                        </span>route(RELAY);</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>} else {</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                        </span>if (is_method("SUBSCRIBE") &amp;&amp; uri == myself)
 {</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                                </span># in-dialog subscribe requests</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                                </span>route(PRESENCE);</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                                </span>exit;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                        </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                        </span>if ( is_method("ACK") ) {</font></div><div><font
 size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                                </span>if ( t_check_trans() ) {</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                                        </span># no loose-route, but stateful ACK;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                                        </span># must be an ACK after a 487</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                                        </span># or e.g. 404 from upstream server</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                                
        </span>t_relay();</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                                        </span>exit;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                                </span>} else {</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                                        </span># ACK without matching transaction ... ignore and discard</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                                        </span>exit;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                        
        </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                        </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                        </span>sl_send_reply("404","Not here");</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>exit;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>}</font></div><div><font size="2" style="font-family: courier,
 monaco, monospace, sans-serif; ">}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># Handle SIP registrations</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">route[REGISTRAR] {</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>if (is_method("REGISTER"))</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>{</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>if(isflagset(FLT_NATS))</font></div><div><font size="2"
 style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>{</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                        </span>setbflag(FLB_NATB);</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                        </span># uncomment next line to do SIP NAT pinging&nbsp;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                        </span>##
 setbflag(FLB_NATSIPPING);</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>if (!save("location"))</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                        </span>sl_reply_error();</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>exit;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span
 class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># USER location service</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">route[LOCATION] {</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!ifdef WITH_SPEEDIAL</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">
        </span># search for short dialing - 2-digit extension</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>if($rU=~"^[0-9][0-9]$")</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>if(sd_lookup("speed_dial"))</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                        </span>route(SIPOUT);</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!endif</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!ifdef WITH_ALIASDB</font></div><div><font
 size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span># search in DB-based aliases</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>if(alias_db_lookup("dbaliases"))</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>route(SIPOUT);</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!endif</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>$avp(oexten) =
 $rU;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>if (!lookup("location")) {</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>$var(rc) = $rc;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>route(TOVOICEMAIL);</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>t_newtran();</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>switch ($var(rc)) {</font></div><div><font
 size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                        </span>case -1:</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                        </span>case -3:</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                                </span>send_reply("404", "Not Found");</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                                </span>exit;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                
        </span>case -2:</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                                </span>send_reply("405", "Method Not Allowed");</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                                </span>exit;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span
 class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span># when routing via usrloc, log the missed calls also</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>if (is_method("INVITE"))</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>{</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>setflag(FLT_ACCMISSED);</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">}</font></div><div><font
 size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># Presence server route</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">route[PRESENCE] {</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>if(!is_method("PUBLISH|SUBSCRIBE"))</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>return;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!ifdef WITH_PRESENCE</font></div><div><font size="2" style="font-family: courier,
 monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>if (!t_newtran())</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>{</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>sl_reply_error();</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>exit;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>};</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2"
 style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>if(is_method("PUBLISH"))</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>{</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>handle_publish();</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>t_release();</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif;
 "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>else</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>if( is_method("SUBSCRIBE"))</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>{</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>handle_subscribe();</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        
        </span>t_release();</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>exit;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!endif</font></div><div><span class="yiv846369460Apple-tab-span" style="white-space: pre; font-family: courier, monaco, monospace, sans-serif; "><font size="2">        </font></span></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span># if presence enabled, this part will not be executed</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span
 class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>if (is_method("PUBLISH") || $rU==$null)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>{</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>sl_send_reply("404", "Not here");</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>exit;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span"
 style="white-space:pre;">        </span>return;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># Authentication route</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">route[AUTH] {</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!ifdef WITH_AUTH</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>if (is_method("REGISTER"))</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>{</font></div><div><font
 size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span># authenticate the REGISTER requests (uncomment to enable auth)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>if (!www_authorize("$td", "subscriber"))</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>{</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                        </span>www_challenge("$td", "0");</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                
        </span>exit;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>if ($au!=$tU)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>{</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                        </span>sl_send_reply("403","Forbidden auth
 ID");</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                        </span>exit;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>} else {</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!ifdef WITH_IPAUTH</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        
        </span>if(allow_source_address())</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>{</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                        </span># source IP allowed</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                        </span>return;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!endif</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font
 size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span># authenticate if from local subscriber</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>if (from_uri==myself)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>{</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                        </span>if (!proxy_authorize("$fd", "subscriber")) {</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                                </span>proxy_challenge("$fd",
 "0");</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                                </span>exit;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                        </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                        </span>if (is_method("PUBLISH"))</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                        </span>{</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                                </span>if
 ($au!=$fU || $au!=$tU) {</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                                        </span>sl_send_reply("403","Forbidden auth ID");</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                                        </span>exit;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                                </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                                </span>if ($au!=$rU) {</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                                
        </span>sl_send_reply("403","Forbidden R-URI");</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                                        </span>exit;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                                </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!ifdef WITH_MULTIDOMAIN</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                                </span>if ($fd!=$rd) {</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                                        </span>sl_send_reply("403","Forbidden R-URI domain");</font></div><div><font size="2"
 style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                                        </span>exit;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                                </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!endif</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                        </span>} else {</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                                </span>if ($au!=$fU) {</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                                
        </span>sl_send_reply("403","Forbidden auth ID");</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                                        </span>exit;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                                </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                        </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                        </span>consume_credentials();</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span
 class="yiv846369460Apple-tab-span" style="white-space:pre;">                        </span># caller authenticated</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>} else {</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                        </span># caller is not local subscriber, then check if it calls</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                        </span># a local destination, otherwise deny, not an open relay here</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                        </span>if
 (!uri==myself)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                        </span>{</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                                </span>sl_send_reply("403","Not relaying");</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                                </span>exit;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                        </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>}</font></div><div><font size="2" style="font-family:
 courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!endif</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>return;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># Caller NAT detection route</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">route[NATDETECT] {</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!ifdef WITH_NAT</font></div><div><font
 size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>force_rport();</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>if (nat_uac_test("19")) {</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>if (is_method("REGISTER")) {</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                        </span>fix_nated_register();</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>} else {</font></div><div><font size="2"
 style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                        </span>fix_nated_contact();</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>setflag(FLT_NATS);</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!endif</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">
        </span>return;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># RTPProxy control</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">route[NATMANAGE] {</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!ifdef WITH_NAT</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>if (is_request()) {</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>if(has_totag()) {</font></div><div><font size="2"
 style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                        </span>if(check_route_param("nat=yes")) {</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                                </span>setbflag(FLB_NATB);</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                        </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace,
 sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>if (!(isflagset(FLT_NATS) || isbflagset(FLB_NATB)))</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>return;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>rtpproxy_manage();</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>if (is_request()) {</font></div><div><font size="2" style="font-family: courier, monaco,
 monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>if (!has_totag()) {</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                        </span>add_rr_param(";nat=yes");</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>if (is_reply()) {</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span
 class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>if(isbflagset(FLB_NATB)) {</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                        </span>fix_nated_contact();</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!endif</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>return;</font></div><div><font size="2" style="font-family: courier,
 monaco, monospace, sans-serif; ">}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># Routing to foreign domains</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">route[SIPOUT] {</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>if (!uri==myself)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>{</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>append_hf("P-hint: outbound\r\n");</font></div><div><font size="2"
 style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>route(RELAY);</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># PSTN GW routing</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">route[PSTN] {</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!ifdef WITH_PSTN</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span
 class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span># check if PSTN GW IP is defined</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>if (strempty($sel(cfg_get.pstn.gw_ip))) {</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>xlog("SCRIPT: PSTN rotuing enabled but pstn.gw_ip not defined\n");</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>return;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>}</font></div><div><font size="2" style="font-family: courier, monaco,
 monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span># route to PSTN dialed numbers starting with '+' or '00'</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span># &nbsp; &nbsp; (international format)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span># - update the condition to match your dialing rules for PSTN routing</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>if(!($rU=~"^(\+|00)[1-9][0-9]{3,20}$"))</font></div><div><font size="2" style="font-family:
 courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>return;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span># only local users allowed to call</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>if(from_uri!=myself) {</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>sl_send_reply("403", "Not Allowed");</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span"
 style="white-space:pre;">                </span>exit;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>$ru = "sip:" + $rU + "@" +
 $sel(cfg_get.pstn.gw_ip);</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>route(RELAY);</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>exit;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!endif</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>return;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif;
 ">}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># XMLRPC routing</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!ifdef WITH_XMLRPC</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">route[XMLRPC] {</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span># allow XMLRPC from localhost</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>if ((method=="POST" || method=="GET")</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span
 class="yiv846369460Apple-tab-span" style="white-space:pre;">                        </span>&amp;&amp; (src_ip==127.0.0.1)) {</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span># close connection only for xmlrpclib user agents (there is a bug in</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span># xmlrpclib: it waits for EOF before interpreting the response).</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>if ($hdr(User-Agent) =~ "xmlrpclib")</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                
        </span>set_reply_close();</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>set_reply_no_connect();</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>dispatch_rpc();</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>exit;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>send_reply("403",
 "Forbidden");</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>exit;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!endif</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># route to voicemail server</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">route[TOVOICEMAIL] {</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!ifdef
 WITH_VOICEMAIL</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>if(!is_method("INVITE"))</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>return;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span># check if VoiceMail server IP is defined</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>if (strempty($sel(cfg_get.voicemail.srv_ip))) {</font></div><div><font size="2" style="font-family:
 courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>xlog("SCRIPT: VoiceMail rotuing enabled but IP not defined\n");</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>return;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>if($avp(oexten)==$null)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>return;</font></div><div><font size="2" style="font-family: courier, monaco,
 monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>$ru = "sip:" + $avp(oexten) + "@" + $sel(cfg_get.voicemail.srv_ip)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                                </span>+ $sel(cfg_get.voicemail.srv_port);</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>route(RELAY);</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>exit;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!endif</font></div><div><font size="2"
 style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>return;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># manage outgoing branches</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">branch_route[MANAGE_BRANCH] {</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>xdbg("new branch [$T_branch_idx] to $ru\n");</font></div><div><font size="2" style="font-family: courier, monaco,
 monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>route(NATMANAGE);</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># manage incoming replies</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">onreply_route[MANAGE_REPLY] {</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>xdbg("incoming
 reply\n");</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>if(status=~"[12][0-9][0-9]")</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>route(NATMANAGE);</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "># manage failure routing cases</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">failure_route[MANAGE_FAILURE] {</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span
 class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>route(NATMANAGE);</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>if (t_is_canceled()) {</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>exit;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!ifdef WITH_BLOCK3XX</font></div><div><font size="2"
 style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span># block call redirect based on 3xx replies.</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>if (t_check_status("3[0-9][0-9]")) {</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>t_reply("404","Not found");</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>exit;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>}</font></div><div><font size="2"
 style="font-family: courier, monaco, monospace, sans-serif; ">#!endif</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><br></font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!ifdef WITH_VOICEMAIL</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span># serial forking</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span># - route to voicemail on busy or no answer (timeout)</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>if (t_check_status("486|408")) {</font></div><div><font size="2" style="font-family: courier, monaco,
 monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>route(TOVOICEMAIL);</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">                </span>exit;</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; "><span class="yiv846369460Apple-tab-span" style="white-space:pre;">        </span>}</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">#!endif</font></div><div><font size="2" style="font-family: courier, monaco, monospace, sans-serif; ">}</font></div><div style="font-size: 10pt; font-family: tahoma, times, serif; "><br></div><div style="font-size: 10pt; font-family: tahoma, times, serif; "><br></div><div style="font-size: 10pt; font-family: tahoma, times, serif; ">Regards,</div><div style="font-size: 10pt; font-family: tahoma, times,
 serif; "><br></div><div style="font-size: 10pt; font-family: tahoma, times, serif; ">Faisal</div></div></div></div></div><br><br> </div> </div>  </div></div></body></html>