[Serusers] config / accounting help

Live_Wire_Net_Matt_Hess mhess at livewirenet.com
Thu Jan 29 10:12:25 CET 2004


I'm trying hard to get a handle on configuring ser but I think I need a few hints..

I thought I was doing the accounting right but the acc table never receives any information.. In my reading I thought by using setflag(x) where x was the same number as the db_flag number stateful accounting records would be automatic.. is this wrong..? 

Can someone clue me in as to what I'm doing wrong as I just can't get this.


Here's my config if it helps at all:

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

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

log_stderror=no         # (cmd line: -E)
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"
fifo_mode=0666

alias="voip.domain.com"

# ------------------ 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/maxfwd.so"
loadmodule "/usr/local/ser/lib/ser/modules/rr.so"
loadmodule "/usr/local/ser/lib/ser/modules/textops.so"
loadmodule "/usr/local/ser/lib/ser/modules/vm.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"
loadmodule "/usr/local/ser/lib/ser/modules/group.so"

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

modparam("voicemail", "db_url","mysql://ser:heslo@localhost/ser")
modparam("voicemail", "email_column", "email_address")
modparam("voicemail", "subscriber_table", "subscriber")
modparam("voicemail", "user_column", "username")
modparam("usrloc", "db_mode", 2)
modparam("auth_db", "calculate_ha1", yes)
modparam("auth_db", "password_column", "password")
modparam("rr", "enable_full_lr", 1)
modparam("acc", "log_level", 1)
modparam("acc", "log_flag", 1)
modparam("acc", "log_missed_flag", 2)
modparam("acc", "db_url", "mysql://ser:heslo@localhost/ser")
modparam("acc", "db_flag", 1)
modparam("acc", "db_missed_flag", 2)
modparam("group", "db_url", "mysql://ser:heslo@localhost/ser")
modparam("group", "table", "grp")
modparam("group", "user_column", "username")
modparam("group", "domain_column", "domain")
modparam("group", "group_column", "grp")
# If set to 1 then username at domain will be used for lookup, if
# set to 0 then only username will be used.
modparam("group", "use_domain", 0)


# -------------------------  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")) {
        t_reply("483","Too Many Hops");
        break;
};
if ( msg:len > max_len ) {
        t_reply("513", "Message too big");
        break;
};

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


# label all transactions for accounting
setflag(1);

# decide if callee has voicemail
if (is_user_in("Request-URI", "voicemail")) {
    setflag(4);
};

# decide if caller is allowed long distance
if (is_user_in("From", "ld")) {
    setflag(5);
};

# only process for our sip domain
if (uri==myself) {


# authorize and save location
if (method=="REGISTER") {
        if (!www_authorize("voip.domain.com", "subscriber")) {
                www_challenge("voip.domain.com", "1");
                sl_send_reply("404", "Incorrect Authorization");
                break;
        };
        save("location");
        break;
};

# lookup and handle local users first
if (lookup("location")) {
        t_relay();
        break;
} else {
        if ((method=="INVITE" || method=="ACK") && t_newtran() ) {
                # new call to offline user with voicemail flag
                if (isflagset(4)) {
                        route(4);
                        break;
                };
        route(5);
        break;
        };
};

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

} else {
t_reply("404","UA Configuration error - Incorrect domain");
break;
};

} # end main route

route[4] {

# Voicemail specific configuration - begin
if(method=="ACK" || method=="INVITE" || method=="BYE" || method=="REFER"){
        if(t_newtran()){
            t_reply("100","Trying -- just wait a minute !");
            if(method=="INVITE" || method=="REFER"){
                log("**************** vm start - begin ******************\n");
                if( uri =~ "conference" ){
                        if(!vm("/tmp/am_fifo","conference")){
                           log("could not contact conference server\n");
                           t_reply("500","could not contact conference server");
                        };
                } else if( uri =~ "echo" ){
                        if(!vm("/tmp/am_fifo","echo")){
                           log("could not contact echo\n");
                           t_reply("500","could not contact echo");
                        };
                } else {
                        if(!vm("/tmp/am_fifo","voicemail")){
                           log("could not contact voicemail\n");
                           t_reply("500","could not contact voicemail");
                        };
                };
                log("**************** vm start - end ******************\n");
                break;
            };

            if(method=="BYE"){
              log("**************** vm end/refer - begin ******************\n");              if(!vm("/tmp/am_fifo","bye")){
                log("could not contact the media server\n");
                t_reply("500","could not contact the media server");
              };
              log("**************** vm end/refer - end ********************\n");
              break;
            };
        } else {
            log("could not create new transaction\n");
            t_reply("500","could not create new transaction");
        };
};
# Voicemail specific configuration - end

}


route[5] {

# protect the pstn from having to bother with calls to our local blocks
if (uri=~"^sip:555") {
        t_reply("404","no such user");
        break;
};

# dial plan routing - long distance or local lata/tandem transit
if ((uri=~"^sip:1") && (isflagset(5))) {
        rewritehostport("172.16.0.7:5060");
        t_relay();
        break;
};

if (uri=~"^sip:7") {
        rewritehostport("172.16.0.5:5060");
        t_relay();
        break;
};

if (uri=~"^sip:3") {
        rewritehostport("172.16.0.5:5060");
        t_relay();
        break;
};

t_reply("404","Not Found");
break;

}






More information about the sr-users mailing list