# ----------------- setting module-specific parameters
---------------
# -- usrloc params --
modparam("usrloc", "db_mode", 2)
modparam("auth_radius",
"radius_config","/usr/local/etc/radiusclient/radiusclient.conf")
#modparam("auth_radius",
"service_type", 15)
# -- rr params --
# add value to ;lr param to make some broken UAs
happy
modparam("rr", "enable_full_lr", 1)
modparam("acc", "log_level",
1)
modparam("acc", "radius_flag", 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");
break;
};
if (msg:len > max_len )
{
sl_send_reply("513", "Message too
big");
break;
};
# we record-route all messages -- to make sure that
# subsequent
messages will go through our proxy; that's
# particularly good if upstream
and downstream entities
# use different transport protocol
record_route();
# loose-route
processing
if (loose_route())
{
t_relay();
break;
};
# if the request is for other domain use UsrLoc
# (in case, it does not
work, use the following command
# with proper names and addresses in
it)
if
(uri==myself)
{
lookup("aliases");
if (method=="REGISTER") {
log(1, "REGISTER: Authenticating user\n");
if (!radius_www_authorize(""))
{
log(1, "REGISTER: challenging
user\n");
www_challenge("",
"0");
break;
};
save("location");
break;
};
##########################################################################################################
if
(uri=~"^sip:44[127][0-9]+@.*")
{
if
(rewritehostport("pstnrouter:5060"))
{
if
(!t_relay())
{
sl_reply_error();
};
}
break;
}
else if
(uri=~"^sip:01[0-9]+@.*")
{
if
(!t_relay())
{
sl_reply_error();
};
break;
};
# account completed transactions via
syslog
setflag(1);
}
###############################################################################################################
if (method=="INVITE") {
log(1,
"INVITE\n");
setflag(1); /* set for accounting (the same value as in log_flag!)
*/
};
if (method=="MESSAGE")
{
log(1,
"MESSAGE\n");
setflag(1); /* set for accounting (the same value as in log_flag!)
*/
};
if (method=="BYE" ||
method=="CANCEL")
{
log (1, "BYE or
CANCEL\n");
setflag(1);
};
# native SIP destinations are
handled using our USRLOC DB
if
(!lookup("location"))
{
sl_send_reply("404", "Not
Found");
break;
};
if (!t_relay())
{
sl_reply_error();
break;
};
}