[Serusers] config / accounting help

Jan Janak jan at iptel.org
Sat Jan 31 02:19:28 CET 2004


Make sure that BYE really passes through ser. If not then the phones are
broken because you have record-routing enabled. Anyway, SIP message
dumps would help to diagnose the problem.
 
 Jan.

On 30-01 14:30, Matt Hess wrote:
> Below is the latest config of mine solving all the t_* errors.. and 
> thanks to the ser list for the help so far.. But one problem still 
> remains. When a person hangs up there is no end of call logged and the 
> phone takes a little while to disconnect and the other phone never hangs 
> up.. nothing is in the error logs about the disconnect either.
> 
> 
> # ----------- global configuration parameters ------------------------
> 
> debug=7		        # 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.livewirenet.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/acc.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/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", 1)
> 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", 11)
> modparam("acc", "db_missed_flag", 12)
> modparam("acc", "failed_transactions", 1)
> 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;
> };
> 
> # label all transactions for accounting
> setflag(11);
> setflag(12);
> 
> record_route();
> if (loose_route()) {
> 	t_relay();
> 	break;
> };
> 
> if (!search("(f|From): .*@voip.livewirenet.com")) {
> 	sl_send_reply("404","Not Found");
> 	break;
> };
> 
> # 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.livewirenet.com", "subscriber")) {
> 			www_challenge("voip.livewirenet.com", "1");
> 			break;
> 		};
> 		save("location");
> 		break;
> 	};
> 
> 	if (!lookup("location")) {
> 		# if we can't lookup the location and the callee has 
> 		voicemail
> 		# we need not worry about any call routing and should dump
> 		# the call directly to voicemail
> 		if (isflagset(4)) {
> 			route(4);
> 			break;
> 		};
> 
> 		# We have made sure that voicemail for a local user isn't an
> 		# issue.. now process like a normal call
> 		route(5);
> 		break;
> 
> 	} else { # found in userloc
> 		t_relay();
> 		break;
> 	};
> 
> }; # end uri==myself
> 
> } # 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 out local blocks
> if (uri=~"^sip:303993") {
> 	sl_send_reply("404", "no such user");
> 	break;
> };
> 
> # dial plan routing - long distance or local lata/tandem transit
> if (uri=~"^sip:1") {
> 	if (isflagset(5)) {
> 		rewritehostport("172.16.0.7:5060");
> 		t_relay();
> 		break;
> 	} else {
> 		sl_send_reply("500","Not allowed to call long distance");
> 		break;
> 	};
> };
> 
> if (uri=~"^sip:720") {
> 	rewritehostport("172.16.0.5:5060");
> 	t_relay();
> 	break;
> };
> 
> if (uri=~"^sip:303") {
> 	rewritehostport("172.16.0.5:5060");
> 	t_relay();
> 	break;
> };
> 
> # should not have gotten here
> sl_reply_error();
> break;
> 
> }
> 
> 
> 
> Jiri Kuthan wrote:
> 
> >At 12:08 AM 1/30/2004, Matt Hess wrote:
> >
> >>I sent the complete cfg file earlier and didn't want to duplicate it if 
> >>it was unnecessary.. 
> >
> >
> >ignore my previous request to resent the config file -- I didn't realize
> >it is the same one. Anyhow, my previous email should have answered your
> >questions.
> >
> >
> >>and as I've been reading.. statefull ransactions are required for acc .. 
> >>yes?
> >
> >
> >It depends on what you want to do. Typically, you wish to account on 
> >result of
> >proxied transactions -- that's why you need state: you keep original 
> >requests
> >in memory, correlate them with replies and generate a report eventually 
> >which
> >uses information from both stored request and received replies.
> >
> >In your script however, you generate local replies if some undesirable 
> >conditions
> >occur (Incorrect domain, etc.) It does not seem reasonable to flood 
> >accoutning
> >with reports on all localy denied request. I better suggest generating all
> >local negative replies statelessly -- that scales a way better.
> >
> >-jiri 
> 
> _______________________________________________
> Serusers mailing list
> serusers at lists.iptel.org
> http://lists.iptel.org/mailman/listinfo/serusers




More information about the sr-users mailing list