#!KAMAILIO ################################################################ # # SIP relay server for Bluepackets # Author: Stanislav Sinyagin # ################################################################ fork=yes children=4 ### Site-specific configuration defines hosts and ports include_file "/etc/kamailio/kamailio_siteconfig.cfg" ####### Global Parameters ######### #!ifdef WITH_DEBUG debug=4 log_stderror=no #!else debug=2 log_stderror=no #!endif memdbg=5 memlog=5 log_facility=LOG_LOCAL0 # This is not part of siteconfig because the routing logic # depends on these settings disable_tcp=yes auto_aliases=no mhomed=1 ####### Modules Section ######## mpath="/usr/lib/x86_64-linux-gnu/kamailio/modules" loadmodule "mi_fifo.so" loadmodule "kex.so" loadmodule "sl.so" loadmodule "rr.so" loadmodule "pv.so" loadmodule "maxfwd.so" loadmodule "textops.so" loadmodule "siputils.so" loadmodule "xlog.so" loadmodule "sanity.so" loadmodule "ctl.so" loadmodule "cfg_rpc.so" loadmodule "mi_rpc.so" loadmodule "rtpproxy.so" loadmodule "nathelper.so" #!ifdef WITH_DEBUG loadmodule "debugger.so" #!endif # ----------------- setting module-specific parameters --------------- modparam("mi_fifo", "fifo_name", "/tmp/kamailio_fifo") modparam("nathelper", "received_avp", "$avp(RECEIVED)") modparam("nathelper", "nortpproxy_str", "a=sdpmangled:yes\r\n") modparam("rtpproxy", "rtpproxy_sock", "udp:127.0.0.1:9000") modparam("rtpproxy", "nortpproxy_str", "") #!ifdef WITH_DEBUG # ----- debugger params ----- modparam("debugger", "cfgtrace", 1) #!endif ####### Routing Logic ######## route { if (!sanity_check()) { exit; } if ( !mf_process_maxfwd_header("10") ) { sl_send_reply("483","To Many Hops"); xlog("L_NOTICE", "$si $rm $ru -- too many hops\n"); exit; } if( !is_method("OPTIONS") ) { xlog("L_INFO", "received SIP request: " + "$si:$sp -> $rm $ru From: $fu To: $tu\n"); } if( !loose_route() ) { $var(usr) = ""; if( !strempty($rU) ) { $var(usr) = $rU + "@"; } if (dst_ip == 192.168.0.2 && dst_port == 5060) { $du = "sip:" + "192.168.1.1" + ":" + "5060"; $ru = "sip:" + $var(usr) + "192.168.1.1" + ":" + "5060"; loose_route(); record_route(); rtpproxy_manage("cwie"); } else if (dst_ip == 192.168.1.1 && dst_port == 5060) { $du = "sip:" + "192.168.0.1" + ":" + "5060"; $ru = "sip:" + $var(usr) + "192.168.0.1" + ":" + "5060"; rtpproxy_manage("cwei"); record_route(); } else { xlog("L_NOTICE", "Dropping request: $si:$sp $rm $ru\n"); exit; } } forward(); if( !is_method("OPTIONS") ) { xlog("L_INFO", "forwarding SIP request: " + "$nh(u) <- $rm $ru From: $fu To: $tu\n"); } } onreply_route { if( !is_method("OPTIONS") ) { xlog("L_INFO", "received SIP reply: " + "$si:$sp -> $rs $rm From: $fu To: $tu\n"); } if (dst_ip == 192.168.0.2 && dst_port == 5060) { rtpproxy_manage("cwei"); } else if(dst_ip == 192.168.1.1 && dst_port == 5060) { rtpproxy_manage("cwie"); # fix_nated_contact(); } else { exit; } return(1); } # Local Variables: # mode: sh # sh-indent-after-if: 0 # indent-tabs-mode: nil # tab-width: 4 # End: