Also, did you get some errors in syslog when the clients attempt to
register? Please check in database that the password you set for the
user is the same as you expect (in table subscriber).
Cheers,
Daniel
On 08/16/06 05:25, Rafo RGV wrote:
Hi
I am migrating OpenSER v1.0.9 to v1.1.0 using the config file I send
below that works perfect in 1.0.9 and I modified to run in 1.1.x ,
I´ve just needed to change naming schema in parameter given to
exported functions of avpops module to run without errors in this new
version but when running can´t see basic logs and can´t register any
client even if I install DB schema and create subscriber using its
openserctl , ngrep just show me a 'forbidden' message but dont know
why, please someone send me some advice.
thanks
rafael
# ----------------- global configuration parameters --------------------
debug=4
fork=yes
log_stderror=yes
listen=192.168.2.136 # OPENSER IP ADDRESS HERE
port=5060
# Hostname matching an alias will satisfy the condition uri==myself".
# alias=mydomain.com.pe:5060
# alias=mydomain.com.pe
alias=192.168.2.136:5060
alias=192.168.2.136
check_via=yes # (cmd. line: -v)
children=4
dns=no
rev_dns=no
fifo="/tmp/openser_fifo"
# fifo="FIFO"
fifo_mode=0666 # Fifo permissions can be changes from here.
fifo_db_url="mysql://dbuser:dbpass@dbt2.mydomain.com.pe/openser"
# -----------------------------------------------------------------------
loadmodule "/usr/local/lib/openser/modules/mysql.so"
loadmodule "/usr/local/lib/openser/modules/sl.so"
loadmodule "/usr/local/lib/openser/modules/tm.so"
loadmodule "/usr/local/lib/openser/modules/rr.so"
loadmodule "/usr/local/lib/openser/modules/maxfwd.so"
loadmodule "/usr/local/lib/openser/modules/usrloc.so"
loadmodule "/usr/local/lib/openser/modules/registrar.so"
loadmodule "/usr/local/lib/openser/modules/group.so"
loadmodule "/usr/local/lib/openser/modules/auth.so"
loadmodule "/usr/local/lib/openser/modules/auth_db.so"
loadmodule "/usr/local/lib/openser/modules/uri.so"
loadmodule "/usr/local/lib/openser/modules/uri_db.so"
## loadmodule "/usr/local/lib/openser/modules/mediaproxy.so"
loadmodule "/usr/local/lib/openser/modules/nathelper.so"
loadmodule "/usr/local/lib/openser/modules/textops.so"
loadmodule "/usr/local/lib/openser/modules/avpops.so"
loadmodule "/usr/local/lib/openser/modules/domain.so"
loadmodule "/usr/local/lib/openser/modules/permissions.so"
loadmodule "/usr/local/lib/openser/modules/acc.so"
loadmodule "/usr/local/lib/openser/modules/uac_redirect.so"
loadmodule "/usr/local/lib/openser/modules/diversion.so"
# -----------------------------------------------------------------------
modparam("auth_db|permissions|group|uri_db|usrloc", "db_url",
"mysql://dbuser:dbpass@dbt2.mydomain.com.pe/openser")
modparam("auth_db", "calculate_ha1", 1)
modparam("auth_db", "password_column", "password")
modparam("nathelper", "natping_interval", 30)
modparam("nathelper", "ping_nated_only", 1)
modparam("nathelper", "rtpproxy_sock",
"unix:/var/run/rtpproxy.sock")
modparam("usrloc", "db_mode", 2)
modparam("registrar", "nat_flag", 6)
modparam("rr", "enable_full_lr", 1)
modparam("tm", "fr_inv_timer", 27)
modparam("permissions", "db_mode", 1)
modparam("permissions", "trusted_table", "trusted")
modparam("avpops", "avp_url",
"mysql://dbuser:dbpass@dbt2.mydomain.com.pe/openser")
modparam("avpops", "avp_table", "usr_preferences")
# ------------- Mysql Accounting parameters
modparam("acc", "log_flag", 1)
modparam("acc", "log_level", 2)
modparam("acc", "db_flag", 1)
modparam("acc", "db_missed_flag", 3)
modparam("acc", "log_missed_flag", 3)
modparam("acc", "db_url",
"mysql://dbuser:dbpass@dbt2.mydomain.com.pe/openser")
modparam("acc", "report_ack", 0) # 1 reporta dos starts en acc (para
INVITE y ACK)
modparam("acc", "log_fmt", "miocfsputdr")
modparam("acc", "detect_direction", 1) # only in 1.1.x or cvs
modparam("acc", "multi_leg_enabled", 1)
modparam("acc", "src_leg_avp_id", 110)
modparam("acc", "dst_leg_avp_id", 111)
# ------------- Domain parameters
modparam("usrloc", "use_domain", 1)
modparam("auth_db", "use_domain", 1)
modparam("registrar", "use_domain", 1)
modparam("domain", "db_mode", 1)
modparam("domain", "domain_table", "domain")
modparam("domain", "domain_col", "domain")
#
-------------------------------------------------------------------------
route {
# log(1,
"-------------------------------------------------------\n");
# log(1, "entering main loop\n");
## populate the avps (for Multi call leg accounting):
if (!method=="REGISTER" && !method=="NOTIFY") {
avp_write("$from/username", "$avp(i:110)");
avp_write("$ruri/username", "$avp(i:111)");
};
# set flag for Missed calls for Accounting:
if (!method=="OPTIONS") setflag(3);
if (method=="INVITE") {
log(1, " INVITE MESSAGE RECEIVED - START ACC\n");
};
if (method=="BYE") {
log (1, " BYE MESSAGE RECEIVED - STOP ACCOUNTING\n");
};
if (method=="CANCEL") {
log (1, " CANCEL MESSAGE RECEIVED - STOP ACCOUNTING\n");
};
if (method=="OPTIONS") {
log(1, " OPTIONS MESSAGE RECEIVED\n");
return; #Do Nothing for 'Options'
};
#
-----------------------------------------------------------------
# Sanity Check Section
#
-----------------------------------------------------------------
if (!mf_process_maxfwd_header("10")) {
sl_send_reply("483", "Too Many Hops");
return;
};
if (msg:len > max_len) {
sl_send_reply("513", "Message Overflow");
return;
};
#
-----------------------------------------------------------------
# Handle NOTIFY requests from Sipura's to keep-alive NAT
#
-----------------------------------------------------------------
if ((is_method("NOTIFY")) && (! uri=~"sip:.*[@]+.*"))
{
sl_send_reply("200", "OK keep-alive");
log(1, " OK keep-alive\n");
return;
};
#
-----------------------------------------------------------------
# Only allow known sip messages
#
-----------------------------------------------------------------
if
(!is_method("INVITE|REGISTER|BYE|NOTIFY|ACK|CANCEL|REFER|SUBSCRIBE"))
{
sl_send_reply("501", "Not implemented here");
log(1, " 501 - Not implemented here\n");
return;
};
#
-----------------------------------------------------------------
# SUBSCRIBE cleanup
#
-----------------------------------------------------------------
if (is_method("SUBSCRIBE")) {
replace(" talk", "talk");
};
#
-----------------------------------------------------------------
# Record Route Section
#
-----------------------------------------------------------------
if (method=="INVITE" && nat_uac_test("19")) {
# OPENSER IP ADDRESS OR DOMAIN HERE:
record_route_preset("192.168.2.136:5060;nat=yes");
setflag(1); ## Set Flag 1 for Acc: test from this
location!!
} else if (method!="REGISTER") {
record_route();
};
#
-----------------------------------------------------------------
# Call Tear Down Section
#
-----------------------------------------------------------------
if (method=="BYE" || method=="REFER" ||
method=="CANCEL") {
unforce_rtp_proxy();
setflag(1); ### Set Flag 1 for Acounting
};
#
-----------------------------------------------------------------
# Loose Route Section
#
-----------------------------------------------------------------
if (loose_route()) {
if (has_totag() && (method=="INVITE" ||
method=="ACK")) {
if (nat_uac_test("19")) {
setflag(7);
force_rport();
fix_nated_contact();
};
force_rtp_proxy("l");
};
route(1);
return;
};
#
-----------------------------------------------------------------
# Call Type Processing Section
#
-----------------------------------------------------------------
if (!is_uri_host_local()) {
if (is_from_local() || allow_trusted()) {
route(4);
route(1);
} else {
sl_send_reply("403", "Forbidden");
};
return;
};
if (method=="CANCEL") {
route(1);
return;
} else if (method=="INVITE") {
setflag(1); # Set Flag for Acounting
route(3);
return;
} else if (method=="REGISTER") {
route(2);
return;
};
lookup("aliases");
if (uri!=myself) {
route(4);
route(1);
return;
};
if (!lookup("location") && !method=="ACK") {
if (does_uri_exist()) {
log(1, " uri_exist but its Temporarily
Unavailable 1 \n");
route(7); # To Voicemail
return;
} else {
log(1, " unable to locate user - User
Not Exist 1 \n");
sl_send_reply("404", "User Not Exist");
acc_db_request("404 User Not Exist",
"missed_calls");
return;
};
};
route(1);
}
route[1] {
#
-----------------------------------------------------------------
# Default Message Handler
#
-----------------------------------------------------------------
t_on_reply("1");
if (!t_relay()) {
if (method=="INVITE" || method=="ACK") {
unforce_rtp_proxy();
};
sl_reply_error();
};
}
route[2] {
#
-----------------------------------------------------------------
# REGISTER Message Handler
#
-----------------------------------------------------------------
sl_send_reply("100", "Trying");
if (is_user_in("from", "desactivado")) {
sl_send_reply("402", "desactivada temporalmente");
log(1," Cta. desactivada temporalmente \n");
return;
};
if (!search("^Contact:[ ]*\*") && nat_uac_test("19"))
{
setflag(6);
fix_nated_register();
force_rport();
};
if (!www_authorize("","subscriber")) {
log(1," Fails to Register \n");
www_challenge("","0");
return;
};
if (!check_to()) {
log(1," Unauthorized registration attempt \n");
sl_send_reply("401", "Unauthorized");
return;
};
consume_credentials();
log(1," Registered! \n");
if (!save("location")) {
sl_reply_error();
};
}
route[3] {
#
-----------------------------------------------------------------
# INVITE Message Handler
#
-----------------------------------------------------------------
log(1," route[3]---> INVITE Message Handler \n");
if ( allow_trusted() ) log(1, " Call from pstn or *pbx, no
authentication is required. \n");
if (!allow_trusted()) {
if (!proxy_authorize("","subscriber")) {
proxy_challenge("","0");
return;
} else if (!check_from()) {
sl_send_reply("403", "Use From=ID");
log(1, " Sorry, only registered users
are allowed \n");
return;
};
consume_credentials();
};
append_rpid_hf();
# some digits rules here....
lookup("aliases");
if (!is_uri_host_local()) {
route(4);
route(1);
return;
};
if (nat_uac_test("19")) {
setflag(7);
force_rport();
};
#
-----------------------------------------------------------------
# to PSTN Routes!!!
#
-----------------------------------------------------------------
route(6); # To PSTN & LDI Routes block!!!
#
-----------------------------------------------------------------
if ( is_uri_host_local() ) {
# (Is he in the voicemail group?) -- determine it now
and store it in
# flag 4, before we rewrite the flag using UsrLoc:
if (is_user_in("Request-URI", "voicemail")) {
log(1, " requested user is in voicemail
group \n");
setflag(4);
};
# if user is on-line and is in Voicemail group, enable
redirection
# Pendiente: # ver como meter voicemail al avp junto a
las otras funciones...
if (method == "INVITE" && isflagset(4)) {
log(1, " invite for voicemail
user->initiate failureroute[1]\n");
t_on_failure("1");
};
# flag 22 determines if we need to call the
append_branch() for Blind CallFwd.
if (avp_db_load("$ruri/username", "$avp(s:callfwd)"))
{
setflag(22);
avp_pushto("$ruri", "$avp(s:callfwd)");
route(6);
return;
};
# native SIP destinations are handled using our USRLOC DB:
if (!lookup("location") ) {
if (does_uri_exist()) {
log(1," uri_exist but its
Temporarily Unavailable 2 \n");
route(7); # To Voicemail
return;
} else {
log(1," Unable to locate
xcompany user - User Not Exist 2X \n");
prefix("iu"); ## in asterisk: iu:
exten => _iu1780XXXX,1,Playback(invalid,noanswer)
acc_db_request("404 User Invalid",
"missed_calls");
rewritehostport("192.168.2.131:5070");
t_relay();
return;
};
};
# t_on_failure() informs SER that we want to perform
special handling when a failure condition occurs.
# Failure conditions in this context refer to 4xx and
5xx response codes.
# By setting t_on_failure(1) before calling t_relay(),
oSER will pass control to the failure_route[1]
t_on_failure("1");
route(4);
route(1);
};
}
route[4] {
#
-----------------------------------------------------------------
# NAT Traversal Section
#
-----------------------------------------------------------------
### First check and resetflags if UAS are behind the same NAT
system: ###
if (isflagset(6) && isflagset(7)){
log(2, " Both Clients are behind NAT");
# Store the destination domain into an AVP
avp_printf("$avp(i:450)", "$dd");
if (avp_check("$avp(i:450)", "eq/$src_ip/g")){
log(3, " Detected Two Clients Behind the
Same NAT - Disabling Mediaproxy");
# Do not use media-proxy as the clients seem
to be behind the same NAT
resetflag(6);
resetflag(7);
};
};
if (isflagset(6) || isflagset(7)) {
if (!isflagset(8)) {
setflag(8);
force_rport();
fix_nated_contact();
force_rtp_proxy();
};
};
}
route[5] {
#
-----------------------------------------------------------------
# ILD - PSTN Handler
#
-----------------------------------------------------------------
# Forward international calls to Asterisk (a SIP LDI Providers):
if(uri=~"^sip:011"){
log(1, " 011N match - Larga Distancia Internacional a
USA \n");
if (!is_user_in("from", "ldiusa")) {
log(1," No permission for international
calls to USA \n");
sl_send_reply("403", "No permission for
international calls to USA");
acc_db_request("403 Forbidden",
"missed_calls");
return;
};
strip(2);
};
if(uri=~"^sip:011"){
log(1," 011N match - Larga Distancia
Internacional \n");
if (!is_user_in("from", "ldix")) {
log(1, " No permission for
international calls \n");
sl_send_reply("403", "No permission
for international calls");
acc_db_request("403 Forbidden",
"missed_calls");
return;
};
};
rewritehostport("192.168.2.137:5070"); # Asterisk or PSTN
GATEWAY IP ADDRESS
t_on_failure("1");
route(4);
route(1);
}
route[6] {
# ----------------- Free Calls -------------------
# To Info numbers 102, 104, 123 y 080011236
if(uri=~"^sip:102@" || uri=~"^sip:104@" ||
uri=~"^sip:123@" || uri=~"^sip:0800123456@"){
log(1," To CallCenter xcompany!! \n");
rewriteuri("sip:123456@mydomain.com.pe");
rewritehostport("callcenter.mydomain.com.pe:5060");
route(4);
route(1);
return;
};
if (is_user_in("from", "restringido")) {
sl_send_reply("402", "Restriccion temporal");
log(1," 402 - Restriccion temporal \n");
acc_db_request("402 Restricted", "missed_calls");
return;
};
lookup("aliases");
if (!is_uri_host_local()) {
if (!isflagset(22)) {
append_branch();
};
route(4);
route(1);
return;
};
# -------------------------- Seccion de Rutas a LDI
----------------------------------------
# Forward international calls to Asterisk (To SIP LDI Providers):
if (uri=~"^sip:011[0-9]*@" && !uri=~"^sip:01152*@") {
route(5);
return;
};
if( uri=~"^sip:[2-8][0-9]{6}@" || uri=~"^sip:1[2-8][0-9]{6}@"
|| uri=~"^sip:01[2-8][0-9]{6}@" ) {
log(1, " A Fijos Mexico PSTN \n");
if (uri=~"^sip:01[2-8][0-9][0-9][0-9][0-9][0-9][0-9]@") {
strip(1);
};
if (uri=~"^sip:[2-8][0-9][0-9][0-9][0-9][0-9][0-9]@") {
prefix("1");
};
if (!is_user_in("from", "fijomexico")) {
sl_send_reply("403", "No permission for local
fixed calls");
log(1, " 403 - No permission for local
fixed calls \n");
acc_db_request("403 Forbidden",
"missed_calls");
return;
};
rewritehostport("192.168.2.137:5070");
prefix("52");
route(4);
route(1);
return;
};
# no existe? (debe ir al final siempre)
if ( uri=~"^sip:[0-9]" && !does_uri_exist() ) {
log(1, " Unable to locate route for this dnid -
User Not Exist 3X \n");
prefix("mc");
acc_db_request("404 Number Invalid or Incomplete",
"missed_calls");
rewritehostport("192.168.2.131:5070");
t_relay();
return;
};
}
route[7] {
# ---------------------- Handling of Unavailable user
----------------------
# non-Voip -- just send "off-line"
if (!(method=="INVITE" || method=="ACK" ||
method=="CANCEL" ||
method=="BYE" || method=="OPTIONS")) {
sl_send_reply("404", "Not Found");
acc_db_request("404 Not Found", "missed_calls");
log(1, " 404 Not Found & non-Voip -- just send
off-line \n");
return;
};
# Not voicemail subscriber:
if (!isflagset(4) && !method=="OPTIONS" &&
!method=="ACK" &&
!method=="BYE" && !method=="CANCEL") {
#sl_send_reply("404", "Not Found and no VMail turned
on");
acc_db_request("480 Temporarily Unavailable",
"missed_calls");
# A locucion (Usuario temporalmente fuera de servicio
'ss-noservice');
log(1, " 404 Not Found and no voicemail \n");
prefix("fu"); ## su: exten =>
_su1780XXXX,1,Playback(ss-noservice,noanswer)
rewritehostport("192.168.2.131:5070");
t_relay();
return;
};
# forward to voicemail adding prefix to simplify asterisk
"extension.conf" ::
if (isflagset(4) && !method=="OPTIONS" &&
!method=="ACK" &&
!method=="BYE" && !method=="CANCEL") {
prefix("vm");
acc_db_request("480 Temporarily Unavailable -> Vm",
"missed_calls");
rewritehostport ("192.168.2.131:5070");
t_relay();
return;
};
}
#
--------------------------------------------------------------------------
onreply_route[1] {
if ((isflagset(6) || isflagset(7)) &&
(status=~"(180)|(183)|2[0-9][0-9]")) {
if (!search("^Content-Length:[ ]*0")) {
force_rtp_proxy();
};
};
if (nat_uac_test("1")) {
fix_nated_contact();
};
}
failure_route[1] {
if (t_check_status("487")) {
return;
};
if (t_check_status("486")){
prefix("vmb");
acc_db_request("486 Busy -> Vm",
"missed_calls");
rewritehostport ("192.168.2.131:5070");
append_branch();
t_relay();
return;
};
if (t_check_status("408")){
prefix("vmu");
acc_db_request("408 Timeout -> Vm",
"missed_calls");
rewritehostport ("192.168.2.131:5070");
append_branch();
t_relay();
return;
};
unforce_rtp_proxy();
}
failure_route[2] {
# handle 302 redirects
if (t_check_status("3[0-9][0-9]")) {
get_redirects("*");
t_relay();
};
}
### The End ###
_______________________________________________
Users mailing list
Users(a)openser.org
http://openser.org/cgi-bin/mailman/listinfo/users