debug=3 fork=yes log_stderror=no log_facility=LOG_LOCAL0 log_name="SER" check_via=no dns=no rev_dns=no mhomed=1 #Set the server to try to locate outbound interface on multihomed host. #By default is not (0) - it is rather time consuming. #no need of force_send_socket() listen=212.249.15.4 listen=195.129.125.74 port=5060 children=4 mpath="/usr/lib/openser/modules/" loadmodule "sl.so" loadmodule "tm.so" loadmodule "rr.so" loadmodule "maxfwd.so" loadmodule "usrloc.so" loadmodule "registrar.so" loadmodule "textops.so" loadmodule "xlog.so" loadmodule "statistics.so" loadmodule "mi_fifo.so" #modparam("tm", "fr_timer",120) modparam("usrloc", "db_mode", 0) modparam("rr", "enable_full_lr", 1) modparam("mi_fifo", "fifo_name", "/tmp/openser_fifo") route { $var(peers)="["+$fU+" to "+$tU+"]"; xlog("L_NOTICE","$var(peers) $rm $rU@$rd, $si to $Ri ($ml-$cl)\n"); t_on_reply("1"); if(!mf_process_maxfwd_header("10")) { sl_send_reply("483","Too Many Hops"); exit; } if(msg:len>=2048) { sl_send_reply("513", "Message too big"); exit; } if(loose_route()) { if(method=="INVITE") { xlog("L_NOTICE","$var(peers) Re-INVITE is replied locally (without retransmission)\n"); sl_send_reply("100","Your Re-INVITE is received"); sl_send_reply("200","OK"); exit; } xlog("L_NOTICE","$var(peers) Loose Route\n"); t_relay(); exit; } if(method=="CANCEL") { t_relay(); exit; } if(method=="ACK") { if($si=="212.249.15.4" || $si=="195.129.125.74") { xlog("L_NOTICE","$var(peers) Ignoring a looped ACK from my interface $si\n"); exit; } t_relay(); exit; } if(method=="INVITE") { record_route(); if($Ri=="195.129.125.74") { xlog("L_INFO","$var(peers) ==> INCOMING CALL to $oU\n"); subst_uri("/^sip:\+/sip:/i"); rewritehost("128.179.67.35"); } else { xlog("L_INFO","$var(peers) ==> OUTGOING CALL\n"); append_hf("Remote-Party-ID: ;privacy=off;screen=yes\r\n"); rewritehost("212.190.89.137"); } } t_relay(); } onreply_route[1] { $var(peers)="["+$fU+" to "+$tU+"]"; if($(rr{s.len})>12) $var(rr)=$(rr{s.substr,0,10})+".."; else $var(rr)=$rr; xlog("L_NOTICE","$var(peers) $rs ($var(rr)) for $rm from $si to $Ri ($ml-$cl bytes)\n"); if($hdr(Record-Route[0])!="") $var(rr0)=$hdr(Record-Route[0]); else $var(rr0)="0"; if($hdr(Record-Route[1])!="") $var(rr1)=$hdr(Record-Route[1]); else $var(rr1)="0"; if($hdr(Record-Route[2])!="") $var(rr2)=$hdr(Record-Route[2]); else $var(rr2)="0"; if($hdr(Record-Route[3])!="") $var(rr3)=$hdr(Record-Route[3]); else $var(rr3)="0"; if($hdr(Record-Route[4])!="") $var(rr4)=$hdr(Record-Route[4]); else $var(rr4)="0"; if( $var(rr0)!="0" && $var(rr1)=="0" ) { $var(rr00)=$(var(rr0){s.select,0,,}); $var(rr01)=$(var(rr0){s.select,1,,}); $var(rr02)=$(var(rr0){s.select,2,,}); $var(rr03)=$(var(rr0){s.select,3,,}); $var(rr04)=$(var(rr0){s.select,4,,}); remove_hf("Record-Route"); if($var(rr00)!="") append_hf("Record-Route: $var(rr00)\r\n"); if($var(rr01)!="") append_hf("Record-Route: $var(rr01)\r\n"); if($var(rr02)!="") append_hf("Record-Route: $var(rr02)\r\n"); if($var(rr03)!="") append_hf("Record-Route: $var(rr03)\r\n"); if($var(rr04)!="") append_hf("Record-Route: $var(rr04)\r\n"); } }