[Serusers] Broken Calls not written to Database

Chris St Denis chris at aebc.com
Tue Jul 12 19:50:49 CEST 2005


Note, you may be legally required to log all calls if you are selling this
commercially rather than just a corporate PBX type of thing.

-----Original Message-----
From: serusers-bounces at iptel.org [mailto:serusers-bounces at lists.iptel.org]On
Behalf Of Ozan Blotter
Sent: Tuesday, July 12, 2005 10:23 AM
To: Iqbal
Cc: serusers at lists.iptel.org
Subject: Re: [Serusers] Broken Calls not written to Database


Dear Iqbal,

Thanks for your help and btw i've found the way how to prevent database not
to write 833 to 833 calls which are free and has nothing to do with, so my
database not grows with them. I think the broken calls can be set in MERA
VoIP which is used as PSTN Gateway by our Carrier.

Thanks Again,
Ozan

 # -----------------------------------------------------------------
        # Record Route Section and Acc section
        # -----------------------------------------------------------------
        if (method=="INVITE" && client_nat_test("3")) {
                record_route_preset("212.XXX.104.XXX:5060;nat=yes");
        } else if (method!="REGISTER") {
        if!(uri=~"^sip:833[0-9]*@") {
                record_route();
                setflag(1);
            }
        };

# -----------------------------------------------------------------



----- Original Message -----
From: "Iqbal" <iqbal at gigo.co.uk>
To: "Ozan Blotter" <cosmocid at ispro.net.tr>
Cc: <serusers at lists.iptel.org>
Sent: Tuesday, July 12, 2005 8:06 PM
Subject: Re: [Serusers] Broken Calls not written to Database


> oh completely forgot to answer the question, if the user unplugs, then who
> will send the BYE, only the pstn gateway can, and most can (someone
> confirm) send a BYE if they receive nothing for a transaction for 30secs
> or so, hence ur billing might be out for 30secs.
> However what i do for a "broken" call, is to complete it when I do my
> billing, by how much, well thats upto what mood I am in :-), but usually
> round it up to the next minute. This is not accurate, because the user may
> bypass this and not send a BYE but might have carried on his
> call...soooooo  get the CDR from the gateway, and for open calls, I am
> trying to match the cdr data with that in ser, which aint easy sinc ethe
> cdr have no username of them.
>
> Again these are just methods to reduce/remove the inaccuracies, it wont be
> 100% but over time it will get close
>
> Iqbal
>
> Ozan Blotter wrote:
>
>> Dear List,
>>  I'm making a call to PSTN, it's okay i can talk with the other party via
>> ATA, but suddenly i unplug power from it, and in accounting module it
>> does not write line with BYE message so i cannot understand whether the
>> call is finished or not. only INVITE and ACK are written, no BYE :(
>>  This may be a security hole for customers, because they talk for a long
>> time and they may unplug their units or cut power so it does not tell SER
>> it's over. How i can prevent this, also what i need to add as a line for
>> telling ACC module not to write calls from 833 to 833 into database,
>> which are free SIP2SIP calls ?
>>  Btw, a Postpaid Billing System is on the way for OpenSER built in PHP,
>> later i will need OpenSER group's help to place it onto hosting site.
>> Shortly it will have features:
>>  * Nothing extra from package, default MySql Database which comes with
>> OpenSER Release is being used,
>> * All routing is done via OpenSER's ser.cfg ,
>> * Initial Rate, Initial Time, Increment Rate, Increment Time will be user
>> variable ,
>> * Account Creation/Deletion done in PHP ,
>> * Invoice Generation and CDR will include many variables ,
>> * Rating will be in PHP,
>> * And everything is totaly free :)
>>  If you have ideas and/or suggestion please write back to me so i can
>> work for it too.
>> Reqs: OpenSER & PHP & MySql & Apache
>>  Thanks,
>> Ozan
>>
>> debug=3
>> fork=yes
>> log_stderror=no
>>  listen=212.XXX.104.XXX
>> port=5060
>> children=4
>>  alias=212.XXX.104.XXX
>>  dns=no
>> rev_dns=no
>>  fifo="/tmp/openser_fifo"
>> fifo_db_url="mysql://openser:openserrw@localhost/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/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/domain.so"
>> loadmodule "/usr/local/lib/openser/modules/acc.so"
>>  #modparam("auth_db|uri_db|usrloc", "db_url",
>> "mysql://ser:heslo@localhost/ser")
>> modparam("auth_db", "calculate_ha1", 1)
>> modparam("auth_db", "password_column", "password")
>> modparam("auth_db", "use_domain", 1)
>>  modparam("domain", "db_mode", 1)
>>  modparam("nathelper", "rtpproxy_disable", 1)
>> modparam("nathelper", "natping_interval", 0)
>>  modparam("mediaproxy","natping_interval", 30)
>> modparam("mediaproxy","mediaproxy_socket", "/var/run/mediaproxy.sock")
>>
modparam("mediaproxy","sip_asymmetrics","/usr/local/etc/openser/sip-asymmetr
ic-clients")
>>
modparam("mediaproxy","rtp_asymmetrics","/usr/local/etc/openser/rtp-asymmetr
ic-clients")
>>  modparam("usrloc", "db_mode", 2)
>> modparam("usrloc", "use_domain", 1)
>>  modparam("registrar", "default_expires", 60)
>> modparam("registrar", "min_expires", 30)
>> modparam("registrar", "nat_flag", 6)
>> modparam("registrar", "use_domain", 1)
>>  modparam("rr", "enable_full_lr", 1)
>>  modparam("acc", "db_url", "mysql://openser:openserrw@localhost/openser")
>> modparam("acc", "log_level", 1)
>> modparam("acc", "log_flag", 1)
>> modparam("acc", "db_flag", 1)
>>  route {
>>  # -----------------------------------------------------------------
>>         # Sanity Check Section
>>
        # -----------------------------------------------------------------
>>         if (!mf_process_maxfwd_header("10")) {
>>                 sl_send_reply("483", "Too Many Hops");
>>                 break;
>>         };
>>  if (msg:len > max_len) {
>>                 sl_send_reply("513", "Message Overflow");
>>                 break;
>>         };
>>  # -----------------------------------------------------------------
>>         # Record Route Section and Acc section
>>
        # -----------------------------------------------------------------
>>         if (method=="INVITE" && client_nat_test("3")) {
>>                 # INSERT YOUR IP ADDRESS HERE
>>                 record_route_preset("212.XXX.104.XXX:5060;nat=yes");
>>         } else if (method!="REGISTER") {
>>                 record_route();
>>                 setflag(1);
>>         };
>>  # -----------------------------------------------------------------
>>         # Call Tear Down Section
>>
        # -----------------------------------------------------------------
>>         if (method=="BYE" || method=="CANCEL") {
>>                 end_media_session();
>>         };
>>  # -----------------------------------------------------------------
>>         # Loose Route Section
>>
        # -----------------------------------------------------------------
>>         if (loose_route()) {
>>  if (has_totag() && (method=="INVITE" || method=="ACK")) {
>>  if (client_nat_test("3") || search("^Route:.*;nat=yes")) {
>>                                 setflag(6);
>>                                 use_media_proxy();
>>                         };
>>                 };
>>  route(1);
>>                 break;
>>         };
>>  # -----------------------------------------------------------------
>>         # Call Type Processing Section
>>
        # -----------------------------------------------------------------
>>  if (uri!=myself) {
>>                 route(1);
>>                 break;
>>         };
>>  if (uri==myself) {
>>  if (method=="CANCEL") {
>>                         route(3);
>>                         break;
>>                 } else if (method=="INVITE") {
>>                         route(3);
>>                         break;
>>                 } else  if (method=="REGISTER") {
>>                         route(2);
>>                         break;
>>                 };
>>  lookup("aliases");
>>                 if (uri!=myself) {
>>                         route(1);
>>                         break;
>>                 };
>>  if (!lookup("location")) {
>>                         sl_send_reply("404", "User Not Found");
>>                         break;
>>                 };
>>         };
>>  route(1);
>> }
>>  route[1] {
>>  # -----------------------------------------------------------------
>>         # Default Message Handler
>>
        # -----------------------------------------------------------------
>>  t_on_reply("1");
>>  if (!t_relay()) {
>>  if (method=="INVITE" || method=="ACK") {
>>                         end_media_session();
>>                 };
>>  sl_reply_error();
>>         };
>> }
>>  route[2] {
>>  # -----------------------------------------------------------------
>>         # REGISTER Message Handler
>>
        # ----------------------------------------------------------------
>>  if (!search("^Contact:\ +\*") && client_nat_test("7")) {
>>                 setflag(6);
>>                 fix_nated_register();
>>                 force_rport();
>>         };
>>  sl_send_reply("100", "Trying");
>>  if (!www_authorize("","subscriber")) {
>>                 www_challenge("","0");
>>                 break;
>>         };
>>  if (!check_to()) {
>>                 sl_send_reply("401", "Unauthorized");
>>                 break;
>>         };
>>  consume_credentials();
>>  if (!save("location")) {
>>                 sl_reply_error();
>>         };
>> }
>>  route[3] {
>>  # -----------------------------------------------------------------
>>         # CANCEL and INVITE Message Handler
>>
        # -----------------------------------------------------------------
>>  if (client_nat_test("3")) {
>>                 setflag(7);
>>                 force_rport();
>>                 fix_nated_contact();
>>         };
>>  lookup("aliases");
>>         if (uri!=myself) {
>>                 route(1);
>>                 break;
>>         };
>>  if (uri=~"^sip:0[0-9]*@*") {
>>              rewritehost("212.XXX.59.XXX");
>>              route(1);
>>              break;
>>         };
>>  if (!lookup("location")) {
>>                 sl_send_reply("404", "User Not Found");
>>                 break;
>>         };
>>  if (method=="CANCEL") {
>>                 route(1);
>>                 break;
>>         };
>>  if (!proxy_authorize("","subscriber")) {
>>                 proxy_challenge("","0");
>>                 break;
>>         } else if (!check_from()) {
>>                 sl_send_reply("403", "Use From=ID");
>>                 break;
>>         };
>>  consume_credentials();
>>  if (isflagset(6) || isflagset(7)) {
>>                 use_media_proxy();
>>         };
>>  route(1);
>> }
>>  onreply_route[1] {
>>  if ((isflagset(6) || isflagset(7)) &&
>> (status=~"(180)|(183)|2[0-9][0-9]")) {
>>  if (!search("^Content-Length:\ +0")) {
>>                         use_media_proxy();
>>                 };
>>         };
>>  if (client_nat_test("1")) {
>>                 fix_nated_contact();
>>         };
>> }
>>
>>------------------------------------------------------------------------
>>
>>_______________________________________________
>>Serusers mailing list
>>serusers at lists.iptel.org
>>http://lists.iptel.org/mailman/listinfo/serusers
>>

_______________________________________________
Serusers mailing list
serusers at lists.iptel.org
http://lists.iptel.org/mailman/listinfo/serusers




More information about the sr-users mailing list