debug=3 fork=no log_stderror=yes listen=192.168.1.15 port=5060 children=4 dns=no rev_dns=no mpath="/usr/local/lib/openser/modules/" loadmodule "mysql.so" loadmodule "sl.so" loadmodule "tm.so" loadmodule "rr.so" loadmodule "maxfwd.so" loadmodule "usrloc.so" loadmodule "registrar.so" loadmodule "auth.so" loadmodule "auth_db.so" loadmodule "uri_db.so" loadmodule "mi_fifo.so" loadmodule "xlog.so" loadmodule "textops.so" modparam("auth_db","calculate_ha1",1) modparam("auth_db","password_column","password") modparam("usrloc","db_mode",2) modparam("rr","enable_full_lr",1) modparam("mi_fifo","fifo_name","/tmp/openser_fifo") route { t_on_reply("1"); if(!mf_process_maxfwd_header("10")) { sl_send_reply("483","Too Many Hops"); exit; } if(msg:len>max_len) { sl_send_reply("513","Message Overflow"); exit; } # Adds a time header to the reply of the request. append_time(); # short display mode $var(msg)="\n"; $var(msg)=$var(msg)+$Cbg+" From: "+$hdr(From[*])+$Cxx+"\n"; $var(msg)=$var(msg)+$Cbg+" To: "+$hdr(To[*])+$Cxx+"\n"; $var(msg)=$var(msg)+$Cbg+"Call-ID: "+$hdr(Call-ID[*])+$Cxx+"\n"; if(search("^Authorization: ")) $var(msg)=$var(msg)+$Cbg+"Authorization: "+$hdr(Authorization[*])+$Cxx+"\n"; if(search("^Proxy-Authorization: ")) $var(msg)=$var(msg)+$Cbg+"Proxy-Authorization: "+$hdr(Proxy-Authorization[*])+$Cxx+"\n"; xlog("L_NOTICE","$rm from $si:$sp ($Tf)$var(msg)"); if(method!="REGISTER") { record_route(); } if(loose_route()) { xlog("L_NOTICE","Loose route $rm\n"); route(1); exit; } if(uri!=myself) { xlog("L_NOTICE","URI is not mine\n"); route(1); exit; } if(method=="ACK") { xlog("L_NOTICE","ACK is relayed\n"); route(1); exit; } else if (method=="INVITE") { xlog("L_NOTICE","Processing by INVITE handler ...\n"); route(3); exit; } else if (method=="REGISTER") { xlog("L_NOTICE","Processing by REGISTER handler ...\n"); route(2); exit; } lookup("aliases"); if(uri!=myself) { xlog("L_NOTICE","URI is not mine after a lookup for aliases\n"); route(1); exit; } if(!lookup("location")) { sl_send_reply("404","User Not Found"); exit; } xlog("L_NOTICE","The last route statement of the logic\n"); route(1); } route[1] { if(!t_relay()) { sl_reply_error(); } } route[2] { sl_send_reply("100","Trying to Register"); if(!www_authorize("","subscriber")) { www_challenge("","0"); exit; } if(!check_to()) { sl_send_reply("401","Unauthorized"); exit; } consume_credentials(); if(!save("location")) { sl_reply_error(); } xlog("L_NOTICE","Location is saved\n"); } route[3] { if(!proxy_authorize("","subscriber")) { proxy_challenge("","0"); exit; } if (!check_from()) { sl_send_reply("403","Forbidden"); exit; } consume_credentials(); lookup("aliases"); if(uri!=myself) { xlog("L_NOTICE","Not my user after lookup for aliases\n"); route(1); exit; } if(!lookup("location")) { xlog("L_NOTICE","User is not found\n"); sl_send_reply("404","User Not Found"); exit; } xlog("L_NOTICE","Now relaying\n"); route(1); } onreply_route[1] { $var(msg)="\n"; $var(msg)=$var(msg)+$Cbc+" From: "+$hdr(From[*])+$Cxx+"\n"; $var(msg)=$var(msg)+$Cbc+" To: "+$hdr(To[*])+$Cxx+"\n"; $var(msg)=$var(msg)+$Cbc+"Call-ID: "+$hdr(Call-ID[*])+$Cxx+"\n"; xlog("L_NOTICE","$rs ($rr) from $si:$sp concerning $rm ($Tf)$var(msg)"); }