I'm not sure what the question really is?  You compile the acc module with radius (edit the Makefile).  See the README in modules/acc and the radius guide on iptel.org.
Basically, you define the accounting flag (ex. 1) and define how to log and every time in ser.cfg you want a message to be accounted, you do setflag(1).  SER will send RADIUS accounting messages to port 1813 of your RADIUS server.
g-)
 
---- Original Message ----
From: Ozan Blotter
To: serusers@lists.iptel.org
Sent: Wednesday, May 11, 2005 12:31 PM
Subject: [Serusers] SER 0.9.0 on Mandrake 10.0 with 3rd Party Radius AAA

> Hi List,
>
> Is there anyone using "Advanced VoIP Billing Software", i have a few
> questions regarding to it :
>
> Both Billing Software and SER installed on same machine and LAN IP is
> 192.168.1.11 (test system)
>
> Linux Dist : Mandrake 10.0 (OS)
> Apache : Installed (base web server)
> Java : Installed (important for tomcat)
> Tomcat : Installed (important for web interface)
> Perl & PHP : Installed (and a few perl modules for various
> applications)
> MySql : Installed (advanced voip needs it and creates to database
> like "raddb" and "voipbilling")
> PostgreSql : Installed (no need for it at this time)
> Radiusclient-ng : Installed (it's needed for SER itself)
>
> I followed steps on
> http://www.iptel.org/ser/doc/ser_radius/ser_radius.html except
> freeradius server as normal. 
>
> I've installed SER from RPM's for Mandrake:
>
> ser-0.9.0-1mdk.i586.rpm
> ser-jabber-0.9.0-1mdk.i586.rpm
> ser-mysql-0.9.0-1mdk.i586.rpm
> ser-radius-0.9.0-1mdk.i586.rpm
>
> <<<<< SER.CFG >>>>>
>
> [root@localhost ser]# cat ser.cfg
> #
> # $Id: ser.cfg,v 1.27 2005/03/10 14:16:25 andrei Exp $
> #
> # simple quick-start config script
> #
>
> # ----------- global configuration parameters ------------------------
>
> #debug=3         # debug level (cmd line: -dddddddddd)
> #fork=yes
> #log_stderror=no        # (cmd line: -E)
> #memlog=5 # memory debug log level
> #log_facility=LOG_LOCAL0 # sets the facility used for logging (see
> syslog(3))
>
> /* Uncomment these lines to enter debugging mode
> 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"
> #user=ser
> #group=ser
> #fifo_user=ser # owner of the ser fifo
> #fifo_group=ser
> #fifo_mode=0660 # fifo's permissions
> #disable_core=yes #disables core dumping
> #open_fd_limit=1024 # sets the open file descriptors limit
> #mhomed=yes  # usefull for multihomed hosts, small performance penalty
> #disable_tcp=yes
> #tcp_accept_aliases=yes # accepts the tcp alias via option (see NEWS)
>
> # ------------------ module loading ----------------------------------
>
> 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"
> loadmodule "/usr/lib/ser/modules/textops.so"
> loadmodule "/usr/lib/ser/modules/auth.so"
> loadmodule "/usr/lib/ser/modules/acc.so"
> loadmodule "/usr/lib/ser/modules/auth_radius.so"
> loadmodule "/usr/lib/ser/modules/xlog.so"
>
> # ----------------- setting module-specific parameters ---------------
>
> modparam("auth_radius", "radius_config",
> "/usr/local/etc/radiusclient-ng/radiusclient.conf")
> modparam("auth_radius", "service_type", 15)
> modparam("rr", "enable_full_lr", 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
>         if (!method=="REGISTER") record_route();
>
>         # subsequent messages withing a dialog should take the
>         # path determined by record-routing
>         if (loose_route()) {
>                 # mark routing logic in request
>                 append_hf("P-hint: rr-enforced\r\n");
>                 route(1);
>                 break;
>         };
>
>         if (!uri==myself) {
>                 # mark routing logic in request
>                 append_hf("P-hint: outbound\r\n");
>                 route(1);
>                 break;
>         };
>
>         # if the request is for other domain use UsrLoc
>         # (in case, it does not work, use the following command
>         # with proper names and addresses in it)
>         if (uri==myself) {
>
>                 if (method=="REGISTER") {
>
> # Uncomment this if you want to use digest authentication
>                         if (!radius_www_authorize("")) {
>                                 www_challenge("","0");
>                                 break;
>                         };
>
>                         save("location");
>                         break;
>                 };
>
>                 lookup("aliases");
>                 if (!uri==myself) {
>                         append_hf("P-hint: outbound alias\r\n");
>                         route(1);
>                         break;
>                 };
>
>                 # native SIP destinations are handled using our
> USRLOC DB
>                 if (!lookup("location")) {
>                         sl_send_reply("404", "Not Found");
>                         break;
>                 };
>         };
>         append_hf("P-hint: usrloc applied\r\n");
>         route(1);
> }
>
> route[1]
> {
>         # send it out now; use stateful forwarding as it works
> reliably
>         # even for UDP2TCP
>         if (!t_relay()) {
>                 sl_reply_error();
>         };
> }
>
>
> <<<<< SER --- When I run it >>>>>
>
> [root@localhost root]# ser -c
>  0(2178) WARNING: fix_socket_list: could not rev. resolve 192.168.1.11
>  0(2178) WARNING: fix_socket_list: could not rev. resolve 192.168.1.11
> Listening on
>              udp: 127.0.0.1 [127.0.0.1]:5060
>              udp: 192.168.1.11 [192.168.1.11]:5060
>              tcp: 127.0.0.1 [127.0.0.1]:5060
>              tcp: 192.168.1.11 [192.168.1.11]:5060
> Aliases:
>              tcp: localhost:5060
>              udp: localhost:5060
>
> config file ok, exiting...
> [root@localhost root]
>
>
> <<<<< RADIUS --- When I run it >>>>>
>
> [root@localhost advradius]# ./runserver.sh
>
> Wed, 11 May 2005 13:05:58 095: FINE:
> <GlobalConf>
>         AuthenticationPort = 1812
>         AccountingPort = 1813
>         BindAddress = null
>         DictionaryFile = /billing/advradius/conf/dictionary
>         LogDirectory = /billing/advradius/log
>         LogLevel = FINE
>         ConsoleWrite = true
>         FileWrite = true
>         ConsiderSrcIPAsNASIP = false
> </GlobalConf>
>
>
> Wed, 11 May 2005 13:05:58 739: FINE:
> <ThreadPoolManager>
>         NumThreads = 10
>         MaximumWorkTime = 5000
>         KeepAliveTime = -1
>         ExpiryThreadSleepInterval = 5000
> </ThreadPoolManager>
>
>
> Wed, 11 May 2005 13:05:58 882: FINE:
> <Client DEFAULT>
>         NASIdentifier = default
>         Secret = mysecret
>         Realm = db
> </Client>
>
>
> Wed, 11 May 2005 13:05:58 917: FINE:
> <Realm db>
> 18AuthBy = [db]
>         AcctPolicy = BACK-UP
>         Accounting = [db, file_acct]
>         Session = db
> </Realm>
>
>
> Wed, 11 May 2005 13:05:59 708: FINE:
> <DBParams DEFAULT>
>         DriverName = org.gjt.mm.mysql.Driver
>         DBURL = jdbc:mysql://127.0.0.1:3306/voipbilling
>         UserName = root
>         UserPassword =
> </DBParams>
>
>
> Wed, 11 May 2005 13:05:59 967: FINE:
> <AuthBy db>
>         CheckList = [(5, (260, 0)) , (6, (0, 0)) ]
>         ReplyList = [(1, (101, 9)) , (2, (102, 9)) , (3, (103, 9)) ,
> (4, (6, 0)) , (7, (0, 0)) ]
>         BackStore = DB
>         PwdEncType = 0
>         SimultaneousLogin = 0
>         BackStore = DB
>         DBParams = null
>         AuthQuery = Select      CallAmnt, CallTime, ReturnCode,
> AuthServiceType, Password, OtherCheckItems, OtherReplyItems from
> TblActiveSessions where AuthConfID = $cisco-h323-conf-id and AuthType
> = @GetRequestNumber@  
>         AttribMapping = ColMapped
> </AuthBy>
>
>
> Wed, 11 May 2005 13:05:59 990: FINE:
> <Session db>
>         BackStore = DB
>         InsertSession = Insert INTO TblActiveSessions ( UserName,
> TimeStart, AuthType, CalledNumber, AuthCallingNumber,
> AuthNASIPAddress, AuthNASPort, AuthNASPortType, AuthConfID,
> CallOrigin, CallType, AcctSessionID ) values ($User-Name,
> $Event-Time, 3, $Called-Station-Id, $Calling-Station-Id,
> $NAS-IP-Address, $NAS-Port, $NAS-Port-Type, $cisco-h323-conf-id,
> $cisco-h323-call-origin, $cisco-h323-call-type, $Acct-Session-Id)   
>         DeleteSession = Delete from TblActiveSessions where
> AuthConfID = $cisco-h323-conf-id
>         CountSession = Select count(*) from TblActiveSessions where
> LoginName = $User-Name and AuthConfId=$cisco-h323-conf-id
>         BackStore = DB
> </Session>
>
>
> Wed, 11 May 2005 13:06:00 039: FINE:
> <Accounting db>
>         BackStore = DB
>         InsertAcct = Insert INTO TblCallsRad ( TimeClose, UserName,
> ActualDuration, CallingNumber, CalledNumber, ConfID, CallOrigin,
> CallType, AcctSessionID, NASIPAddress, BytesIn, BytesOut, DelayTime,
> AcctStatusType, RemoteAddress, RemoteGatewayID, TerminationCause, )
> values ( $Event-Time, $User-Name, $Acct-Session-Time:NUMBER,
> $Calling-Station-Id, $Called-Station-Id, $cisco-h323-conf-id,
> $cisco-h323-call-origin, $cisco-h323-call-type, $Acct-Session-Id,
> $NAS-IP-Address, $Acct-Input-Octets:NUMBER,
> $Acct-Output-Octets:NUMBER, $Acct-Delay-Time:NUMBER,
> $Acct-Status-Type, $cisco-h323-remote-address, $cisco-h323-gw-id,
> $cisco-h323-disconnect-cause, )         
>         QueueLength = 5000
>         RecordAcctStart = FALSE
>         DBParams = null
>         InsertCheckpointAcct = null
> </Accounting>
>
>
> Wed, 11 May 2005 13:06:00 070: FINE:
> <Accounting file_acct>
>         BackStore = FILE
>         InsertAcct = null
>         QueueLength = 5000
>         RecordAcctStart = TRUE
>
>         FileNameFormat = yyyy-MM-dd-HH.csv
>         AcctDirectory = AcctLog
> </Accounting>
>
> Your evaluation license will expire in 25 day(s).
>
> Wed, 11 May 2005 13:06:00 137: INFO: Listener started at: 1812
>
> Wed, 11 May 2005 13:06:00 143: INFO: Listener started at: 1813
> Started Successfully <<<
>
> Anyone have any idea how to implement this valuable software in SER
> because we're gonna pay for it.
>
>
>
> _______________________________________________
> Serusers mailing list
> serusers@lists.iptel.org
> http://lists.iptel.org/mailman/listinfo/serusers