Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #
- # $Id: opensips.cfg 6725 2010-03-16 15:03:45Z anca_vamanu $
- #
- # OpenSIPS basic configuration script
- # by Anca Vamanu <anca@voice-system.ro>
- #
- # Please refer to the Core CookBook at:
- # http://www.opensips.org/index.php?n=Resources.DocsCookbooks
- # for a explanation of possible statements, functions and parameters.
- #
- ####### Global Parameters #########
- debug=3
- log_stderror=no
- log_facility=LOG_LOCAL3
- #memlog=3
- #memdump=3
- fork=yes
- children=4
- /* uncomment the following lines to enable debugging */
- #debug=6
- #fork=no
- #log_stderror=yes
- /* uncomment the next line to disable TCP (default on) */
- #disable_tcp=yes
- /* uncomment the next line to enable the auto temporary blacklisting of
- not available destinations (default disabled) */
- #disable_dns_blacklist=no
- /* uncomment the next line to enable IPv6 lookup after IPv4 dns
- lookup failures (default disabled) */
- #dns_try_ipv6=yes
- /* uncomment the next line to disable the auto discovery of local aliases
- based on revers DNS on IPs (default on) */
- #auto_aliases=no
- /* uncomment the following lines to enable TLS support (default off) */
- #disable_tls = no
- #listen = tls:your_IP:5061
- #tls_verify_server = 1
- #tls_verify_client = 1
- #tls_require_client_certificate = 0
- #tls_method = TLSv1
- #tls_certificate = "/root/entpbx/osips//etc/opensips/tls/user/user-cert.pem"
- #tls_private_key = "/root/entpbx/osips//etc/opensips/tls/user/user-privkey.pem"
- #tls_ca_list = "/root/entpbx/osips//etc/opensips/tls/user/user-calist.pem"
- #port=35060
- /* uncomment and configure the following line if you want opensips to
- bind on a specific interface/port/proto (default bind on all available) */
- listen=udp:192.168.30.44:35060
- ####### Modules Section ########
- #set module path
- mpath="/root/entpbx/osips//lib/opensips/modules/"
- /* uncomment next line for MySQL DB support */
- loadmodule "db_mysql.so"
- #loadmodule "db_berkeley.so"
- loadmodule "signaling.so"
- loadmodule "sl.so"
- loadmodule "tm.so"
- loadmodule "rr.so"
- loadmodule "dialog.so"
- loadmodule "maxfwd.so"
- loadmodule "usrloc.so"
- loadmodule "registrar.so"
- loadmodule "textops.so"
- loadmodule "mi_fifo.so"
- loadmodule "uri.so"
- loadmodule "xlog.so"
- loadmodule "acc.so"
- loadmodule "avpops.so"
- loadmodule "diversion.so"
- loadmodule "cfgutils.so"
- loadmodule "options.so"
- loadmodule "localcache.so"
- #loadmodule "dialplan.so"
- loadmodule "load_balancer.so"
- loadmodule "uac.so"
- /* uncomment next lines for MySQL based authentication support
- NOTE: a DB (like db_mysql) module must be also loaded */
- loadmodule "auth.so"
- loadmodule "auth_db.so"
- /* uncomment next line for aliases support
- NOTE: a DB (like db_mysql) module must be also loaded */
- #loadmodule "alias_db.so"
- /* uncomment next line for multi-domain support
- NOTE: a DB (like db_mysql) module must be also loaded
- NOTE: be sure and enable multi-domain support in all used modules
- (see "multi-module params" section ) */
- #loadmodule "domain.so"
- /* uncomment the next two lines for presence server support
- NOTE: a DB (like db_mysql) module must be also loaded */
- #loadmodule "presence.so"
- #loadmodule "presence_xml.so"
- # ----------------- setting module-specific parameters ---------------
- # ----- mi_fifo params -----
- modparam("mi_fifo", "fifo_name", "/tmp/opensips_fifo")
- # ----- rr params -----
- # add value to ;lr param to cope with most of the UAs
- modparam("rr", "enable_full_lr", 1)
- # do not append from tag to the RR (no need for this script)
- modparam("rr", "append_fromtag", 1)
- # ----- registrar params -----
- /* uncomment the next line not to allow more than 10 contacts per AOR */
- #modparam("registrar", "max_contacts", 10)
- # ----- usrloc params -----
- #modparam("usrloc", "db_mode", 0)
- /* uncomment the following lines if you want to enable DB persistency
- for location entries */
- modparam("usrloc", "db_mode", 2)
- modparam("usrloc", "db_url", "mysql://opensips:opensipsrw@localhost/opensips")
- # ----- uri params -----
- modparam("uri", "use_uri_table", 0)
- # ----- acc params -----
- /* what sepcial events should be accounted ? */
- modparam("acc", "early_media", 1)
- modparam("acc", "report_ack", 1)
- modparam("acc", "report_cancels", 1)
- /* by default ww do not adjust the direct of the sequential requests.
- if you enable this parameter, be sure the enable "append_fromtag"
- in "rr" module */
- modparam("acc", "detect_direction", 0)
- /* account triggers (flags) */
- modparam("acc", "failed_transaction_flag", 3)
- modparam("acc", "log_flag", 1)
- modparam("acc", "log_missed_flag", 2)
- /* uncomment the following lines to enable DB accounting also */
- modparam("acc", "db_flag", 1)
- modparam("acc", "db_missed_flag", 2)
- # ----- auth_db params -----
- /* uncomment the following lines if you want to enable the DB based
- authentication */
- #modparam("auth_db", "calculate_ha1", yes)
- #modparam("auth_db", "password_column", "password")
- #modparam("auth_db", "db_url",
- # "mysql://opensips:opensipsrw@localhost/opensips")
- #modparam("auth_db", "load_credentials", "")
- # ----- alias_db params -----
- /* uncomment the following lines if you want to enable the DB based
- aliases */
- #modparam("alias_db", "db_url",
- # "mysql://opensips:opensipsrw@localhost/opensips")
- # ----- domain params -----
- /* uncomment the following lines to enable multi-domain detection
- support */
- #modparam("domain", "db_url",
- # "mysql://opensips:opensipsrw@localhost/opensips")
- #modparam("domain", "db_mode", 1) # Use caching
- # ----- multi-module params -----
- /* uncomment the following line if you want to enable multi-domain support
- in the modules (dafault off) */
- #modparam("alias_db|auth_db|usrloc|uri", "use_domain", 1)
- # ----- presence params -----
- /* uncomment the following lines if you want to enable presence */
- #modparam("presence|presence_xml", "db_url",
- # "mysql://opensips:opensipsrw@localhost/opensips")
- #modparam("presence_xml", "force_active", 1)
- #modparam("presence", "server_address", "sip:192.168.1.2:5060")
- # ----- cfgutils params -----
- # ----- options params -----
- #modparam("options", "support", "100rel")
- # ----- dialog params -----
- modparam("dialog", "dlg_match_mode", 2)
- modparam("dialog", "hash_size", 8192)
- modparam("dialog", "default_timeout", 300)
- # ----- localcache -----
- modparam("localcache", "cache_table_size", 12)
- # ----- dialplan params -----
- #modparam("dialplan", "db_url", "berkeley:///root/entpbx/osips/etc/opensips/db_berkeley/opensips")
- #modparam("dialplan", "attrs_pvar", "$avp(i:101)")
- #modparam("dialplan", "fetch_rows", 3000)
- # ----- load_balancer params -----
- #modparam("load_balancer", "db_url", "berkeley:///root/entpbx/osips/etc/opensips/db_berkeley/opensips")
- modparam("load_balancer", "db_url", "mysql://opensips:opensipsrw@localhost/opensips")
- modparam("load_balancer", "probing_interval", 30)
- modparam("load_balancer", "probing_method", "OPTIONS")
- modparam("load_balancer", "probing_from", "sip:proxy@192.168.30.44:35060")
- modparam("load_balancer", "probing_reply_codes", "404, 200")
- # ----- uac params -----
- modparam("uac","restore_mode","manual")
- #modparam("uac","rr_store_param","vsf")
- #modparam("uac", "force_dialog", yes)
- ####### Routing Logic ########
- # main request routing logic
- route{
- if (!mf_process_maxfwd_header("10")) {
- sl_send_reply("483","Too Many Hops");
- exit;
- }
- xlog("L_INFO", " ");
- xlog("L_INFO", "@@@ method : $rm");
- xlog("L_INFO", "@@@ r-uri : $ru");
- xlog("L_INFO", "@@@ src_ip:port = $si:$sp");
- if ($ru=~"^sip:40[0-9]*@"){
- xlog("L_INFO", "@@@ r-uri--- : $ru");
- #$ru = "sip:" + "123456" + "@" + "192.168.10.10" + ":" + "5060";
- xlog("L_INFO", "@@@ r-uri+++ : $ru");
- }
- if ($fu=~"^sip:010[0-9]*@"){
- xlog("L_INFO", "@@@ from-uri--- : $fu");
- xlog("L_INFO", "@@@ from-usr--- : $fU");
- xlog("L_INFO", "@@@ from--- : $from");
- xlog("L_INFO", "@@@ from-usr--- : $from.user");
- #$from.user = "1088331234";
- #$fU = "1088331234";
- #$fu = "sip:" + "1234" + "@" + "192.168.30.44" + ":" + "35060";
- #$var(newfrom1) = uac_replace_from("1088331234","");
- xlog("L_INFO", "@@@ from-user+++ : $fU");
- xlog("L_INFO", "@@@ from-uri+++ : $fu");
- xlog("L_INFO", "@@@ from-user+++ : $from.user");
- #xlog("L_INFO", "@@@ from-uri+++ : $from.uri");
- xlog("L_INFO", "@@@ from-domain+++ : $fd");
- xlog("L_INFO", "@@@ from-name+++ : $fn");
- #uac_replace_from("sip:1088331234@$fd");
- #$var(new_uri) = "sip:"+ "9999" +"@192.168.30.44:55060";
- #uac_replace_from("9999","$var(new_uri)");
- #uac_replace_from("2101573704 <sip:2101573704@$fd:$from.uri>");
- if (is_present_hf("From")){
- xlog("L_INFO", "@@@ we have from header");
- #remove_hf("From");
- #if( remove_hf("From")){
- # xlog("L_INFO", "@@@ we remove from header");
- #}
- #append_hf("From: batman <$fu>;tag=$ft\r\n");
- }
- if(remove_hf("User-Agent"))
- {
- xlog("L_INFO", "@@@ we remove header");
- }
- xlog("L_INFO", "@@@ new from : $var(newfrom1)");
- }
- # OPTIONS answer
- if (uri==myself) {
- if (is_method("OPTIONS")) {
- options_reply();
- exit;
- }
- }
- if(is_method("SUBSCRIBE")) {
- exit;
- }
- # receive register message of test users, record user's ip and port.
- if (is_method("REGISTER"))
- {
- # authenticate the REGISTER requests (uncomment to enable auth)
- #if (!www_authorize("", "subscriber"))
- #{
- # www_challenge("", "0");
- # exit;
- #}
- #if (!db_check_to())
- #{
- # sl_send_reply("403","Forbidden auth ID");
- # exit;
- #}
- #if (!save("location"))
- # sl_reply_error();
- rewritehostport("192.168.30.45:21311");
- route(1);
- exit;
- }
- # INVITE
- if ( ( is_method("INVITE")||is_method("NOTIFY") ) && !has_totag()) {
- xlog("L_INFO", "@@@ INVITE has no totag");
- xlog("L_INFO", "@@@ Before change from : fU is $fU");
- $var(new_uri) = "sip:"+ "9999" +"@192.168.30.44:55060";
- uac_replace_from("9999","$var(new_uri)");
- xlog("L_INFO", "@@@ After change from : fU is $fU");
- $var(invite_deal) = 0;
- # invite message from IMS side
- if (
- (src_ip!=192.168.30.47 && src_port!=5070) &&
- (src_ip!=192.168.30.47 && src_port!=5071) &&
- (src_ip!=192.168.30.48 && src_port!=5080) &&
- (src_ip!=192.168.30.48 && src_port!=5081) &&
- (src_ip!=192.168.30.45 && src_port!=5050) &&
- (src_ip!=192.168.30.46 && src_port!=5060)
- )
- {
- if (load_balance("1", "calls"))
- {
- xlog("L_INFO", "@@@ du = $du");
- # save from ip/port, dest ip/port
- $var(dest_ip) = $(du{s.select,1,:});
- $var(dest_port) = $(du{s.select,2,:});
- $var(tmp_dest_ip) = $(du{s.select,1,:});
- $var(tmp_dest_port) = $(du{s.select,2,:});
- xlog("L_INFO", "in load_balancer @@@ tmp_dest_ip = $var(tmp_dest_ip)");
- xlog("L_INFO", "in load_balancer @@@ tmp_dest_port = $var(tmp_dest_port)");
- xlog("L_INFO", "in load_balancer @@@ dest_ip = $var(dest_ip)");
- xlog("L_INFO", "in load_balancer @@@ dest_port = $var(dest_port)");
- $var(send_port) = $Rp;
- $var(dest_ok) = 1;
- }
- /*
- $var(dest_ip) = "192.168.30.47";
- $var(dest_port) = "5070";
- $var(dest_ok) = 1;
- */
- if (search("conf_addr")) {
- $var(conf_addr) = $(tu{uri.param,conf_addr});
- xlog("L_INFO", "%%%%% conf_addr: [$var(conf_addr)]");
- $var(conf_port) = $(tu{uri.param,conf_port});
- xlog("L_INFO", "%%%%% conf_port: [$var(conf_port)]");
- # save from ip/port, dest ip/port
- $var(dest_ip) = $var(conf_addr);
- $var(dest_port) = $var(conf_port);
- $var(dest_ok) = 1;
- }
- if ($var(dest_ok) == 1)
- {
- if (create_dialog()) {
- store_dlg_value("dlg_source_ip", "$si");
- store_dlg_value("dlg_source_port", "$sp");
- store_dlg_value("dlg_dest_ip", "$var(dest_ip)");
- store_dlg_value("dlg_dest_port", "$var(dest_port)");
- store_dlg_value("dlg_recv_port", "$Rp");
- store_dlg_value("dlg_send_port", "$Rp");
- store_dlg_value("dlg_recv_ip", "$Ri");
- fetch_dlg_value("dlg_source_ip","$var(req_src_ip)");
- fetch_dlg_value("dlg_source_port","$var(req_src_port)");
- fetch_dlg_value("dlg_dest_ip","$var(req_dest_ip)");
- fetch_dlg_value("dlg_dest_port","$var(req_dest_port)");
- fetch_dlg_value("dlg_recv_port", "$var(req_recv_port)");
- fetch_dlg_value("dlg_send_port", "$var(req_send_port)");
- fetch_dlg_value("dlg_recv_ip", "$var(req_recv_ip)");
- xlog("L_INFO", "======= store =======");
- xlog("L_INFO", "@@@ request_src_ip = $var(req_src_ip)");
- xlog("L_INFO", "@@@ request_src_port = $var(req_src_port)");
- xlog("L_INFO", "@@@ request_dest_ip = $var(req_dest_ip)");
- xlog("L_INFO", "@@@ request_dest_port = $var(req_dest_port)");
- xlog("L_INFO", "@@@ req_recv_port = $var(req_recv_port)");
- xlog("L_INFO", "@@@ req_send_port = $var(req_send_port)");
- xlog("L_INFO", "@@@ req_recv_ip = $var(req_recv_ip)");
- #remove_hf("From");
- #if( remove_hf("From")){
- # xlog("L_INFO", "@@@ we remove from header");
- #}
- #append_hf("From: batman <$fu>;tag=$ft\r\n");
- } else {
- xlog("L_ERR", "@@@ create_dialog error, src ip:port = $si:$sp , call-id = $ci, dest ip:port = $var(dest_ip):$var(dest_port)");
- # send error reply to src node
- #sl_send_reply("500","Server Internal Error");
- #exit;
- }
- # save to localcache
- /*
- cache_store("local", "source_ip_$ci", "$si");
- cache_store("local", "source_port_$ci", "$sp");
- cache_store("local", "dest_ip_$ci", "$var(dest_ip)");
- cache_store("local", "dest_port_$ci", "$var(dest_port)");
- cache_store("local", "recv_port_$ci", "$Rp");
- cache_store("local", "send_port_$ci", "$Rp");
- cache_store("local", "recv_ip_$ci", "$Ri");
- */
- #strip_isup("application/sdp");
- #remove_hf("Content-Type");
- #append_hf("Content-Type: application/sdp\r\n");
- if (is_present_hf("Contact"))
- {
- if (subst('/^Contact:(.+)sip:(.+)@([0-9.:]+)(.+)$/Contact:\1sip:\2@$Ri:$Rp\4/i')) {};
- }
- if (subst('/^From:(.+)sip:(.+)@([0-9.:]+)(.+)$/From:\1sip:\2@$Ri:$Rp\4/i')) {};
- if (subst('/^To:(.+)sip:(.+)@([0-9.:]+)(.+)$/To:\1sip:\2@$var(dest_ip):$var(dest_port)\4/i')) {};
- # modify SIP Request's URI because dest uri has been changed
- xlog("L_INFO", "@@@ before rU = $rU");
- #subst("$rU","\d{3,}?$rU");
- xlog("L_INFO", "@@@ before rU 2 = $rU");
- #$rU = "123";
- $ru = "sip:" + $rU + "@" + $var(dest_ip) + ":" + $var(dest_port);
- xlog("L_INFO", "@@@ modify requst user = $rU");
- xlog("L_INFO", "@@@ modify ru = $ru");
- $var(newfrom) = "From: " + "sip:" + $rU + "@" + $var(dest_ip) + ":" + $var(dest_port);
- }
- else
- { # send busy reply to msce
- sl_send_reply("486","Busy Here");
- exit;
- }
- $var(invite_deal) = 1;
- }
- # invite message from NGCC side
- if (
- (src_ip==192.168.30.47 && src_port==5070) ||
- (src_ip==192.168.30.47 && src_port==5071) ||
- (src_ip==192.168.30.48 && src_port==5080) ||
- (src_ip==192.168.30.48 && src_port==5081) ||
- (src_ip==192.168.30.45 && src_port==5050) ||
- (src_ip==192.168.30.46 && src_port==5060)
- )
- {
- xlog("L_INFO", "Before lookup ru = $ru");
- # do lookup with method filtering
- /*
- if (!lookup("location","m")) {
- xlog("L_ERR", "Location lookup failed!");
- switch ($retcode) {
- case -1:
- case -3:
- t_newtran();
- t_reply("404", "Not Found");
- exit;
- case -2:
- sl_send_reply("405", "Method Not Allowed");
- exit;
- }
- }
- xlog("L_INFO", "After lookup ru = $ru");
- */
- # To Conference
- if (search("conf_addr")) {
- $var(conf_addr) = $(tu{uri.param,conf_addr});
- xlog("L_INFO", "%%%%% conf_addr: [$var(conf_addr)]");
- $var(conf_port) = $(tu{uri.param,conf_port});
- xlog("L_INFO", "%%%%% conf_port: [$var(conf_port)]");
- # save from ip/port, dest ip/port
- $var(dest_ip) = $var(conf_addr);
- $var(dest_port) = $var(conf_port);
- }else{
- $var(dest_ip) = "";
- $var(dest_port) = "";
- # save from ip/port, dest ip/port
- #$var(dest_ip) = $rd;
- #$var(dest_port) = $rp;
- $var(dest_ip) = "192.168.30.49";
- $var(dest_port) = 55060;
- xlog("L_INFO", "@@@ ngcc invite dest_ip is = $var(dest_ip)");
- xlog("L_INFO", "@@@ ngcc invite dest_port is = $var(dest_port)");
- }
- xlog("L_INFO", "After lookup rd = $rd");
- xlog("L_INFO", "After lookup rp = $rp");
- $var(send_port) = $Rp;
- if (create_dialog()) {
- store_dlg_value("dlg_source_ip", "$si");
- store_dlg_value("dlg_source_port", "$sp");
- store_dlg_value("dlg_dest_ip", "$var(dest_ip)");
- store_dlg_value("dlg_dest_port", "$var(dest_port)");
- store_dlg_value("dlg_recv_port", "$Rp");
- store_dlg_value("dlg_send_port", "$var(send_port)");
- store_dlg_value("dlg_recv_ip", "$Ri");
- fetch_dlg_value("dlg_source_ip","$var(req_src_ip)");
- fetch_dlg_value("dlg_source_port","$var(req_src_port)");
- fetch_dlg_value("dlg_dest_ip","$var(req_dest_ip)");
- fetch_dlg_value("dlg_dest_port","$var(req_dest_port)");
- fetch_dlg_value("dlg_recv_port", "$var(req_recv_port)");
- fetch_dlg_value("dlg_send_port", "$var(req_send_port)");
- fetch_dlg_value("dlg_recv_ip", "$var(req_recv_ip)");
- xlog("L_INFO", "======= store =======");
- xlog("L_INFO", "@@@ request_src_ip = $var(req_src_ip)");
- xlog("L_INFO", "@@@ request_src_port = $var(req_src_port)");
- xlog("L_INFO", "@@@ request_dest_ip = $var(req_dest_ip)");
- xlog("L_INFO", "@@@ request_dest_port = $var(req_dest_port)");
- xlog("L_INFO", "@@@ req_recv_port = $var(req_recv_port)");
- xlog("L_INFO", "@@@ req_send_port = $var(req_send_port)");
- xlog("L_INFO", "@@@ req_recv_ip = $var(req_recv_ip)");
- } else {
- xlog("L_ERR", "@@@ create_dialog error, src ip:port = $si:$sp , call-id = $ci, dest ip:port = $var(dest_ip):$var(dest_port)");
- # send error reply to src node
- #sl_send_reply("500","Server Internal Error");
- #exit;
- }
- # save to localcache
- /*
- cache_store("local", "source_ip_$ci", "$si");
- cache_store("local", "source_port_$ci", "$sp");
- cache_store("local", "dest_ip_$ci", "$var(dest_ip)");
- cache_store("local", "dest_port_$ci", "$var(dest_port)");
- cache_store("local", "recv_port_$ci", "$Rp");
- cache_store("local", "send_port_$ci", "$var(send_port)");
- cache_store("local", "recv_ip_$ci", "$Ri");
- */
- if (is_present_hf("Contact"))
- {
- if (subst('/^Contact:(.+)sip:(.+)@([0-9.:]+)(.+)$/Contact:\1sip:\2@$Ri:$var(send_port)\4/i')) {};
- }
- if (subst('/^From:(.+)sip:(.+)@([0-9.:]+)(.+)$/From:\1sip:\2@$Ri:$var(send_port)\4/i')) {};
- if (subst('/^To:(.+)sip:(.+)@([0-9.:]+)(.+)$/To:\1sip:\2@$var(dest_ip):$var(dest_port)\4/i')) {};
- #add_isup_iam();
- # modify SIP Request's URI because dest uri has been changed
- $ru = "sip:" + $rU + "@" + $var(dest_ip) + ":" + $var(dest_port);
- # set the forced socket for message sending (proto:ip:port)
- $fs = "udp:" + $Ri + ":" + $var(send_port);
- xlog("L_INFO", "@@@ ru = $ru");
- xlog("L_INFO", "@@@ fs = $fs");
- $var(invite_deal) = 1;
- }
- # invite message from other node (not freeswitch or msce)
- if ($var(invite_deal) == 0) {
- xlog("L_ERR", "@@@ Error src ip:port = $si:$sp, call-id = $ci");
- # send 404 reply to src node
- sl_send_reply("404","Not Found");
- exit;
- }
- # NON-INVITE
- } else {
- xlog("L_INFO", "@@@ NON-INVITE or INVITE has totag");
- if (is_method("BYE")) {
- /*
- if (search("conf_addr")) {
- $var(conf_addr) = $(tu{uri.param,conf_addr});
- xlog("L_INFO", "%%%%% conf_addr: [$var(conf_addr)]");
- $var(conf_port) = $(tu{uri.param,conf_port});
- xlog("L_INFO", "%%%%% conf_port: [$var(conf_port)]");
- # save from ip/port, dest ip/port
- $var(dest_ip) = $var(conf_addr);
- $var(dest_port) = $var(conf_port);
- }
- xlog("L_INFO", "%%%%% dest_ip111111: [$var(dest_ip)]");
- xlog("L_INFO", "%%%%% dest_port111111: [$var(dest_port)]");
- */
- if (t_newtran()) {
- xlog("L_ERR", "Send 200 OK to BYE! call_id = $ci");
- t_reply("200","OK");
- }
- xlog("L_INFO", "%%%%% dest_ip222222: [$var(dest_ip)]");
- xlog("L_INFO", "%%%%% dest_port222222: [$var(dest_port)]");
- }
- $var(session_exist) = 0;
- retrieve_dialog();
- if ($DLG_status==NULL) {
- xlog("L_ERR", "@@@ No dialog exist on request route, method = $rm, call-id = $ci");
- /*
- avp_delete("$avp(i:1002)/g");
- avp_delete("$avp(i:1003)/g");
- avp_delete("$avp(i:1004)/g");
- avp_delete("$avp(i:1005)/g");
- avp_delete("$avp(i:1006)/g");
- avp_delete("$avp(i:1007)/g");
- cache_fetch("local", "source_ip_$ci", $avp(i:1001));
- cache_fetch("local", "source_port_$ci", $avp(i:1002));
- cache_fetch("local", "dest_ip_$ci", $avp(i:1003));
- cache_fetch("local", "dest_port_$ci", $avp(i:1004));
- cache_fetch("local", "recv_port_$ci", $avp(i:1005));
- cache_fetch("local", "send_port_$ci", $avp(i:1006));
- cache_fetch("local", "recv_ip_$ci", $avp(i:1007));
- if ($avp(i:1001)==NULL || $avp(i:1002)==NULL ||
- $avp(i:1003)==NULL || $avp(i:1004)==NULL ||
- $avp(i:1005)==NULL || $avp(i:1006)==NULL ||
- $avp(i:1007)==NULL)
- {
- xlog("L_ERR", "### cache fetch error.");
- # send 481 reply to src node
- sl_send_reply("481","Call/Transaction Does Not Exist");
- exit;
- }
- $var(reply_src_ip) = $avp(i:1001);
- $var(reply_src_port) = $avp(i:1002);
- $var(reply_dest_ip) = $avp(i:1003);
- $var(reply_dest_port) = $avp(i:1004);
- $var(reply_recv_port) = $avp(i:1005);
- $var(reply_send_port) = $avp(i:1006);
- $var(reply_recv_ip) = $avp(i:1007);
- */
- $var(session_exist) = 1;
- } else {
- $var(dlg_status) = $DLG_status;
- xlog("L_INFO", "### DLG_status = $var(dlg_status)");
- fetch_dlg_value("dlg_source_ip","$var(req_src_ip)");
- fetch_dlg_value("dlg_source_port","$var(req_src_port)");
- fetch_dlg_value("dlg_dest_ip","$var(req_dest_ip)");
- fetch_dlg_value("dlg_dest_port","$var(req_dest_port)");
- fetch_dlg_value("dlg_send_port", "$var(req_send_port)");
- fetch_dlg_value("dlg_recv_port", "$var(req_recv_port)");
- fetch_dlg_value("dlg_recv_ip", "$var(req_recv_ip)");
- xlog("L_INFO", "======= fetch =======");
- xlog("L_INFO", "@@@ request_src_ip = $var(req_src_ip)");
- xlog("L_INFO", "@@@ request_src_port = $var(req_src_port)");
- xlog("L_INFO", "@@@ request_dest_ip = $var(req_dest_ip)");
- xlog("L_INFO", "@@@ request_dest_port = $var(req_dest_port)");
- xlog("L_INFO", "@@@ request_send_port = $var(req_send_port)");
- xlog("L_INFO", "@@@ request_recv_port = $var(req_recv_port)");
- xlog("L_INFO", "@@@ request_recv_ip = $var(req_recv_ip)");
- $var(session_exist) = 1;
- }
- if ($var(session_exist)==1) {
- if (($si==$var(req_src_ip)) && ($sp==$(var(req_src_port){s.int}))){
- #if ($si==$var(req_src_ip)) {
- $var(sip_from_ip) = $var(req_recv_ip);
- $var(sip_from_port) = $var(req_send_port);
- $var(sip_to_ip) = $var(req_dest_ip);
- $var(sip_to_port) = $var(req_dest_port);
- } else {
- $var(sip_from_ip) = $var(req_recv_ip);
- $var(sip_from_port) = $var(req_recv_port);
- $var(sip_to_ip) = $var(req_src_ip);
- $var(sip_to_port) = $var(req_src_port);
- }
- xlog("L_INFO", "@@@ sip_from_ip = $var(sip_from_ip)");
- xlog("L_INFO", "@@@ sip_from_port = $var(sip_from_port)");
- xlog("L_INFO", "@@@ sip_to_ip = $var(sip_to_ip)");
- xlog("L_INFO", "@@@ sip_to_port = $var(sip_to_port)");
- if (is_present_hf("Contact"))
- {
- if ($si==$var(req_src_ip)) {
- if (subst('/^Contact:(.*)sip:((.+)@)?([a-zA-Z0-9.:]+)(.+)$/Contact:\1sip:\2$var(reply_recv_ip):$var(reply_send_port)\5/i')){};
- #if (subst('/^Contact:(.+)sip:(.+)@([0-9.:]+)(.+)$/Contact:\1sip:\2@$var(req_recv_ip):$var(req_send_port)\4/i')) {};
- } else {
- if (subst('/^Contact:(.*)sip:((.+)@)?([a-zA-Z0-9.:]+)(.+)$/Contact:\1sip:\2$var(reply_recv_ip):$var(reply_recv_port)\5/i')){};
- #if (subst('/^Contact:(.+)sip:(.+)@([0-9.:]+)(.+)$/Contact:\1sip:\2@$var(req_recv_ip):$var(req_recv_port)\4/i')) {};
- }
- }
- if (subst('/^From:(.+)sip:(.+)@([0-9.:]+)(.+)$/From:\1sip:\2@$var(sip_from_ip):$var(sip_from_port)\4/i')) {};
- if (subst('/^To:(.+)sip:(.+)@([0-9.:]+)(.+)$/To:\1sip:\2@$var(sip_to_ip):$var(sip_to_port)\4/i')) {};
- $var(sip_dest_uri) = "sip:" + $var(sip_to_ip) + ":" + $var(sip_to_port);
- rewrite_dst_ip_port("$var(sip_dest_uri)");
- # modify SIP Request's URI because dest uri has been changed
- $ru = "sip:" + $rU + "@" + $var(sip_to_ip) + ":" + $var(sip_to_port);
- # set the forced socket for message sending (proto:ip:port)
- $fs = "udp:" + $var(req_recv_ip) + ":" + $var(sip_from_port);
- xlog("L_INFO", "@@@ sip_dest_uri = $var(sip_dest_uri)");
- xlog("L_INFO", "@@@ After rewrite du = $du");
- xlog("L_INFO", "@@@ fs = $fs");
- }
- # BYE processing
- if (is_method("BYE")) {
- }
- # CANCEL processing
- if (is_method("CANCEL")) {
- if (t_check_trans())
- t_relay();
- exit;
- }
- }
- #t_check_trans();
- # record routing
- #if (!is_method("REGISTER|MESSAGE"))
- # record_route();
- # account only INVITEs
- #if (is_method("INVITE")) {
- # setflag(1); # do accounting
- #}
- route(1);
- }
- route[1] {
- # for INVITEs enable some additional helper routes
- if (is_method("INVITE") || is_method("CANCEL") || is_method("PRACK")) {
- t_on_branch("2");
- t_on_reply("2");
- t_on_failure("1");
- }
- if (is_method("REGISTER")) {
- t_on_reply("3");
- }
- if (!t_relay()) {
- sl_reply_error();
- };
- exit;
- }
- onreply_route {
- xlog("L_INFO", " ");
- xlog("L_INFO", "### reply route = $rs");
- xlog("L_INFO", "### src_ip:port = $si:$sp");
- }
- branch_route[2] {
- xlog("L_INFO", "### branch route 2 : new branch at $ru\n");
- }
- onreply_route[2] {
- xlog("L_INFO", "### reply route 2 = $rs");
- # From IMS
- $var(dlg_status) = $DLG_status;
- xlog("L_INFO", "### DLG_status = $var(dlg_status)");
- $var(session_exist) = 0;
- if ($DLG_status==NULL) {
- xlog("L_ERR", "@@@ No dialog exist on reply route, call-id = $ci, status = $rs");
- /*
- avp_delete("$avp(i:1002)/g");
- avp_delete("$avp(i:1003)/g");
- avp_delete("$avp(i:1004)/g");
- avp_delete("$avp(i:1005)/g");
- avp_delete("$avp(i:1006)/g");
- avp_delete("$avp(i:1007)/g");
- cache_fetch("local", "source_ip_$ci", $avp(i:1001));
- cache_fetch("local", "source_port_$ci", $avp(i:1002));
- cache_fetch("local", "dest_ip_$ci", $avp(i:1003));
- cache_fetch("local", "dest_port_$ci", $avp(i:1004));
- cache_fetch("local", "recv_port_$ci", $avp(i:1005));
- cache_fetch("local", "send_port_$ci", $avp(i:1006));
- cache_fetch("local", "recv_ip_$ci", $avp(i:1007));
- if ($avp(i:1001)==NULL || $avp(i:1002)==NULL ||
- $avp(i:1003)==NULL || $avp(i:1004)==NULL ||
- $avp(i:1005)==NULL || $avp(i:1006)==NULL ||
- $avp(i:1007)==NULL)
- {
- xlog("L_ERR", "### cache fetch error.");
- }
- else
- {
- $var(reply_src_ip) = $avp(i:1001);
- $var(reply_src_port) = $avp(i:1002);
- $var(reply_dest_ip) = $avp(i:1003);
- $var(reply_dest_port) = $avp(i:1004);
- $var(reply_recv_port) = $avp(i:1005);
- $var(reply_send_port) = $avp(i:1006);
- $var(reply_recv_ip) = $avp(i:1007);
- $var(session_exist) = 1;
- }
- */
- } else {
- fetch_dlg_value("dlg_source_ip","$var(reply_src_ip)");
- fetch_dlg_value("dlg_source_port","$var(reply_src_port)");
- fetch_dlg_value("dlg_dest_ip","$var(reply_dest_ip)");
- fetch_dlg_value("dlg_dest_port","$var(reply_dest_port)");
- fetch_dlg_value("dlg_recv_port", "$var(reply_recv_port)");
- fetch_dlg_value("dlg_send_port", "$var(reply_send_port)");
- fetch_dlg_value("dlg_recv_ip", "$var(reply_recv_ip)");
- xlog("L_INFO", "======= fetch =======");
- xlog("L_INFO", "### reply_src_ip = $var(reply_src_ip)");
- xlog("L_INFO", "### reply_src_port = $var(reply_src_port)");
- xlog("L_INFO", "### reply_dest_ip = $var(reply_dest_ip)");
- xlog("L_INFO", "### reply_dest_port = $var(reply_dest_port)");
- xlog("L_INFO", "### reply_recv_port = $var(reply_recv_port)");
- xlog("L_INFO", "### reply_send_port = $var(reply_send_port)");
- xlog("L_INFO", "### reply_recv_ip = $var(reply_recv_ip)");
- $var(session_exist) = 1;
- }
- if ($var(session_exist)==1) {
- if ($si==$var(reply_src_ip)) {
- $var(sip_from_ip) = $var(reply_dest_ip);
- $var(sip_from_port) = $var(reply_dest_port);
- $var(sip_to_ip) = $var(reply_recv_ip);
- $var(sip_to_port) = $var(reply_send_port);
- } else {
- $var(sip_from_ip) = $var(reply_src_ip);
- $var(sip_from_port) = $var(reply_src_port);
- $var(sip_to_ip) = $var(reply_recv_ip);
- $var(sip_to_port) = $var(reply_recv_port);
- }
- if (is_present_hf("Contact"))
- {
- if ($si==$var(req_src_ip)) {
- if (subst('/^Contact:(.+)sip:(.+)@([0-9.:]+)(.+)$/Contact:\1sip:\2@$var(reply_recv_ip):$var(reply_send_port)\4/i')) {};
- } else {
- if (subst('/^Contact:(.+)sip:(.+)@([0-9.:]+)(.+)$/Contact:\1sip:\2@$var(reply_recv_ip):$var(reply_recv_port)\4/i')) {};
- }
- }
- if (subst('/^From:(.+)sip:(.+)@([0-9.:]+)(.+)$/From:\1sip:\2@$var(sip_from_ip):$var(sip_from_port)\4/i')) {};
- if (subst('/^To:(.+)sip:(.+)@([0-9.:]+)(.+)$/To:\1sip:\2@$var(sip_to_ip):$var(sip_to_port)\4/i')) {};
- }
- # remove cache when dialog end
- if (is_method("BYE") && status=="200") {
- cache_remove("local", "source_ip_$ci");
- cache_remove("local", "source_port_$ci");
- cache_remove("local", "dest_ip_$ci");
- cache_remove("local", "dest_port_$ci");
- cache_remove("local", "recv_port_$ci");
- cache_remove("local", "send_port_$ci");
- cache_remove("local", "recv_ip_$ci");
- }
- }
- onreply_route[3] {
- xlog("L_INFO", "REGISTER 200 OK");
- }
- failure_route[1] {
- xlog("L_ERR", "### failure_route src ip:port = $si:$sp, call-id = $ci, status = $rs");
- # disable the failure destination
- #lb_disable();
- if (t_was_cancelled()) {
- exit;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement