<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body bgcolor="#ffffff" text="#000000">
Dear All,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; I would like to establish a set up where i have two
servers, one acting as a proxy and the other acting as a registrar
server(only). <br>
Client A ----&gt;Proxy---&gt;Registrar.<br>
I am able to register&nbsp; using the above mentioned set up, but am unable
to make call.. i get "timed out error" when i&nbsp; try calling. am ataching
my cfg below.Any help is greatly appreciated.<br>
(My proxy server wil not do registration and my registrar server wil
only do registration)<br>
<br>
<br>
####### Global Parameters #########<br>
<br>
debug=3<br>
log_stderror=yes<br>
log_facility=LOG_LOCAL0<br>
<br>
fork=yes<br>
children=4<br>
<br>
/* uncomment the following lines to enable debugging */<br>
#debug=6<br>
#fork=no<br>
#log_stderror=yes<br>
<br>
/* uncomment the next line to disable TCP (default on) */<br>
#disable_tcp=yes<br>
<br>
/* uncomment the next line to enable the auto temporary blacklisting of
<br>
&nbsp;&nbsp; not available destinations (default disabled) */<br>
#disable_dns_blacklist=no<br>
<br>
/* uncomment the next line to enable IPv6 lookup after IPv4 dns <br>
&nbsp;&nbsp; lookup failures (default disabled) */<br>
#dns_try_ipv6=yes<br>
<br>
/* uncomment the next line to disable the auto discovery of local
aliases<br>
&nbsp;&nbsp; based on revers DNS on IPs (default on) */<br>
#auto_aliases=no<br>
<br>
/* uncomment the following lines to enable TLS support&nbsp; (default off) */<br>
#disable_tls = no<br>
#listen = tls:your_IP:5061<br>
#tls_verify_server = 1<br>
#tls_verify_client = 1<br>
#tls_require_client_certificate = 0<br>
#tls_method = TLSv1<br>
#tls_certificate = "/usr/local/etc/kamailio/tls/user/user-cert.pem"<br>
#tls_private_key = "/usr/local/etc/kamailio/tls/user/user-privkey.pem"<br>
#tls_ca_list&nbsp;&nbsp;&nbsp;&nbsp; = "/usr/local/etc/kamailio/tls/user/user-calist.pem"<br>
<br>
<br>
port=5060<br>
/* uncomment and configure the following line if you want Kamailio to <br>
&nbsp;&nbsp; bind on a specific interface/port/proto (default bind on all
available) */<br>
#listen=udp:192.168.1.2:5060<br>
<br>
<br>
####### Modules Section ########<br>
<br>
#set module path<br>
mpath="/usr/local/lib/kamailio/modules/"<br>
<br>
/* uncomment next line for MySQL DB support */<br>
loadmodule "db_mysql.so"<br>
loadmodule "mi_fifo.so"<br>
loadmodule "sl.so"<br>
loadmodule "tm.so"<br>
loadmodule "rr.so"<br>
loadmodule "pv.so"<br>
loadmodule "maxfwd.so"<br>
loadmodule "usrloc.so"<br>
loadmodule "registrar.so"<br>
loadmodule "textops.so"<br>
loadmodule "uri_db.so"<br>
loadmodule "siputils.so"<br>
loadmodule "xlog.so"<br>
loadmodule "acc.so"<br>
loadmodule "imc.so"<br>
<br>
<br>
/* uncomment next lines for MySQL based authentication support <br>
&nbsp;&nbsp; NOTE: a DB (like db_mysql) module must be also loaded */<br>
loadmodule "auth.so"<br>
loadmodule "auth_db.so"<br>
/* uncomment next line for aliases support<br>
&nbsp;&nbsp; NOTE: a DB (like db_mysql) module must be also loaded */<br>
#loadmodule "alias_db.so"<br>
/* uncomment next line for multi-domain support<br>
&nbsp;&nbsp; NOTE: a DB (like db_mysql) module must be also loaded<br>
&nbsp;&nbsp; NOTE: be sure and enable multi-domain support in all used modules<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (see "multi-module params" section ) */<br>
#loadmodule "domain.so"<br>
/* uncomment the next two lines for presence server support<br>
&nbsp;&nbsp; NOTE: a DB (like db_mysql) module must be also loaded */<br>
#p#loadmodule "presence.so"<br>
#p#loadmodule "presence_xml.so"<br>
<br>
#n#loadmodule "nathelper.so"<br>
<br>
# ----------------- setting module-specific parameters ---------------<br>
<br>
<br>
# ----- mi_fifo params -----<br>
modparam("mi_fifo", "fifo_name", "/tmp/kamailio_fifo")<br>
<br>
<br>
# ----- rr params -----<br>
# add value to ;lr param to cope with most of the UAs<br>
modparam("rr", "enable_full_lr", 1)<br>
# do not append from tag to the RR (no need for this script)<br>
modparam("rr", "append_fromtag", 0)<br>
<br>
<br>
# ----- rr params -----<br>
modparam("registrar", "method_filtering", 1)<br>
/* uncomment the next line to disable parallel forking via location */<br>
# modparam("registrar", "append_branches", 0)<br>
/* uncomment the next line not to allow more than 10 contacts per AOR */<br>
#modparam("registrar", "max_contacts", 10)<br>
<br>
<br>
# ----- uri_db params -----<br>
/* by default we disable the DB support in the module as we do not need
it<br>
&nbsp;&nbsp; in this configuration */<br>
modparam("uri_db", "use_uri_table", 0)<br>
modparam("uri_db", "db_url", "")<br>
<br>
<br>
# ----- acc params -----<br>
/* what sepcial events should be accounted ? */<br>
modparam("acc", "early_media", 1)<br>
modparam("acc", "report_ack", 1)<br>
modparam("acc", "report_cancels", 1)<br>
/* by default ww do not adjust the direct of the sequential requests.<br>
&nbsp;&nbsp; if you enable this parameter, be sure the enable "append_fromtag"<br>
&nbsp;&nbsp; in "rr" module */<br>
modparam("acc", "detect_direction", 0)<br>
/* account triggers (flags) */<br>
modparam("acc", "failed_transaction_flag", 3)<br>
modparam("acc", "log_flag", 1)<br>
modparam("acc", "log_missed_flag", 2)<br>
modparam("acc", "log_extra", <br>
&nbsp;&nbsp;&nbsp;
"src_user=$fU;src_domain=$fd;dst_ouser=$tU;dst_user=$rU;dst_domain=$rd")<br>
/* uncomment the following lines to enable DB accounting also */<br>
#c#modparam("acc", "db_flag", 1)<br>
#c#modparam("acc", "db_missed_flag", 2)<br>
#c#modparam("acc", "db_url",<br>
#c#&nbsp;&nbsp;&nbsp; "mysql://openser:openserrw@localhost/openser")<br>
#c#modparam("acc", "db_extra",<br>
#c#&nbsp;&nbsp;&nbsp;
"src_user=$fU;src_domain=$fd;dst_ouser=$tU;dst_user=$rU;dst_domain=$rd")<br>
<br>
<br>
# ----- usrloc params -----<br>
/* uncomment the following lines if you want to enable DB persistency<br>
&nbsp;&nbsp; for location entries */<br>
modparam("usrloc", "db_mode",&nbsp;&nbsp; 2)<br>
modparam("usrloc", "db_url",&nbsp;&nbsp;&nbsp;
"mysql://openser:openserrw@localhost/openser")<br>
<br>
# ----- auth_db params -----<br>
/* uncomment the following lines if you want to enable the DB based<br>
&nbsp;&nbsp; authentication */<br>
modparam("auth_db", "calculate_ha1", yes)<br>
modparam("auth_db", "password_column", "password")<br>
modparam("auth_db", "db_url",<br>
&nbsp;&nbsp;&nbsp; "mysql://openser:openserrw@localhost/openser")<br>
modparam("auth_db", "load_credentials", "")<br>
<br>
<br>
# ----- alias_db params -----<br>
/* uncomment the following lines if you want to enable the DB based<br>
&nbsp;&nbsp; aliases */<br>
#modparam("alias_db", "db_url",<br>
#&nbsp;&nbsp;&nbsp; "mysql://openser:openserrw@localhost/openser")<br>
<br>
<br>
# ----- domain params -----<br>
/* uncomment the following lines to enable multi-domain detection<br>
&nbsp;&nbsp; support */<br>
#modparam("domain", "db_url",<br>
#&nbsp;&nbsp;&nbsp; "mysql://openser:openserrw@localhost/openser")<br>
#modparam("domain", "db_mode", 1)&nbsp;&nbsp; # Use caching<br>
<br>
<br>
# ----- multi-module params -----<br>
/* uncomment the following line if you want to enable multi-domain
support<br>
&nbsp;&nbsp; in the modules (dafault off) */<br>
#modparam("alias_db|auth_db|usrloc|uri_db", "use_domain", 1)<br>
<br>
<br>
# ----- presence params -----<br>
/* uncomment the following lines if you want to enable presence */<br>
#p#modparam("presence|presence_xml", "db_url",<br>
#p#&nbsp;&nbsp;&nbsp; "mysql://openser:openserrw@localhost/openser")<br>
#p#modparam("presence_xml", "force_active", 1)<br>
#p#modparam("presence", "server_address", <a class="moz-txt-link-rfc2396E" href="sip:192.168.1.2:5060">"sip:192.168.1.2:5060"</a>)<br>
<br>
# -- nathelper<br>
#n#modparam("nathelper", "rtpproxy_sock", "udp:127.0.0.1:7722")<br>
#n#modparam("nathelper", "natping_interval", 30)<br>
#n#modparam("nathelper", "ping_nated_only", 1)<br>
#n#modparam("nathelper", "sipping_bflag", 7)<br>
#n#modparam("nathelper", "sipping_from", <a class="moz-txt-link-rfc2396E" href="sip:pinger@kamailio.org">"sip:pinger@kamailio.org"</a>)<br>
#n#modparam("registrar|nathelper", "received_avp", "$avp(i:80)")<br>
<br>
#-------tm params-----<br>
modparam("tm", "fr_timer", 10 )<br>
modparam("tm", "fr_inv_timer", 15 )<br>
modparam("tm", "wt_timer", 10 )<br>
<br>
<br>
#-------imc params-----<br>
modparam("imc", "db_url", "mysql://openser:openserrw@localhost/openser")<br>
modparam("imc", "hash_size", 8)<br>
modparam("imc", "imc_cmd_start_char", "#")<br>
#modparam("imc", "imc_cmd_start_char", "#")<br>
&nbsp;&nbsp;&nbsp; <br>
<br>
<br>
<br>
#n#modparam("usrloc", "nat_bflag", 6)<br>
<br>
####### Routing Logic ########<br>
<br>
<br>
# main request routing logic<br>
<br>
route<br>
&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp; if (!mf_process_maxfwd_header("10")) <br>
&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sl_send_reply("483","Too Many Hops");<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br>
&nbsp;&nbsp;&nbsp; }<br>
<br>
&nbsp;&nbsp;&nbsp; # NAT detection<br>
&nbsp;&nbsp;&nbsp; route(4);<br>
<br>
&nbsp;&nbsp;&nbsp; if (has_totag()) {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; # sequential request withing a dialog should<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; # take the path determined by record-routing<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (loose_route()) {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (is_method("BYE")) {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; setflag(1); # do accounting ...<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; setflag(3); # ... even if the transaction fails<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; route(1);<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } else {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (is_method("SUBSCRIBE") &amp;&amp; uri == myself) {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; # in-dialog subscribe requests<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; route(2);<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if ( is_method("ACK") ) {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if ( t_check_trans() ) {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; # non loose-route, but stateful ACK; must be an ACK
after a 487 or e.g. 404 from upstream server<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; t_relay();<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } else {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; # ACK without matching transaction ... ignore and
discard.\n");<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sl_send_reply("404","Not here");<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br>
&nbsp;&nbsp;&nbsp; }<br>
<br>
&nbsp;&nbsp;&nbsp; #initial requests<br>
<br>
&nbsp;&nbsp;&nbsp; # CANCEL processing<br>
&nbsp;&nbsp;&nbsp; if (is_method("CANCEL"))<br>
&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (t_check_trans())<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; t_relay();<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br>
&nbsp;&nbsp;&nbsp; }<br>
<br>
&nbsp;&nbsp;&nbsp; t_check_trans();<br>
<br>
&nbsp;&nbsp;&nbsp; # authentication<br>
xlog("__The next step is Registration__\n");<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rewritehost("192.168.64.77");<br>
xlog("__Registration Successful__\n");<br>
<br>
#nr&nbsp;&nbsp;&nbsp; route(3);<br>
<br>
&nbsp;&nbsp;&nbsp; # record routing<br>
&nbsp;&nbsp;&nbsp; if (!is_method("REGISTER|MESSAGE"))<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; record_route();<br>
<br>
&nbsp;&nbsp;&nbsp; # account only INVITEs<br>
&nbsp;&nbsp;&nbsp; if (is_method("INVITE")) {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; setflag(1); # do accounting<br>
<br>
<br>
<br>
&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp; if (!uri==myself)<br>
&nbsp;&nbsp;&nbsp; /* replace with following line if multi-domain support is used */<br>
&nbsp;&nbsp;&nbsp; ##if (!is_uri_host_local())<br>
&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; append_hf("P-hint: outbound\r\n"); <br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; # if you have some interdomain connections via TLS<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ##if($rd=="tls_domain1.net") {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ##&nbsp;&nbsp;&nbsp; t_relay("tls:domain1.net");<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ##&nbsp;&nbsp;&nbsp; exit;<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ##} else if($rd=="tls_domain2.net") {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ##&nbsp;&nbsp;&nbsp; t_relay("tls:domain2.net");<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ##&nbsp;&nbsp;&nbsp; exit;<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ##}<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; route(1);<br>
&nbsp;&nbsp;&nbsp; }<br>
<br>
&nbsp;&nbsp;&nbsp; # requests for my domain<br>
<br>
#nr&nbsp;&nbsp;&nbsp; if( is_method("PUBLISH|SUBSCRIBE"))<br>
#nr&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; route(2);<br>
#nr&nbsp;&nbsp;&nbsp; if (is_method("REGISTER"))<br>
#nr&nbsp;&nbsp;&nbsp; {<br>
#nr&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (!save("location"))<br>
#nr&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sl_reply_error();<br>
<br>
#nr&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br>
#nr&nbsp;&nbsp;&nbsp; }<br>
<br>
<br>
##########<br>
&nbsp;&nbsp;&nbsp; if(uri=~<a class="moz-txt-link-rfc2396E" href="sip:q.*@">"sip:q.*@"</a>)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # if(uri=~<a class="moz-txt-link-rfc2396E" href="sip:q@192.168.64.75">"sip:q@192.168.64.75"</a>)<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # IMC - message<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; xdbg("script: message from [$fu] r-uri [$ru] msg [$rb]\n");<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(is_method("MESSAGE"))<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; log("MESSAGE received -&gt; processing with imc\n");<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sl_send_reply("200", "ok");<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; imc_manager();&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>
<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } else {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sl_send_reply("404", "not found");<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; };<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } else {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; xdbg("script: message not for room, from [$fu] r-uri [$ru]
msg [$rb]\n");<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(!lookup("location"))<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sl_send_reply("404", "not found");<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; t_relay();<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; #sl_send_reply("200", "ok");<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit();<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; };<br>
<br>
<br>
&nbsp;&nbsp;&nbsp; if ($rU==NULL) {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; # request with no Username in RURI<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sl_send_reply("484","Address Incomplete");<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br>
&nbsp;&nbsp;&nbsp; }<br>
<br>
&nbsp;&nbsp;&nbsp; # apply DB based aliases (uncomment to enable)<br>
&nbsp;&nbsp;&nbsp; ##alias_db_lookup("dbaliases");<br>
<br>
&nbsp;&nbsp;&nbsp; if (!lookup("location")) {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; switch ($retcode) {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case -1:<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case -3:<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; t_newtran();<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; t_reply("404", "Not Found");<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case -2:<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sl_send_reply("405", "Method Not Allowed");<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp; }<br>
<br>
&nbsp;&nbsp;&nbsp; # when routing via usrloc, log the missed calls also<br>
&nbsp;&nbsp;&nbsp; setflag(2);<br>
<br>
&nbsp;&nbsp;&nbsp; route(1);<br>
<br>
}<br>
<br>
<br>
route[1] {<br>
#n#&nbsp;&nbsp;&nbsp; if (check_route_param("nat=yes")) {<br>
#n#&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; setbflag(6);<br>
#n#&nbsp;&nbsp;&nbsp; }<br>
#n#&nbsp;&nbsp;&nbsp; if (isflagset(5) || isbflagset(6)) {<br>
#n#&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; route(5);<br>
#n#&nbsp;&nbsp;&nbsp; }<br>
<br>
&nbsp;&nbsp;&nbsp; /* example how to enable some additional event routes */<br>
&nbsp;&nbsp;&nbsp; if (is_method("INVITE")) {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; #t_on_branch("1");<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; t_on_reply("1");<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; t_on_failure("1");<br>
&nbsp;&nbsp;&nbsp; }<br>
<br>
&nbsp;&nbsp;&nbsp; if (!t_relay()) {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sl_reply_error();<br>
&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp; exit;<br>
}<br>
<br>
<br>
# Presence route<br>
/* uncomment the whole following route for enabling presence server */<br>
route[2]<br>
{<br>
#p#&nbsp;&nbsp;&nbsp; if (!t_newtran())<br>
#p#&nbsp;&nbsp;&nbsp; {<br>
#p#&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sl_reply_error();<br>
#p#&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br>
#p#&nbsp;&nbsp;&nbsp; };<br>
#p#<br>
#p#&nbsp;&nbsp;&nbsp; if(is_method("PUBLISH"))<br>
#p#&nbsp;&nbsp;&nbsp; {<br>
#p#&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; handle_publish();<br>
#p#&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; t_release();<br>
#p#&nbsp;&nbsp;&nbsp; }<br>
#p#&nbsp;&nbsp;&nbsp; else<br>
#p#&nbsp;&nbsp;&nbsp; if( is_method("SUBSCRIBE"))<br>
#p#&nbsp;&nbsp;&nbsp; {<br>
#p#&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; handle_subscribe();<br>
#p#&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; t_release();<br>
#p#&nbsp;&nbsp;&nbsp; }<br>
#p#&nbsp;&nbsp;&nbsp; exit;<br>
&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp; # if presence enabled, this part will not be executed<br>
&nbsp;&nbsp;&nbsp; if (is_method("PUBLISH") || $rU==null)<br>
&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sl_send_reply("404", "Not here");<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br>
&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp; return;<br>
}<br>
<br>
# Authentication route<br>
/* uncomment the whole following route for enabling authentication */<br>
route[3] {<br>
&nbsp;&nbsp;&nbsp; if (is_method("REGISTER"))<br>
&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; # authenticate the REGISTER requests (uncomment to enable auth)<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (!www_authorize("192.168.64.75", "subscriber"))<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; www_challenge("192.168.64.75", "0");<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if ($au!=$tU) <br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sl_send_reply("403","Forbidden auth ID");<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp; } else {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; # authenticate if from local subscriber (uncomment to enable
auth)<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (from_uri==myself)<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; #imc#if (!proxy_authorize("", "subscriber")) {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; #imc#proxy_challenge("", "0");<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; #imc#exit;<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; #imc#}<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; #imc#if (is_method("PUBLISH"))<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; #imc#{<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; #imc#&nbsp;&nbsp;&nbsp; if ($au!=$tU) {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; #imc#&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sl_send_reply("403","Forbidden auth ID");<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; #imc#&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; #imc#&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; #imc#} else {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; #imc#&nbsp;&nbsp;&nbsp; if ($au!=$fU) {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; #imc#&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sl_send_reply("403","Forbidden auth ID");<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; #imc#&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; #imc#&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; #imc#}<br>
<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; #imc# consume_credentials();<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; # caller authenticated<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp; return;<br>
&nbsp;}<br>
<br>
# Caller NAT detection route<br>
/* uncomment the whole following route for enabling Caller NAT
Detection */<br>
route[4]{<br>
#n#&nbsp;&nbsp;&nbsp; force_rport();<br>
#n#&nbsp;&nbsp;&nbsp; if (nat_uac_test("19")) {<br>
#n#&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (method=="REGISTER") {<br>
#n#&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; fix_nated_register();<br>
#n#&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } else {<br>
#n#&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; fix_nated_contact();<br>
#n#&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>
#n#&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; setflag(5);<br>
#n#&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp; return;<br>
}<br>
<br>
# RTPProxy control<br>
/* uncomment the whole following route for enabling RTPProxy Control */<br>
route[5] {<br>
#n#&nbsp;&nbsp;&nbsp; if (is_method("BYE")) {<br>
#n#&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; unforce_rtp_proxy();<br>
#n#&nbsp;&nbsp;&nbsp; } else if (is_method("INVITE")){<br>
#n#&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; force_rtp_proxy();<br>
#n#&nbsp;&nbsp;&nbsp; }<br>
#n#&nbsp;&nbsp;&nbsp; if (!has_totag()) add_rr_param(";nat=yes");<br>
&nbsp;&nbsp;&nbsp; return;<br>
}<br>
<br>
branch_route[1] {<br>
&nbsp;&nbsp;&nbsp; xdbg("new branch at $ru\n");<br>
}<br>
<br>
<br>
onreply_route[1] {<br>
&nbsp;&nbsp;&nbsp; xdbg("incoming reply\n");<br>
<br>
#n#&nbsp;&nbsp;&nbsp; if ((isflagset(5) || isbflagset(6)) &amp;&amp;
status=~"(183)|(2[0-9][0-9])") {<br>
#n#&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; force_rtp_proxy();<br>
#n#&nbsp;&nbsp;&nbsp; }<br>
#n#&nbsp;&nbsp;&nbsp; if (isbflagset(6)) {<br>
#n#&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; fix_nated_contact();<br>
#n#&nbsp;&nbsp;&nbsp; }<br>
}<br>
<br>
<br>
failure_route[1] {<br>
#n#&nbsp;&nbsp;&nbsp; if (is_method("INVITE")<br>
#n#&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &amp;&amp; (isbflagset(6) || isflagset(5))) {<br>
#n#&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; unforce_rtp_proxy();<br>
#n#&nbsp;&nbsp;&nbsp; }<br>
<br>
&nbsp;&nbsp;&nbsp; if (t_was_cancelled()) {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br>
&nbsp;&nbsp;&nbsp; }<br>
<br>
&nbsp;&nbsp;&nbsp; # uncomment the following lines if you want to block client <br>
&nbsp;&nbsp;&nbsp; # redirect based on 3xx replies.<br>
&nbsp;&nbsp;&nbsp; ##if (t_check_status("3[0-9][0-9]")) {<br>
&nbsp;&nbsp;&nbsp; ##t_reply("404","Not found");<br>
&nbsp;&nbsp;&nbsp; ##&nbsp;&nbsp;&nbsp; exit;<br>
&nbsp;&nbsp;&nbsp; ##}<br>
<br>
&nbsp;&nbsp;&nbsp; # uncomment the following lines if you want to redirect the failed <br>
&nbsp;&nbsp;&nbsp; # calls to a different new destination<br>
&nbsp;&nbsp;&nbsp; ##if (t_check_status("486|408")) {<br>
&nbsp;&nbsp;&nbsp; ##&nbsp;&nbsp;&nbsp; sethostport("192.168.2.100:5060");<br>
&nbsp;&nbsp;&nbsp; ##&nbsp;&nbsp;&nbsp; append_branch();<br>
&nbsp;&nbsp;&nbsp; ##&nbsp;&nbsp;&nbsp; # do not set the missed call flag again<br>
&nbsp;&nbsp;&nbsp; ##&nbsp;&nbsp;&nbsp; t_relay();<br>
&nbsp;&nbsp;&nbsp; ##}<br>
<br>
}<br>
&nbsp;<br>
<div class="moz-signature">-- <br>
<font color="Blue" face="Trebuchet MS" size="2"> Regards,<br>
Rajesh&nbsp; </font>
</div>
</body>
</html>