debug=3 memlog=2 fork=yes log_stderror=no log_facility=LOG_LOCAL0 log_name="SER" children=4 check_via=no dns=no rev_dns=no mhomed=1 listen=212.249.15.4 listen=195.129.125.74 port=5060 server_signature=yes sip_warning=1 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[10] { $var(fU)="_empty"; $var(tU)="_empty"; if($fU!="") $var(fU)=$fU; if($tU!="") $var(tU)=$tU; $var(peers)=$var(fU)+"="+$var(tU); $var(hosts)=$si+"="+$Ri; if($cl=="") $var(sz)="("+$ml+" bytes)"; else if($cl=="0") $var(sz)="("+$ml+" bytes)"; else $var(sz)="("+$ml+"-"+$cl+" bytes)"; if($var(msg_type)=="reply") { if($(rr{s.len})>12) $var(rr)=$(rr{s.substr,0,10})+".."; else $var(rr)=$rr; } } route[11] { switch($var(comm)) { case "ErrHops.": case "ErrBig.": xlog("L_NOTICE","$Ts $var(peers) $var(comm) $rm $ou $var(hosts) $var(sz)\n"); break; case "LooseR.": xlog("L_NOTICE","$Ts $var(peers) $var(comm) $rm $var(hosts)\n"); if($rm=="BYE") xlog("L_NOTICE","$Ts $var(peers) CallBye. $ci $si\n"); break; case "Trans.": xlog("L_NOTICE","$Ts $var(peers) $var(comm) $rm $var(hosts) $var(sz)\n"); break; case "Aband.": xlog("L_NOTICE","$Ts $var(peers) $var(comm) $rm $var(hosts)\n"); break; case "Loop.": xlog("L_NOTICE","$Ts $var(peers) $var(comm) $rm $ou $var(hosts) $var(sz)\n"); break; case "Conn.": xlog("L_NOTICE","$Ts $var(peers) $var(comm) $rm $ou $var(hosts) $var(sz)\n"); break; case "ReplTr.": xlog("L_NOTICE","$Ts $var(peers) $var(comm) $rs ($var(rr)) for $rm $var(hosts) $var(sz)\n"); break; case "ReplSL.": xlog("L_NOTICE","$Ts $var(peers) $var(comm) $rs ($var(rr)) for $rm $var(hosts) $var(sz)\n"); if($rs=="200") { switch($rm) { case "INVITE": xlog("L_NOTICE","$Ts $var(peers) CallAnsw. $ci $si\n"); break; case "BYE": xlog("L_NOTICE","$Ts $var(peers) CallDisc. $ci $si\n"); break; } } break; default: xlog("L_NOTICE","$Ts $var(peers) ScriptErr. $rm $ou $var(hosts) $var(sz)\n"); } } route { $var(msg_type)="request"; route(10); t_on_reply("1"); if(!mf_process_maxfwd_header("10")) { $var(comm)="ErrHops."; route(11); sl_send_reply("483","Too Many Hops"); exit; } if(msg:len>=2048) { $var(comm)="ErrBig."; route(11); sl_send_reply("513", "Message too big"); exit; } if(loose_route()) { $var(comm)="LooseR."; route(11); if(method=="INVITE") { sl_send_reply("100","Your Re-INVITE is received"); sl_send_reply("200","OK"); exit; } t_relay(); exit; } if(method=="CANCEL" || method=="ACK") { if($si=~"^212.249.15.[34]$" || $si=~"^195.129.125.7[34]$") { $var(comm)="Loop."; route(11); } if(t_check_trans()) { $var(comm)="Trans."; route(11); t_relay(); exit; } else { $var(comm)="Aband."; route(11); exit; } } $var(comm)="Conn."; route(11); if(method=="INVITE") { record_route(); if($oU=~"^\+412[12]550.{4}$") { if($Ri=~"^195.129.125.7[34]$") { xlog("L_INFO","$Ts $var(peers) ==> INCOMING $oU\n"); subst_uri("/^sip:\+/sip:/i"); rewritehost("128.179.67.35"); } else { xlog("L_INFO","$Ts $var(peers) ==> Unassigned Number $oU\n"); sl_send_reply("404","Unassigned Number"); exit; } } else { if($Ri=~"^195.129.125.7[34]$") { xlog("L_INFO","$Ts $var(peers) ==> Wrong Number $oU\n"); sl_send_reply("406","Not Acceptable: relaying only 021550 or 022550"); exit; } else { xlog("L_INFO","$Ts $var(peers) ==> OUTGOING $oU\n"); append_hf("Remote-Party-ID: ;privacy=off;screen=yes\r\n"); if($var(dst)=="1") { rewritehost("62.189.34.7"); $var(dst)="2"; } else { rewritehost("212.190.89.137"); $var(dst)="1"; } } } } t_relay(); } route[20] { 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"); } } onreply_route[1] { $var(msg_type)="reply"; route(10); $var(comm)="ReplTr."; route(11); } onreply_route { $var(msg_type)="reply"; route(10); $var(comm)="ReplSL."; route(11); route(20); }