Guys,

 

I’m new with ser, but it seem great so far. The customer I’m working with want to get reliable CDR’s from his SER SIP Server. He also has pre-paid customers on it so it need to check to see if they have monies to make the call, and when the call is done, it need to calculate and deduct the cost of the call from their balance.

 

I have been using exec_msg command to try and do this, but I been having a hard time getting it to work right because I get more then one invite’s and ack’s. Also sometime they miss-dial and I only get Invite’s.

 

So I guess my is, are exec_msg’s the right way to go? Is anyone else doing the same thing, if so could you share you config with me?

 

-Greg

Voipin.com

 

#

# $Id: ser.cfg,v 1.21.2.1 2003/07/30 16:46:18 andrei Exp $

#

# simple quick-start config script

#

 

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

 

debug=4         # debug level (cmd line: -dddddddddd)

fork=yes

log_stderror=no # (cmd line: -E)

 

/* Uncomment these lines to enter debugging mode

debug=7

fork=yes

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"

mhomed=yes

 

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

 

loadmodule "/usr/local/lib/ser/modules/sl.so"

loadmodule "/usr/local/lib/ser/modules/tm.so"

loadmodule "/usr/local/lib/ser/modules/rr.so"

loadmodule "/usr/local/lib/ser/modules/maxfwd.so"

loadmodule "/usr/local/lib/ser/modules/usrloc.so"

loadmodule "/usr/local/lib/ser/modules/registrar.so"

loadmodule "/usr/local/lib/ser/modules/exec.so"

loadmodule "/usr/local/lib/ser/modules/mysql.so"

loadmodule "/usr/local/lib/ser/modules/auth.so"

loadmodule "/usr/local/lib/ser/modules/textops.so"

loadmodule "/usr/local/lib/ser/modules/auth_db.so"

loadmodule "/usr/local/lib/ser/modules/uri.so"

 

#loadmodule "/usr/local/lib/ser/modules/group.so"

 

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

 

# -- usrloc params --

modparam("usrloc","db_mode",2)

modparam("usrloc", "timer_interval", 30)

modparam("usrloc","db_url", "sql://ser:dc74uc@localhost/Tigris")

 

# -- auth params --

modparam("auth_db", "db_url", "sql://ser:dc74uc@localhost/Tigris")

 

# -- rr params --

# add value to ;lr param to make some broken UAs happy

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

 

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

 

# main routing logic

 

route{

 

 

  /* ********* ROUTINE CHECKS  ********************************** */

  # Take take of Max hops

  if (!mf_process_maxfwd_header("10")) {

    sl_send_reply("483","Too Many Hops");

    break;

  };

 

  # Too big for a SIP msg.

  if (len_gt( max_len )) {

    sl_send_reply("513", "Message too big");

    break;

  };

 

  # Authorize

  if (method=="REGISTER")

  {

    if (!www_authorize("64.81.40.173", "subscriber")) {

      www_challenge("64.81.40.173", "0");

      log(1, "BAD REGISTER\n");

      break;

    };

    save("location");

    break;

  };

 

  exec_msg('`/root/bin/logcdr.pl`');

 

  loose_route();

  if (method=="INVITE")

  {

    record_route();

 

    if (!exec_msg('`/root/bin/test.pl`'))

    {

       t_reply("404", "Low Funds");

       break;

    };

  };

 

 

 if (uri =~"^sip:[0-1]") {

 

    if (uri =~"^sip:1666") {

      rewritehostport("216.91.9.42:5060");

      if (!t_relay()) { sl_reply_error(); };

      break;

    };

 

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

      rewritehostport("128.121.29.99:5060");

      if (!t_relay()) { sl_reply_error(); };

      break;

    };

 

    if (uri =~"^sip:011") {

      rewritehostport("128.121.29.99:5060");

      if (!t_relay()) { sl_reply_error(); };

      break;

    };

 

    if (uri =~"^sip:00") {

      strip(2);

      prefix("011");

      rewritehostport("128.121.29.99:5060");

      if (!t_relay()) { sl_reply_error(); };

      break;

    };

 

  } else {

    if (!lookup("location")) {

      sl_send_reply("404", "User Not Found");

      log("SER: Dest User Not in location table.\n");

      break;

    };

    if (!t_relay()) { sl_reply_error(); };

    break;

  };

}