Module: sip-router
Branch: master
Commit: a232785704f682ce05dddd747c8a9fdc23c67244
URL:    
http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=a232785704f682ce05dddd747c8a9fdc23c67244

Author: Daniel-Constantin Mierla <[email protected]>
Committer: Daniel-Constantin Mierla <[email protected]>
Date:   Sun Sep 21 20:49:53 2014 +0200

kamailio-oob.cfg: sync'ed basic common parts with kamailio.cfg

---

 etc/kamailio-oob.cfg |  196 +++++++++++++++++++++++++------------------------
 1 files changed, 100 insertions(+), 96 deletions(-)

diff --git a/etc/kamailio-oob.cfg b/etc/kamailio-oob.cfg
index 879d4c9..2aa3289 100644
--- a/etc/kamailio-oob.cfg
+++ b/etc/kamailio-oob.cfg
@@ -41,6 +41,7 @@
 #     - install RTPProxy: http://www.rtpproxy.org
 #     - start RTPProxy:
 #        rtpproxy -l _your_public_ip_ -s udp:localhost:7722
+#     - option for NAT SIP OPTIONS keepalives: WITH_NATSIPPING
 #
 # *** To enable PSTN gateway routing execute:
 #     - define WITH_PSTN
@@ -497,8 +498,7 @@ request_route {
        route(NATDETECT);
 
        # CANCEL processing
-       if (is_method("CANCEL"))
-       {
+       if (is_method("CANCEL")) {
                if (t_check_trans())
                        t_relay();
                exit;
@@ -509,6 +509,11 @@ request_route {
 
        ### only initial requests (no To tag)
 
+       # handle retransmissions
+       if(t_precheck_trans()) {
+               t_check_trans();
+               exit;
+       }
        t_check_trans();
 
        # authentication
@@ -521,8 +526,7 @@ request_route {
                record_route();
 
        # account only INVITEs
-       if (is_method("INVITE"))
-       {
+       if (is_method("INVITE")) {
                setflag(FLT_ACC); # do accounting
        }
 
@@ -537,10 +541,9 @@ request_route {
        # handle registrations
        route(REGISTRAR);
 
-       if ($rU==$null)
-       {
+       if ($rU==$null) {
                # request with no Username in RURI
-               sl_send_reply("484","Address Incomplete");
+               sl_send_reply("484", "Address Incomplete");
                exit;
        }
 
@@ -580,21 +583,22 @@ route[REQINIT] {
        # flood dection from same IP and traffic ban for a while
        # be sure you exclude checking trusted peers, such as pstn gateways
        # - local host excluded (e.g., loop to self)
-       if(src_ip!=myself)
-       {
-               if($sht(ipban=>$si)!=$null)
-               {
+       if(src_ip!=myself) {
+               if($sht(ipban=>$si)!=$null) {
                        # ip is already blocked
                        xdbg("request from blocked IP - $rm from $fu 
(IP:$si:$sp)\n");
                        exit;
                }
-               if (!pike_check_req())
-               {
+               if (!pike_check_req()) {
                        xlog("L_ALERT","ALERT: pike blocking $rm from $fu 
(IP:$si:$sp)\n");
                        $sht(ipban=>$si) = 1;
                        exit;
                }
        }
+       if($ua =~ "friendly-scanner") {
+               sl_send_reply("200", "OK");
+               exit;
+       }
 #!endif
 
        if (!mf_process_maxfwd_header("10")) {
@@ -602,8 +606,12 @@ route[REQINIT] {
                exit;
        }
 
-       if(!sanity_check("1511", "7"))
-       {
+       if(is_method("OPTIONS") && uri==myself && $rU==$null) {
+               sl_send_reply("200","Keepalive");
+               exit;
+       }
+
+       if(!sanity_check("1511", "7")) {
                xlog("Malformed SIP message from $si:$sp\n");
                exit;
        }
@@ -611,66 +619,67 @@ route[REQINIT] {
 
 # Handle requests within SIP dialogs
 route[WITHINDLG] {
-       if (has_totag()) {
-               # sequential request withing a dialog should
-               # take the path determined by record-routing
-               if (loose_route()) {
-                       route(DLGURI);
-                       if (is_method("BYE")) {
-                               setflag(FLT_ACC); # do accounting ...
-                               setflag(FLT_ACCFAILED); # ... even if the 
transaction fails
-                       }
-                       else if ( is_method("ACK") ) {
-                               # ACK is forwarded statelessy
-                               route(NATMANAGE);
-                       }
-                       else if ( is_method("NOTIFY") ) {
-                               # Add Record-Route for in-dialog NOTIFY as per 
RFC 6665.
-                               record_route();
-                       }
-                       route(RELAY);
-               } else {
-                       if (is_method("SUBSCRIBE") && uri == myself) {
-                               # in-dialog subscribe requests
-                               route(PRESENCE);
-                               exit;
-                       }
-                       if ( is_method("ACK") ) {
-                               if ( t_check_trans() ) {
-                                       # no loose-route, but stateful ACK;
-                                       # must be an ACK after a 487
-                                       # or e.g. 404 from upstream server
-                                       t_relay();
-                                       exit;
-                               } else {
-                                       # ACK without matching transaction ... 
ignore and discard
-                                       exit;
-                               }
-                       }
-                       sl_send_reply("404","Not here");
+       if (!has_totag()) return;
+
+       # sequential request withing a dialog should
+       # take the path determined by record-routing
+       if (loose_route()) {
+               route(DLGURI);
+               if (is_method("BYE")) {
+                       setflag(FLT_ACC); # do accounting ...
+                       setflag(FLT_ACCFAILED); # ... even if the transaction 
fails
+               }
+               else if ( is_method("ACK") ) {
+                       # ACK is forwarded statelessy
+                       route(NATMANAGE);
+               }
+               else if ( is_method("NOTIFY") ) {
+                       # Add Record-Route for in-dialog NOTIFY as per RFC 6665.
+                       record_route();
                }
+               route(RELAY);
                exit;
        }
+
+       if (is_method("SUBSCRIBE") && uri == myself) {
+               # in-dialog subscribe requests
+               route(PRESENCE);
+               exit;
+       }
+       if ( is_method("ACK") ) {
+               if ( t_check_trans() ) {
+                       # no loose-route, but stateful ACK;
+                       # must be an ACK after a 487
+                       # or e.g. 404 from upstream server
+                       t_relay();
+                       exit;
+               } else {
+                       # ACK without matching transaction ... ignore and 
discard
+                       exit;
+               }
+       }
+       sl_send_reply("404", "Not here");
+       exit;
 }
 
 # Handle SIP registrations
 route[REGISTRAR] {
-       if (is_method("REGISTER"))
-       {
-               if(isflagset(FLT_NATS))
-               {
-                       setbflag(FLB_NATB);
-                       # uncomment next line to do SIP NAT pinging 
-                       ## setbflag(FLB_NATSIPPING);
-               }
-               if (!save("location"))
-                       sl_reply_error();
+       if (!is_method("REGISTER")) return;
 
-               exit;
+       if(isflagset(FLT_NATS)) {
+               setbflag(FLB_NATB);
+#!ifdef WITH_NATSIPPING
+               # do SIP NAT pinging
+               setbflag(FLB_NATSIPPING);
+#!endif
        }
+       if (!save("location"))
+               sl_reply_error();
+
+       exit;
 }
 
-# USER location service
+# User location service
 route[LOCATION] {
 
 #!ifdef WITH_SPEEDDIAL
@@ -703,8 +712,7 @@ route[LOCATION] {
        }
 
        # when routing via usrloc, log the missed calls also
-       if (is_method("INVITE"))
-       {
+       if (is_method("INVITE")) {
                setflag(FLT_ACCMISSED);
        }
 }
@@ -715,20 +723,15 @@ route[PRESENCE] {
                return;
 
 #!ifdef WITH_PRESENCE
-       if (!t_newtran())
-       {
+       if (!t_newtran()) {
                sl_reply_error();
                exit;
-       };
+       }
 
-       if(is_method("PUBLISH"))
-       {
+       if(is_method("PUBLISH")) {
                handle_publish();
                t_release();
-       }
-       else
-       if( is_method("SUBSCRIBE"))
-       {
+       } else if( is_method("SUBSCRIBE")) {
                handle_subscribe();
                t_release();
        }
@@ -736,8 +739,7 @@ route[PRESENCE] {
 #!endif
        
        # if presence enabled, this part will not be executed
-       if (is_method("PUBLISH") || $rU==$null)
-       {
+       if (is_method("PUBLISH") || $rU==$null) {
                sl_send_reply("404", "Not here");
                exit;
        }
@@ -749,15 +751,13 @@ route[AUTH] {
 #!ifdef WITH_AUTH
 
 #!ifdef WITH_IPAUTH
-       if((!is_method("REGISTER")) && allow_source_address())
-       {
+       if((!is_method("REGISTER")) && allow_source_address()) {
                # source IP allowed
                return;
        }
 #!endif
 
-       if (is_method("REGISTER") || from_uri==myself)
-       {
+       if (is_method("REGISTER") || from_uri==myself) {
                # authenticate requests
                if (!auth_check("$fd", "subscriber", "1")) {
                        auth_challenge("$fd", "0");
@@ -769,8 +769,7 @@ route[AUTH] {
        }
        # if caller is not local subscriber, then check if it calls
        # a local destination, otherwise deny, not an open relay here
-       if (from_uri!=myself && uri!=myself)
-       {
+       if (from_uri!=myself && uri!=myself) {
                sl_send_reply("403","Not relaying");
                exit;
        }
@@ -787,7 +786,8 @@ route[NATDETECT] {
                if (is_method("REGISTER")) {
                        fix_nated_register();
                } else {
-                       add_contact_alias();
+                       if(is_first_hop())
+                               set_contact_alias();
                }
                setflag(FLT_NATS);
        }
@@ -808,16 +808,19 @@ route[NATMANAGE] {
        if (!(isflagset(FLT_NATS) || isbflagset(FLB_NATB)))
                return;
 
-       rtpproxy_manage();
+       rtpproxy_manage("co");
 
        if (is_request()) {
                if (!has_totag()) {
-                       add_rr_param(";nat=yes");
+                       if(t_is_branch_route()) {
+                               add_rr_param(";nat=yes");
+                       }
                }
        }
        if (is_reply()) {
                if(isbflagset(FLB_NATB)) {
-                       add_contact_alias();
+                       if(is_first_hop())
+                               set_contact_alias();
                }
        }
 #!endif
@@ -836,11 +839,11 @@ route[DLGURI] {
 
 # Routing to foreign domains
 route[SIPOUT] {
-       if (!uri==myself)
-       {
-               append_hf("P-hint: outbound\r\n");
-               route(RELAY);
-       }
+       if (uri==myself) return;
+
+       append_hf("P-hint: outbound\r\n");
+       route(RELAY);
+       exit;
 }
 
 # PSTN GW routing
@@ -897,7 +900,7 @@ route[XMLRPC] {
 }
 #!endif
 
-# route to voicemail server
+# Routing to voicemail server
 route[TOVOICEMAIL] {
 #!ifdef WITH_VOICEMAIL
        if(!is_method("INVITE"))
@@ -920,20 +923,20 @@ route[TOVOICEMAIL] {
        return;
 }
 
-# manage outgoing branches
+# Manage outgoing branches
 branch_route[MANAGE_BRANCH] {
        xdbg("new branch [$T_branch_idx] to $ru\n");
        route(NATMANAGE);
 }
 
-# manage incoming replies
+# Manage incoming replies
 onreply_route[MANAGE_REPLY] {
        xdbg("incoming reply\n");
        if(status=~"[12][0-9][0-9]")
                route(NATMANAGE);
 }
 
-# manage failure routing cases
+# Manage failure routing cases
 failure_route[MANAGE_FAILURE] {
        route(NATMANAGE);
 
@@ -959,6 +962,7 @@ failure_route[MANAGE_FAILURE] {
 #!endif
 }
 
+# Handling HTTP events
 #!ifdef WITH_XHTTP
 event_route[xhttp:request] {
 #!ifdef WITH_XHTTP_RPC


_______________________________________________
sr-dev mailing list
[email protected]
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev

Reply via email to