[Serusers] config / accounting help

Jan Janak jan at iptel.org
Thu Jan 29 13:58:22 CET 2004


Try to put setflag(1) before the record_route() statement. This is just
to make sure that the flag is really set for all transactions.

If you still get no records, check out ser logs and try to find some
error message.

  Jan.

On 29-01 02:12, Live_Wire_Net_Matt_Hess wrote:
> 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;
> 
> }
> 
> 
> 
> _______________________________________________
> Serusers mailing list
> serusers at lists.iptel.org
> http://lists.iptel.org/mailman/listinfo/serusers




More information about the sr-users mailing list