[Serusers] ACC into mysql

Matt Schulte mschulte at netlogic.net
Tue Apr 26 15:13:11 CEST 2005


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 <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
<mailto:serusers-bounces at lists.iptel.org%5DOn>  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

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20050426/36e3b725/attachment.htm>


More information about the sr-users mailing list