Hello everybody,
I want that openser can call a PSTN number for example: 0296487631. But in the request of INVITE, I see that the callee is always 0296487631@opensersip.test.machine ( and opensersip.test.machine is my sip server), that means the (uri==myself) is always ture. So this request of INVITE can not reache the gateway of PSTN. Anybody can give me some advices? This is my openser.cfg and I use openser+radius+mysql. Thank you very much!!!
Yin
# # $Id: openser.cfg 1827 2007-03-12 15:22:53Z bogdan_iancu $
# simple quick-start config script # Please refer to the Core CookBook at http://www.openser.org/dokuwiki/doku.php # for a explanation of possible statements, functions and parameters. #
# ----------- global configuration parameters ------------------------
debug=3 # debug level (cmd line: -dddddddddd) fork=yes log_stderror=no # (cmd line: -E) children=4
# Uncomment these lines to enter debugging mode #fork=no #log_stderror=yes # port=5060 # ------------------ module loading ----------------------------------
#set module path mpath="/usr/local/lib/openser/modules/"
# Uncomment this if you want to use SQL database loadmodule "mysql.so"
loadmodule "sl.so" loadmodule "tm.so" loadmodule "rr.so" loadmodule "maxfwd.so" loadmodule "usrloc.so" loadmodule "registrar.so" loadmodule "textops.so" loadmodule "mi_fifo.so"
# Uncomment this if you want digest authentication # mysql.so must be loaded ! loadmodule "auth.so" #loadmodule "auth_db.so" loadmodule "auth_radius.so" loadmodule "group_radius.so" loadmodule "acc.so"
# ----------------- setting module-specific parameters ---------------
# -- mi_fifo params --
modparam("mi_fifo", "fifo_name", "/tmp/openser_fifo")
# -- usrloc params --
modparam("usrloc", "db_mode", 0) modparam("auth_radius|group_radius|acc", "radius_config", "/usr/local/etc/radiusclient-ng/radiusclient.conf") modparam("group_radius","use_domain", 0) modparam("auth_radius", "service_type", 15)
modparam("auth", "secret", "testing123") modparam("acc", "radius_flag", 1) modparam("acc", "radius_missed_flag", 2) modparam("acc", "service_type", 15) modparam("acc", "radius_extra", "User-Name=$fU;Sip-Src-IP=$si;Sip-Src-Port=$sp")
# Uncomment this if you want to use SQL database # for persistent storage and comment the previous line #modparam("usrloc", "db_mode", 2)
# -- auth params -- # Uncomment if you are using auth module # #modparam("auth_db", "calculate_ha1", yes) # # If you set "calculate_ha1" parameter to yes (which true in this config), # uncomment also the following parameter) # #modparam("auth_db", "password_column", "password")
# -- rr params -- # add value to ;lr param to make some broken UAs happy modparam("rr", "enable_full_lr", 1)
# ------------------------- request routing logic -------------------
# main routing logic
route{
# initial sanity checks -- messages with # max_forwards==0, or excessively long requests 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; };
#-------set flag for Radius Accounting #if (!method=="OPTIONS") setflag(3);
if (method=="INVITE"){ log (1, "INVITE MESSAGE RECEIVED - START ACC\n"); setflag(1); setflag(2); };
if (method=="BYE"){ log (1, "BYE - STOP ACCOUNTING\n"); setflag(1); };
if (method=="CANCEL"){ log (1, "CANCEL -STOP ACCOUNTING\n"); setflag(1); }; if (!method=="REGISTER") record_route(); if (loose_route()) { # mark routing logic in request append_hf("P-hint: rr-enforced\r\n"); route(1); };
if (!uri==myself) { append_hf("P-hint: outbound\r\n"); route(1);
if (method=="ACK") { route(1); exit; }else if (method=="CANCEL"){ route(1); exit; }else if (method=="INVITE") { route(3); exit; }else if (method=="REGISTER") { route(2); exit; }; lookup("aliases"); if (uri!=myself) { route(1); exit; };
if (!lookup("location")) { sl_send_reply("404","Not User PSTN Found"); exit; }; route(1); }
if (uri==myself) {
if (method=="REGISTER") {
# Uncomment this if you want to use digest authentication if (!radius_www_authorize("opensersip.test.machine")) { www_challenge("opensersip.test.machine", "0"); exit; };
save("location"); exit; };
if (method=="INVITE") {
if (!radius_proxy_authorize("opensersip.test.machine")){ proxy_challenge("opensersip.test.machine","0"); exit; }; }; lookup("aliases"); if (!uri==myself) { append_hf("P-hint: outbound alias\r\n"); route(1); };
# native SIP destinations are handled using our USRLOC DB if (!lookup("location")) { sl_send_reply("404", "Not SIP User Found"); exit; }; append_hf("P-hint: usrloc applied\r\n"); };
route(1); }
route[1] { if (!t_relay()) { sl_reply_error(); }; exit; }
route[2] { # Register Message Handler sl_send_reply("100","Trying"); if (!radius_www_authorize("opensersip.test.machine")) { www_challenge("opensersip.test.machine", "0"); exit; }; if (!save("location")) { sl_reply_error(); }; }
route[3] { if (uri=~"^sip:[0-9]{10}@") { route(4); exit; };
if (!lookup("location")) { if (uri=~"^sip:[0-9]{10}@") { route(4); exit; }; sl_send_reply("404","User not Found"); exit; }; route(1); }
route[4] { rewritehost("172.20.14.32"); route(1); }