Hi Bodgan,
Superb it works like a charm, thanks a lot ;-)
I've another question about openser accouting, a regular call log is
composed by 3 db lines (INVITE, ACK, BYE). I remark that the timestamps
between the INVITE and ACK lines are the same, I think I've miss
something in my configuration anyone have an idea about this ?
Regards,
Tanguy Bouzéloc
Init-Sys
Bogdan-Andrei Iancu a écrit :
> Hi Tanguy,
>
> for the statefully processed requests, use the
> "failed_transaction_flag" to enable acc for non-2xx. For statelessly
> requests, you will have to use acc_db_request().
>
> regards,
> bogdan
>
> Tanguy Bouzéloc wrote:
>> Hello,
>>
>> I've some issues with my mysql accounting, I can only log successful
>> calls in the acc table and I've no informations about missed calls. In
>> mysql accounting I've only sip 200 ok and no errors. I've not this
>> behavior in my syslog.
>>
>> It's very important for us for evaluate the performance of our providers
>> and we can only do it with a database accouting.
>>
>> For example, If I pass a call and I let it ring til operator timeout,
>> I've no trace of this call in the accounting table.
>>
>> I've also another question, the lcr and gw tables have very small fixed
>> limits (256 for lcr and 32 for gw), since we have much more gateways and
>> sdas I've updated theses limits to a value which fit our needs, do you
>> thinks it can be a problem ?
>>
>> Thanks in advance,
>>
>> Tanguy Bouzéloc
>> Init-Sys
>>
>> ------------------------------------------------------------------------
>>
>>
>
# ----------- global configuration parameters ------------------------
#debug=9
fork=yes
check_via=no
dns=no
rev_dns=no
port=5060
children=4
sip_warning=0
# ------------------ module loading ----------------------------------
loadmodule "/usr/lib/openser/modules/mysql.so"
loadmodule "/usr/lib/openser/modules/nathelper.so"
loadmodule "/usr/lib/openser/modules/sl.so"
loadmodule "/usr/lib/openser/modules/tm.so"
loadmodule "/usr/lib/openser/modules/rr.so"
loadmodule "/usr/lib/openser/modules/maxfwd.so"
loadmodule "/usr/lib/openser/modules/lcr.so"
loadmodule "/usr/lib/openser/modules/acc.so"
loadmodule "/usr/lib/openser/modules/xlog.so"
loadmodule "/usr/lib/openser/modules/textops.so"
loadmodule "/usr/lib/openser/modules/permissions.so"
# ----------------- setting module-specific parameters ---------------
modparam("lcr", "db_url", "mysql://???")
modparam("lcr", "db_mode", 0)
modparam("rr","enable_full_lr",1)
modparam("acc", "db_url", "mysql://???")
modparam("acc", "db_flag", 1)
modparam("acc", "db_localtime", 1)
modparam("acc", "log_level", 1)
modparam("acc", "log_flag", 1 )
modparam("permissions", "db_url", "mysql://???")
route {
if (!mf_process_maxfwd_header("10")) {
sl_send_reply("483","Too Many Hops");
return;
};
if (msg:len >= max_len ) {
sl_send_reply("513", "Message too big");
return;
};
if (!is_method("REGISTER")) {
record_route();
};
if (is_method("BYE") || is_method("CANCEL")) {
xlog("L_NOTICE", "End call($ci | $Ri): $fU -> $tU");
if (is_method("BYE"))
setflag(1);
unforce_rtp_proxy();
};
if (loose_route()) {
route(1);
return;
};
if (!allow_trusted()) {
xlog("L_WARN", "Host not trusted ($fu/$si/$rP)");
sl_send_reply("403", "Forbidden");
exit;
};
if (!load_gws()) {
sl_send_reply("500", "Internal server error, unable to load
gateways");
return;
}
if (!next_gw()) {
xlog("L_ERR", "No gw found ($ru/$fu)");
sl_send_reply("503", "Service not available, no gateways
found");
return;
};
t_on_failure("2");
route(1);
}
route[1] {
setflag(1);
if (is_method("INVITE") || is_method("ACK")){
if (is_method("INVITE"))
xlog("L_NOTICE", "Incoming call($ci | $Ri): $fU ->
$tU");
if (!search("^Content-Length:[ ]*0"))
force_rtp_proxy("foc");
# if(src_ip == 217.15.85.178) {
# subst('/^From:.*<sip:(.*)@(.*)$/From: "\1"
<sip:\1/@\2');
# }
t_on_reply("1");
};
if (!t_relay()) {
sl_reply_error();
};
}
onreply_route[1] {
setflag(1);
if (status=~"[12][0-9][0-9]"){
if (!search("^Content-Length:[ ]*0"))
force_rtp_proxy("foc");
};
}
failure_route[2] {
if (t_check_status("400")) {
xlog("L_NOTICE", "Failure call($ci | $Ri): $fU -> $tU 400 Bad
Request");
} else if (t_check_status("401")) {
xlog("L_NOTICE", "Failure call($ci | $Ri): $fU -> $tU 401
Unauthorized");
} else if (t_check_status("403")) {
xlog("L_NOTICE", "Failure call($ci | $Ri): $fU -> $tU 403
Forbidden");
} else if (t_check_status("404")) {
xlog("L_NOTICE", "Failure call($ci | $Ri): $fU -> $tU 404 Not
Found");
} else if (t_check_status("405")) {
xlog("L_NOTICE", "Failure call($ci | $Ri): $fU -> $tU 405
Method Not Allowed");
} else if (t_check_status("406")) {
xlog("L_NOTICE", "Failure call($ci | $Ri): $fU -> $tU 406 Not
Acceptable");
} else if (t_check_status("407")) {
xlog("L_NOTICE", "Failure call($ci | $Ri): $fU -> $tU 407 Proxy
Authentication Required");
} else if (t_check_status("408")) {
xlog("L_NOTICE", "Failure call($ci | $Ri): $fU -> $tU 408
Request Timeout");
} else if (t_check_status("410")) {
xlog("L_NOTICE", "Failure call($ci | $Ri): $fU -> $tU 410
Gone");
} else if (t_check_status("413")) {
xlog("L_NOTICE", "Failure call($ci | $Ri): $fU -> $tU 413
Request Entity Too Large");
} else if (t_check_status("414")) {
xlog("L_NOTICE", "Failure call($ci | $Ri): $fU -> $tU 414
Request-URI Too Long");
} else if (t_check_status("415")) {
xlog("L_NOTICE", "Failure call($ci | $Ri): $fU -> $tU 415
Unsupported Media Type");
} else if (t_check_status("416")) {
xlog("L_NOTICE", "Failure call($ci | $Ri): $fU -> $tU 416
Unsupported URI Scheme");
} else if (t_check_status("420")) {
xlog("L_NOTICE", "Failure call($ci | $Ri): $fU -> $tU 420 Bad
Extension");
} else if (t_check_status("421")) {
xlog("L_NOTICE", "Failure call($ci | $Ri): $fU -> $tU 421
Extension Required");
} else if (t_check_status("423")) {
xlog("L_NOTICE", "Failure call($ci | $Ri): $fU -> $tU 423
Interval Too Brief");
} else if (t_check_status("480")) {
xlog("L_NOTICE", "Failure call($ci | $Ri): $fU -> $tU 480
Temporarily Unavailable");
} else if (t_check_status("481")) {
xlog("L_NOTICE", "Failure call($ci | $Ri): $fU -> $tU 481
Call/Transaction Does Not Exist");
} else if (t_check_status("482")) {
xlog("L_NOTICE", "Failure call($ci | $Ri): $fU -> $tU 482 Loop
Detected");
} else if (t_check_status("483")) {
xlog("L_NOTICE", "Failure call($ci | $Ri): $fU -> $tU 483 Too
Many Hops");
} else if (t_check_status("484")) {
xlog("L_NOTICE", "Failure call($ci | $Ri): $fU -> $tU 484
Address Incomplete");
} else if (t_check_status("485")) {
xlog("L_NOTICE", "Failure call($ci | $Ri): $fU -> $tU 485
Ambiguous");
} else if (t_check_status("486")) {
xlog("L_NOTICE", "Failure call($ci | $Ri): $fU -> $tU 486 Busy
Here");
} else if (t_check_status("487")) {
xlog("L_NOTICE", "Failure call($ci | $Ri): $fU -> $tU 487
Request Terminated");
} else if (t_check_status("488")) {
xlog("L_NOTICE", "Failure call($ci | $Ri): $fU -> $tU 488 Not
Acceptable Here");
} else if (t_check_status("491")) {
xlog("L_NOTICE", "Failure call($ci | $Ri): $fU -> $tU 491
Request Pending");
} else if (t_check_status("493")) {
xlog("L_NOTICE", "Failure call($ci | $Ri): $fU -> $tU 493
Undecipherable");
} else if (t_check_status("500")) {
xlog("L_NOTICE", "Failure call($ci | $Ri): $fU -> $tU 500
Server Internal Error");
} else if (t_check_status("501")) {
xlog("L_NOTICE", "Failure call($ci | $Ri): $fU -> $tU 501 Not
Implemented");
} else if (t_check_status("502")) {
xlog("L_NOTICE", "Failure call($ci | $Ri): $fU -> $tU 502 Bad
Gateway");
} else if (t_check_status("503")) {
xlog("L_NOTICE", "Failure call($ci | $Ri): $fU -> $tU 503
Service Unavailable");
} else if (t_check_status("504")) {
xlog("L_NOTICE", "Failure call($ci | $Ri): $fU -> $tU 504
Server Time-out");
} else if (t_check_status("505")) {
xlog("L_NOTICE", "Failure call($ci | $Ri): $fU -> $tU 505
Version Not Supported");
} else if (t_check_status("513")) {
xlog("L_NOTICE", "Failure call($ci | $Ri): $fU -> $tU 513
Message Too Large");
} else {
xlog("L_NOTICE", "Failure call($ci | $Ri): $fU -> $tU Unknown
code");
}
setflag(1);
if (is_method("INVITE") && t_check_status("408|500|503")) {
if (!next_gw()) {
xlog("L_ERR", "No more gw ($ru/$fu)");
t_reply("486", "Busy");
# t_reply("503", "Service not available");
exit;
}
t_on_failure("2");
force_rtp_proxy("foc");
t_relay();
}
}
_______________________________________________
Users mailing list
[email protected]
http://openser.org/cgi-bin/mailman/listinfo/users