[Serusers] ACC into mysql

Barry Murphy barry at unix.co.nz
Wed Apr 27 02:10:26 CEST 2005


MessageThanks,

After months of trying to get this working, your solution fixed the problem. Now the only issue I have is the following:

When I call 03 ( UA -> SER -> Asterisk ) the date and time is read out to the user, asterisk then hangs up the call, however SER doesn't see the hangup, I have to manualy click hangup and then SER gives the BYE.

Apr 27 12:09:04 max /usr/local/sbin/ser[30538]: ACC: transaction answered: call_id=93EF8C43-C9E2-4E4C-997C-B1A4DA8FD137 at 10.200.3.173, totag=as113261f7, from=6494485566 <sip:6494485566 at voip.fast.co.nz>;tag=3875371437, i-uri=sip:03 at voip.fast.co.nz, method=INVITE, o-uri=sip:03 at 202.150.105.150:5070, fromtag=3875371437, code=200, to=<sip:03 at voip.fast.co.nz>;tag=as113261f7, uid=n/a, userpart=03
Apr 27 12:09:04 max /usr/local/sbin/ser[30541]: ACC: request acknowledged: call_id=93EF8C43-C9E2-4E4C-997C-B1A4DA8FD137 at 10.200.3.173, totag=as113261f7, from=6494485566 <sip:6494485566 at voip.fast.co.nz>;tag=3875371437, i-uri=sip:03 at 202.150.105.150:5070, method=ACK, o-uri=sip:03 at 202.150.105.150:5070, fromtag=3875371437, code=200, to=<sip:03 at voip.fast.co.nz>;tag=as113261f7, uid=n/a, userpart=03
Apr 27 12:09:33 max /usr/local/sbin/ser[30537]: ACC: transaction answered: call_id=93EF8C43-C9E2-4E4C-997C-B1A4DA8FD137 at 10.200.3.173, totag=as113261f7, from=6494485566 <sip:6494485566 at voip.fast.co.nz>;tag=3875371437, i-uri=sip:03 at 202.150.105.150:5070, method=BYE, o-uri=sip:03 at 202.150.105.150:5070, fromtag=3875371437, code=200, to=<sip:03 at voip.fast.co.nz>;tag=as113261f7, uid=n/a, userpart=03

Any ideas?

Thanks
Barry


  ----- Original Message ----- 
  From: Matt Schulte 
  To: Edgardo O. Gonzales II ; Kofi Obiri-Yeboah 
  Cc: serusers at lists.iptel.org 
  Sent: Wednesday, April 27, 2005 1:13 AM
  Subject: RE: [Serusers] ACC into mysql


  This particular config (I don't think?) won't log to a DB, additionally you need to setflag(1); somewhere in your config. We tried to set on "outbound" only originally and didn't have much luck so I set it near the top. To log to (my)sql you will additionally need to set another flag and setup similar mod params:


  modparam("acc", "db_url", "mysql://ser:serro@blah.mysql.haha/dbname")
  # Note flag 2, you will need to setflag(1); AND setflag(2);
  modparam("acc", "db_flag", 2)

  #Note this one logs all failed calls from the invite response, I find it useful
  modparam("acc", "failed_transactions", 1)

  # In your route config use something like the following

  # This is pretty much near the top, while ACC won't log reg's or INFO anyway, I just thought it'd be a little cleaner to have
  ...
  if (!method == "REGISTER" || !method == "INFO" ) {
                  setflag(1);
                  setflag(2);
  }
  ...

  # Doing the above ensure everything gets tagged including BYE's. A good reason why your BYE's may not get
  # tagged is possibly because record-route could be relaying the call before the flag gets set, just a thought..
    -----Original Message-----
    From: Edgardo O. Gonzales II [mailto:edgardo.g at pacific.net.ph] 
    Sent: Tuesday, April 26, 2005 1:29 AM
    To: Kofi Obiri-Yeboah
    Cc: serusers at lists.iptel.org
    Subject: RE: [Serusers] ACC into mysql
    Importance: High



    Thanks again for your help .. Here's my running ser.cfg
    Hope you can help me make my accounting work.. 

    thanks,
    ed

    ================================================================
    # ----------- global configuration parameters ------------------------

    #debug=3
    #fork=yes
    #log_stderror=no

    #debug=7
    #fork=no
    #log_stderror=yes

    check_via=no
    dns=no
    rev_dns=no
    #port=5060
    #children=4
    fifo="/tmp/ser_fifo"

    # ------------------ module loading ----------------------------------

    loadmodule "/usr/local/ser/lib/ser/modules/mysql.so"
    loadmodule "/usr/local/ser/lib/ser/modules/sl.so"
    loadmodule "/usr/local/ser/lib/ser/modules/tm.so"
    loadmodule "/usr/local/ser/lib/ser/modules/rr.so"
    loadmodule "/usr/local/ser/lib/ser/modules/maxfwd.so"
    loadmodule "/usr/local/ser/lib/ser/modules/usrloc.so"
    loadmodule "/usr/local/ser/lib/ser/modules/registrar.so"
    loadmodule "/usr/local/ser/lib/ser/modules/auth.so"
    loadmodule "/usr/local/ser/lib/ser/modules/auth_db.so"
    loadmodule "/usr/local/ser/lib/ser/modules/acc.so"

    # ----------------- setting module-specific parameters ---------------

    # -- usrloc params --

    modparam("usrloc", "db_mode", 1)
    modparam("usrloc", "db_url","mysql://ser:heslo@localhost/ser")

    # -- auth params --

    modparam("auth_db", "calculate_ha1", yes)
    modparam("auth_db", "password_column", "password")

    # -- rr params --

    modparam("rr", "enable_full_lr", 1)

    # -- acc params --

    modparam("acc", "log_level", 1)
    modparam("acc", "log_flag", 1)
    modparam("acc", "log_missed_flag", 3)

    # -------------------------  request routing logic -------------------

    alias=abc.com.ph

    # main routing logic

    route{
            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;
            };

            record_route();
            if (loose_route()) {
                    t_relay();
                    break;
            };

            if (uri=~"abc.com.ph") {
                    if (method=="REGISTER") {
                            if (!www_authorize("abc.com.ph", "subscriber")) {
                                    www_challenge("abc.com.ph", "0");
                                    break;
                            };

                            save("location");
                            break;
                    };

                    lookup("aliases");

                    if (!lookup("location")) {
                            sl_send_reply("404", "Not Found");
                            break;
                    };
            };
            if (!t_relay()) {
                    sl_reply_error();
            };

    }




    ================================================================
    At 10:55 AM 4/26/2005, Kofi Obiri-Yeboah wrote:

      I am assuming your question is if the record_route() function is a parameter for accounting? If that was your question then the answer is no. Generally you invoke record_route() to ensure acl acceptance on a gateway (i.e. all calls through that gateway)

        -----Original Message-----

        From: Edgardo O. Gonzales II [ mailto:edgardo.g at pacific.net.ph]

        Sent: Monday, April 25, 2005 6:22 PM

        To: Kofi Obiri-Yeboah

        Cc: serusers at lists.iptel.org

        Subject: RE: [Serusers] ACC into mysql



        Hi Kofi!


        got it.. thanks for immediate feedback .. however my accounting is not working.

        any parameters to be added to make it work..


        I have the following info already on my ser.cfg


        modparam("acc", "log_level", 1)

        modparam("acc", "log_flag", 1)

        modparam("acc", "log_missed_flag", 3)



        record_route(); -> its this a parameter for accounting


        thanks,

        ed



        At 08:32 AM 4/26/2005, Kofi Obiri-Yeboah wrote:

          I think the correct modparam statement should read as follows:

          modparam("acc", "db_url", "mysql://ser:heslo@localhost/ser")


            
          please note that "my" is required in front of sql


            
          and not:

          modparam("acc", "db_url", "sql://ser:heslo@localhost/ser") 


            -----Original Message----- 
            From: serusers-bounces at lists.iptel.org [ mailto:serusers-bounces at lists.iptel.org]On Behalf Of Edgardo O. Gonzales II 
            Sent: Monday, April 25, 2005 5:20 PM 
            To: serusers at lists.iptel.org 
            Subject: Re: [Serusers] ACC into mysql


            Hi all!

            Im also receiving this error message.

            Can somebody help us on how to make accounting work using mysql.

            thanks, 
            ed

            At 06:01 AM 4/26/2005, Leon Sun wrote: 
              Hi, 
              I am using 0.8.12 in Fedora 3. I tried to log account info into Mysql followed instruction from manual. I found, first, modparam("acc", "db_url", "sql://ser:heslo@localhost/ser") coudnlt work at all in ser.cfg. If I enabled in cfg file, it showed  Starting ser: ERROR: bad config file (1 errors)

              If I disabled it, SER worked fine but I couldnt see any record in acc table. 

              Would anyone suggest how to put call records into Mysql? 

              Thank you.





              # ----------- global configuration parameters ------------------------

              #debug=3         # debug level (cmd line: -dddddddddd) 
              #fork=yes 
              #log_stderror=no        # (cmd line: -E)

              /* Uncomment these lines to enter debugging mode 
              debug=7 
              fork=no 
              log_stderror=yes 
              */

              check_via=no    # (cmd. line: -v) 
              dns=no           # (cmd. line: -r) 
              rev_dns=no      # (cmd. line: -R) 
              #port=5060 
              #children=4 
              fifo="/tmp/ser_fifo"

              # ------------------ module loading ----------------------------------

              # Uncomment this if you want to use SQL database 
              loadmodule "/usr/lib/ser/modules/mysql.so"

              loadmodule "/usr/lib/ser/modules/acc.so" 
              loadmodule "/usr/lib/ser/modules/sl.so" 
              loadmodule "/usr/lib/ser/modules/tm.so" 
              loadmodule "/usr/lib/ser/modules/rr.so" 
              loadmodule "/usr/lib/ser/modules/maxfwd.so" 
              loadmodule "/usr/lib/ser/modules/usrloc.so" 
              loadmodule "/usr/lib/ser/modules/registrar.so"

              # Uncomment this if you want digest authentication 
              # mysql.so must be loaded ! 
              loadmodule "/usr/lib/ser/modules/auth.so" 
              loadmodule "/usr/lib/ser/modules/auth_db.so"


              # ----------------- setting module-specific parameters ---------------

              #modparam("acc", "db_url", "sql://ser:heslo@localhost/ser")

              # -- usrloc params --

              #modparam("usrloc", "db_mode",   0)

              # 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)



              modparam("acc","log_level",1) 
              modparam("acc","log_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()) { 
                              if (method=="BYE") { 
                                 setflag(1); 
                                 setflag(2); 
                              }

                              t_relay();

                              break; 
                      };

                      #labeled all transaction for accounting 
                      setflag(1); 
                      setflag(2);

                      if (method=="CANCEL"){ 
                                              t_relay(); 
                                          };

                      # (in case, it does not work, use the following command 
                      # with proper names and addresses in it)



                      if (uri==myself) {

                                      # This for PSTN destination

                                      if (uri=~"^sip:1")

                                      {       rewritehost("10.10.10.10"); 
                                              forward(10.10.10.10,5060); 
                                              break; 
                                      } 
                              if (method=="REGISTER") {

                              # Uncomment this if you want to use digest authentication 
                                      if (!www_authorize("sip.mycommunications.com", "subscriber")) { 
                                              www_challenge("sip.mycommunications.com", "0"); 
                                              break; 
                                      };

                                      save("location"); 
                                      break; 
                              };

                              # native SIP destinations are handled using our USRLOC DB 
                              if (!lookup("location")) { 
                                      sl_send_reply("404", "Not Found"); 
                                      break; 
                              }; 
                      }; 
                      # forward to current uri now; use stateful forwarding; that 
                      # works reliably even if we forward from TCP to UDP 
                      if (!t_relay()) { 
                              sl_reply_error(); 
                      };

              } 
              _______________________________________________ 
              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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20050427/fcde5756/attachment.htm>


More information about the sr-users mailing list