Hello Romain,

thanks for telling us about this.
It is cause by a debug print message accidentally left in AuthLog SQL.

I have attached a new version of AuthLogSQL.pm that should fix that problem.

Cheers.

On Mon, 3 Jun 2002 18:56, Romain Vergniol wrote:
> I've upgraded to Radiator 3.1 and the problem is fixed.
>
>
> After the upgrade, when I start radiusd from the console, lots of messages
> apear as said in a previous mail
> (http://www.open.com.au/archives/radiator/2002-05/msg00214.html).
> Ex:
> AuthLogSQL log Radius::AuthLogSQL=HASH(0x84982e0) 0
> Radius::Radius=HASH(0x87691d4)
> AuthLogSQL log Radius::AuthLogSQL=HASH(0x84982e0) 0
> Radius::Radius=HASH(0x878052c)
> AuthLogSQL log Radius::AuthLogSQL=HASH(0x84982e0) 0
> Radius::Radius=HASH(0x8788be8)
> AuthLogSQL log Radius::AuthLogSQL=HASH(0x84982e0) 0
> Radius::Radius=HASH(0x8780660)
> ...
>
> Is there a way to avoid this ?
>
> Thanks again.
>
> Romain
>
>
> ----- Original Message -----
> From: "Mike McCauley" <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>; "Romain Vergniol" <[EMAIL PROTECTED]>
> Cc: "Charles Delorme" <[EMAIL PROTECTED]>; "Mailing-List Radiator"
> <[EMAIL PROTECTED]>
> Sent: Saturday, June 01, 2002 1:52 AM
> Subject: Re: (RADIATOR) Radiator+MySQL problem
>
> > Hello Romain,
> >
> > this is almost certainly the SQL Trace 4 infinite recursion problem that
>
> was
>
> > fixed in version 3.1.
> >
> > Cheers.
> >
> > On Sat, 1 Jun 2002 08:44, Hugh Irvine wrote:
> > > Salut Romain -
> > >
> > > Quel plaisir de pouvoir regarder le tennis a Roland-Garros en ce
> > > moment!
> > >
> > > :-)
> > >
> > > (ayant vecu a deux pas du stade ....)
> > >
> > > I have copied Mike on this mail, but have you tested the same scenario
>
> with
>
> > > Radiator 3.1? I know there has been some work done in this area.
> > >
> > > Please let me know if 3.1 fixes the problem.
> > >
> > > If not, please send me the config and trace 4 again for the new
> > > version.
> > >
> > > A+
> > >
> > > Hugues
> > >
> > > On Fri, 31 May 2002 20:58, Romain Vergniol wrote:
> > > > Hello Hugh, Mike, everyone,
> > > >
> > > > I use Radiator 3.0 together with MySQL on Slackware 8.0 servers.
> > > > I noticed that Radiator badly manages the loss of MySQL server ; in
> > > > certain cases,
> > > > Radiator consumes all available memory then crashes down.
> > > >
> > > > I set up a test server and it was easy to reproduce the problem, here
>
> is
>
> > > > the scenario :
> > > >
> > > >     - start MySQL server
> > > >     - start Radiator
> > > >     - start radpwtst with thousands iterations to have the time to do
>
> our
>
> > > > tests
> > > >     - shutdown MySQL server
> > > >
> > > > At this moment, Radiator starts to consume all available memory until
>
> it
>
> > > > crashes (restarting Mysql server doesn't change anything...).
> > > > I tried to increase or reduce 'FailureBackoffTime' but it doesn't
> > > > seem
>
> to
>
> > > > change anything.
> > > >
> > > > Shutting down MySQL when no radius request is sent doesn't  reproduce
>
> the
>
> > > > problem.
> > > >
> > > > Is my config file OK ?
> > > >
> > > > Here is a trace 4 debug with the config file
> > > >
> > > >
> > > > Romain Vergniol
> > > > CEGEDIM
> > > > France
> > > >
> > > > PS : Radiator is a great product !    :)
> > > >
> > > >
> > > > =====================================================================
> > > >=
> > > >
> > > > Trace 4 debug:
> > > >
> > > > *** Received from 172.xxxxxxx port 1074 ....
> > > > Code:       Access-Request
> > > > Identifier: 219
> > > > Authentic:  1234567890123456
> > > > Attributes:
> > > >         User-Name = "[EMAIL PROTECTED]"
> > > >         Service-Type = Framed
> > > >         NAS-IP-Address = 172.xxxxxx
> > > >         NAS-Port = 1234
> > > >         Called-Station-Id = "0000"
> > > >         Calling-Station-Id = "987654321"
> > > >         NAS-Port-Type = Async
> > > >         Framed-IP-Address = 172.xxxxxxx
> > > >         User-Password =
> > > > "<170>n<243>=<28><251><161><238>4<31><131>"B<18><249><132>"
> > > >
> > > > Fri May 31 11:50:46 2002: DEBUG: Handling request with Handler
> > > > 'Request-Type=Access-Request'
> > > > Fri May 31 11:50:46 2002: DEBUG:  Deleting session for
> > > > [EMAIL PROTECTED], 172.xxxxxx, 1234
> > > > Fri May 31 11:50:46 2002: DEBUG: Handling with Radius::AuthGROUP
> > > > Fri May 31 11:50:46 2002: DEBUG: Handling with Radius::AuthSQL
> > > > Fri May 31 11:50:46 2002: DEBUG: Handling with Radius::AuthSQL:
> > > > Fri May 31 11:50:46 2002: DEBUG: Query is: select S.PASSWORD,
> > > > S.CHECKATTR, S.REPLYATTR from SUBSCRIBERS as S, REL_PROFCOM as P
> > > > where S.USERNAME='[EMAIL PROTECTED]' and
>
> S.NASIDENTIFIER='172.xxxxxx'
>
> > > > and S.PROFCOM=P.ID and P.NUM='0000'
> > > >
> > > > Fri May 31 11:50:46 2002: DEBUG: Radius::AuthSQL looks for match with
> > > > [EMAIL PROTECTED]
> > > > Fri May 31 11:50:46 2002: DEBUG: Expiration date converted to:
>
> 1798758000
>
> > > > Fri May 31 11:50:46 2002: DEBUG: Radius::AuthSQL ACCEPT:
> > > > Fri May 31 11:50:46 2002: DEBUG: Access accepted for
> > > > [EMAIL PROTECTED]
> > > > Fri May 31 11:50:46 2002: DEBUG: Packet dump:
> > > > *** Sending to 172.xxxxxxxxport 1074 ....
> > > > Code:       Access-Accept
> > > > Identifier: 219
> > > > Authentic:  1234567890123456
> > > > Attributes:
> > > >         Framed-IP-Address = 172.xxxxxxxxx
> > > >         Service-Type = Framed
> > > >         cisco-avpair = "ip:dns-servers=xxxxxxx yyyyyyyyyyyyyy"
> > > >         cisco-avpair = "ip:inacl#1=permit ip any 172.xxxxxxxxx/16"
> > > >         cisco-avpair = "ip:inacl#2=permit ip any host
>
> xxxxxxxxxxxxxxxx"
>
> > > >         cisco-avpair = "ip:inacl#3=permit ip any host yyyyyyyyyyyy"
> > > >         cisco-avpair = "ip:inacl#4=deny all any any"
> > > >         Framed-Protocol = PPP
> > > >
> > > > Fri May 31 11:50:46 2002: DEBUG: Packet dump:
> > > >
> > > > #------------------------------------------------
> > > > # Up to here, everything is OK
> > > > # MySQL shuts down now
> > > > #------------------------------------------------
> > > >
> > > >
> > > > *** Received from 172.xxxxxxxxx port 1074 ....
> > > > Code:       Accounting-Request
> > > > Identifier: 220
> > > > Authentic:
> > > > <212><29><155>$\<246><202><193><141><206><12><148><15><138><210>Q
> > > > Attributes:
> > > >         User-Name = "[EMAIL PROTECTED]"
> > > >         Service-Type = Framed
> > > >         NAS-IP-Address = 172.xxxxxxx
> > > >         NAS-Port = 1234
> > > >         NAS-Port-Type = Async
> > > >         Acct-Session-Id = "00001400"
> > > >         Acct-Status-Type = Start
> > > >         Called-Station-Id = "0000"
> > > >         Calling-Station-Id = "987654321"
> > > >         Framed-IP-Address = 172xxxxxxx
> > > >         Acct-Delay-Time = 0
> > > >
> > > > Fri May 31 11:50:46 2002: DEBUG: Handling request with Handler
> > > > 'Request-Type=Accounting-Request'
> > > > Fri May 31 11:50:46 2002: DEBUG:  Adding session for
> > > > [EMAIL PROTECTED], 172.xxxxxx, 1234
> > > > Fri May 31 11:50:46 2002: DEBUG: Handling with Radius::AuthSQL
> > > > Fri May 31 11:50:46 2002: DEBUG: Handling accounting with
>
> Radius::AuthSQL
>
> > > > Fri May 31 11:50:46 2002: DEBUG: do query is: insert into ACCOUNTING
> > > >                 (USERNAME, TIME_STAMP, ACCTSTATUSTYPE, ACCTDELAYTIME,
> > > > ACCTSESSIONID, NASIDENTIFIER, FRAMEDIPADDRESS,
>
> ASCEND_CALLED_STATION_ID,
>
> > > > ASCEND_CALLING_STATION_ID, FORMATTED_DATE)
> > > >                 values
> > > >                 ('[EMAIL PROTECTED]', 1022838646, 'Start',
> > > > 0, '00001400', '172.xxxxxxxx', '172.xxxxxxx', '0000', '987654321',
> > > > '2002-05-31.11.50.46')
> > > >
> > > > DBD::mysql::db do failed: MySQL server has gone away at
> > > > /usr/lib/perl5/site_perl/Radius/SqlDb.pm line 218.
> > > > Fri May 31 11:50:46 2002: ERR: do failed for 'insert into ACCOUNTING
> > > >                 (USERNAME, TIME_STAMP, ACCTSTATUSTYPE, ACCTDELAYTIME,
> > > > ACCTSESSIONID, NASIDENTIFIER, FRAMEDIPADDRESS,
>
> ASCEND_CALLED_STATION_ID,
>
> > > > ASCEND_CALLING_STATION_ID, FORMATTED_DATE)
> > > >                 values
> > > >                 ('[EMAIL PROTECTED]', 1022838646, 'Start',
> > > > 0, '00001400', '172.xxxxxx', '172.xxxxxxxx', '0000', '987654321',
> > > > '2002-05-31.11.50.46')': MySQL server has gone away
> > > > DBD::mysql::db do failed: MySQL server has gone away at
> > > > /usr/lib/perl5/site_perl/Radius/SqlDb.pm line 218.
> > > > DBD::mysql::db do failed: MySQL server has gone away at
> > > > /usr/lib/perl5/site_perl/Radius/SqlDb.pm line 218.
> > > > DBD::mysql::db do failed: MySQL server has gone away at
> > > > /usr/lib/perl5/site_perl/Radius/SqlDb.pm line 218.
> > > > DBD::mysql::db do failed: MySQL server has gone away at
> > > > /usr/lib/perl5/site_perl/Radius/SqlDb.pm line 218.
> > > > DBD::mysql::db do failed: MySQL server has gone away at
> > > > /usr/lib/perl5/site_perl/Radius/SqlDb.pm line 218.
> > > > DBD::mysql::db do failed: MySQL server has gone away at
> > > > /usr/lib/perl5/site_perl/Radius/SqlDb.pm line 218.
> > > > DBD::mysql::db do failed: MySQL server has gone away at
> > > > /usr/lib/perl5/site_perl/Radius/SqlDb.pm line 218.
> > > > DBD::mysql::db do failed: MySQL server has gone away at
> > > > /usr/lib/perl5/site_perl/Radius/SqlDb.pm line 218.
> > > > DBD::mysql::db do failed: MySQL server has gone away at
> > > > /usr/lib/perl5/site_perl/Radius/SqlDb.pm line 218.
> > > > DBD::mysql::db do failed: MySQL server has gone away at
> > > > /usr/lib/perl5/site_perl/Radius/SqlDb.pm line 218.
> > > > DBD::mysql::db do failed: MySQL server has gone away at
> > > > /usr/lib/perl5/site_perl/Radius/SqlDb.pm line 218.
> > > > DBD::mysql::db do failed: MySQL server has gone away at
> > > > /usr/lib/perl5/site_perl/Radius/SqlDb.pm line 218.
> > > > DBD::mysql::db do failed: MySQL server has gone away at
> > > > /usr/lib/perl5/site_perl/Radius/SqlDb.pm line 218.
> > > > DBD::mysql::db do failed: MySQL server has gone away at
> > > > /usr/lib/perl5/site_perl/Radius/SqlDb.pm line 218.
> > > > DBD::mysql::db do failed: MySQL server has gone away at
> > > > /usr/lib/perl5/site_perl/Radius/SqlDb.pm line 218.
> > > > DBD::mysql::db do failed: MySQL server has gone away at
> > > > /usr/lib/perl5/site_perl/Radius/SqlDb.pm line 218.
> > > > DBD::mysql::db do failed: MySQL server has gone away at
> > > > /usr/lib/perl5/site_perl/Radius/SqlDb.pm line 218.
> > > > DBD::mysql::db do failed: MySQL server has gone away at
> > > > /usr/lib/perl5/site_perl/Radius/SqlDb.pm line 218.
> > > > DBD::mysql::db do failed: MySQL server has gone away at
> > > > /usr/lib/perl5/site_perl/Radius/SqlDb.pm line 218.
> > > > DBD::mysql::db do failed: MySQL server has gone away at
> > > > /usr/lib/perl5/site_perl/Radius/SqlDb.pm line 218.
> > > > DBD::mysql::db do failed: MySQL server has gone away at
> > > > /usr/lib/perl5/site_perl/Radius/SqlDb.pm line 218.
> > > > Out of memory!
> > > > Attempt to free unreferenced scalar during global destruction.
>
> =========================================================================
>
> > > >==
> > > >
> > > > radius.cfg of the test server
> > > >
> > > > Foreground
> > > > LogStdout
> > > > LogDir          /usr/local/etc/radius
> > > > DbDir           /usr/local/etc/radius
> > > >
> > > > PidFile /usr/local/etc/radius/radius.pid
> > > >
> > > > BindAddress 172.xxxxxxxxxxx
> > > > AuthPort 1812
> > > > AcctPort 1813
> > > >
> > > > <ClientListSQL>
> > > >         DBSource        dbi:mysql:xxxxxxxxxxxxxx
> > > >         DBUsername      xxxxxxxxxxxxx
> > > >         DBAuth          xxxxxxxx
> > > >         FailureBackoffTime 20
> > > >
> > > > </ClientListSQL>
> > > >
> > > > <Client DEFAULT>
> > > > Secret xxxxxxxxxxxxxxx
> > > > </Client>
> > > >
> > > > #<AddressAllocator SQL>
> > > > #       Identifier SQLAllocator
> > > > #
> > > > #       DBSource        dbi:mysql:xxxxxxxxxxxxxx
> > > > #        DBUsername      xxxxxxxxxxxxx
> > > > #        DBAuth          xxxxxxxx
> > > > #       FailureBackoffTime 5
> > > > #
> > > > #       #DefaultLeasePeriod     86400
> > > > #       #LeaseReclaimInterval 86400
> > > > #       FindQuery select TIME_STAMP, YIADDR, SUBNETMASK, DNSSERVER
>
> from
>
> > > > RADPOOL where POOL='%0' and STATE=0 limit 1
> > > > #
> > > > #       AllocateQuery update RADPOOL set STATE=1, TIME_STAMP=%0,
> > > > EXPIRY=%1, USERNAME='%2' where YIADDR='%3'
> > > > #
> > > > #       DeallocateQuery update RADPOOL set STATE=0, TIME_STAMP=%t
>
> where
>
> > > > YIADDR='%0'
> > > > #
> > > > #</AddressAllocator>
> > > >
> > > > <AuthBy GROUP>
> > > >         Identifier AUTH_USER
> > > > #       AuthByPolicy ContinueWhileAccept
> > > >         <AuthBy SQL>
> > > >                 Identifier AUTH_USER
> > > >
> > > >                 DBSource        dbi:mysql:xxxxxxxxxxxxxx
> > > >             DBUsername      xxxxxxxxxxxxx
> > > >             DBAuth          xxxxxxxx
> > > >
> > > >                 FailureBackoffTime 20
> > > >
> > > >                 AuthSelect select PASSWORD, CHECKATTR, REPLYATTR from
> > > > SUBSCRIBERS where USERNAME='%n' limit 1
> > > >                 AuthColumnDef 0, User-Password, check
> > > >                 AuthColumnDef 1, GENERIC, check
> > > >                 AuthColumnDef 2, GENERIC, reply
> > > >
> > > >         </AuthBy SQL>
> > > > #       <AuthBy DYNADDRESS>
> > > > #                Allocator       SQLAllocator
> > > > #                #MapAttribute   yiaddr, Framed-IP-Address
> > > > #                #MapAttribute   subnetmask, Framed-IP-Netmask
> > > > #                StripFromReply  PoolHint
> > > > #        </AuthBy>
> > > > </AuthBy>
> > > >
> > > >
> > > > <AuthBy GROUP>
> > > >         Identifier AUTH_USER_NAS
> > > > #        AuthByPolicy ContinueWhileAccept
> > > >         <AuthBy SQL>
> > > >              DBSource        dbi:mysql:xxxxxxxxxxxxxx
> > > >             DBUsername      xxxxxxxxxxxxx
> > > >             DBAuth          xxxxxxxx
> > > >
> > > >                 FailureBackoffTime 20
> > > >
> > > >                 #AuthSelect select PASSWORD, CHECKATTR, REPLYATTR
> > > > from SUBSCRIBERS where USERNAME='%n' and NASIDENTIFIER='%N'
> > > >
> > > >                 AuthSelect select S.PASSWORD, S.CHECKATTR,
> > > > S.REPLYATTR
>
> \
>
> > > >                 from SUBSCRIBERS as S, REL_PROFCOM as P \
> > > >                 where S.USERNAME='%n' and S.NASIDENTIFIER='%N' \
> > > >                 and S.PROFCOM=P.ID \
> > > >                 and P.NUM='%{Called-Station-Id}'
> > > >
> > > >                 AuthColumnDef 0, User-Password, check
> > > >                 AuthColumnDef 1, GENERIC, check
> > > >                 AuthColumnDef 2, GENERIC, reply
> > > >
> > > >         </AuthBy SQL>
> > > > #        <AuthBy DYNADDRESS>
> > > > #                Allocator       SQLAllocator
> > > > #               #MapAttribute   yiaddr, Ascend-Assign-IP-Pool
> > > > #                MapAttribute   yiaddr, Framed-IP-Address
> > > > #                MapAttribute   subnetmask, Framed-IP-Netmask
> > > > #                StripFromReply  PoolHint
> > > > #        </AuthBy>
> > > > </AuthBy>
> > > >
> > > >
> > > > <AuthBy GROUP>
> > > >         Identifier AUTH_USER_NAS_CSID
> > > >         NoDefault
> > > >         AuthByPolicy ContinueWhileAccept
> > > >         <AuthBy SQL>
> > > >                DBSource        dbi:mysql:xxxxxxxxxxxxxx
> > > >             DBUsername      xxxxxxxxxxxxx
> > > >             DBAuth          xxxxxxxx
> > > >
> > > >                 FailureBackoffTime 20
> > > >
> > > >                 AuthSelect select S.PASSWORD, S.CHECKATTR,
> > > > S.REPLYATTR
>
> \
>
> > > >                 from SUBSCRIBERS as S, REL_PROFCOM as P \
> > > >                 where S.USERNAME='%n' and S.NASIDENTIFIER='%N' \
> > > >                 and S.PROFCOM=P.ID \
> > > >                 and P.NUM='%{Called-Station-Id}'
> > > >
> > > >                 AuthColumnDef 0, User-Password, check
> > > >                 AuthColumnDef 1, GENERIC, check
> > > >                 AuthColumnDef 2, GENERIC, reply
> > > >
> > > >          </AuthBy>
> > > >
> > > > </AuthBy>
> > > >
> > > >
> > > >
> > > >
> > > > <AuthBy SQL>
> > > >
> > > >         Identifier ACCT
> > > >
> > > >         DBSource        dbi:mysql:xxxxxxxxxxxxxx
> > > >         DBUsername      xxxxxxxxxxxxx
> > > >         DBAuth          xxxxxxxx
> > > >
> > > >
> > > >         AccountingTable ACCOUNTING
> > > >         AcctColumnDef   USERNAME,User-Name
> > > >         AcctColumnDef   REALM,User-Realm
> > > >         AcctColumnDef   TIME_STAMP,Timestamp,integer
> > > >         AcctColumnDef   ACCTSTATUSTYPE,Acct-Status-Type
> > > >         AcctColumnDef   ACCTDELAYTIME,Acct-Delay-Time,integer
> > > >         AcctColumnDef   ACCTINPUTOCTETS,Acct-Input-Octets,integer
> > > >         AcctColumnDef   ACCTOUTPUTOCTETS,Acct-Output-Octets,integer
> > > >         AcctColumnDef   ACCTSESSIONID,Acct-Session-Id
> > > >         AcctColumnDef   ACCTSESSIONTIME,Acct-Session-Time,integer
> > > >         AcctColumnDef
> > > > ASCEND_DISCONNECT_CAUSE,Ascend-Disconnect-Cause,integer
> > > >         AcctColumnDef   ACCTTERMINATECAUSE,Acct-Terminate-Cause
> > > >         AcctColumnDef   NASIDENTIFIER,%N,formatted
> > > >         AcctColumnDef   FRAMEDIPADDRESS,Framed-IP-Address
> > > >         AcctColumnDef
> > > > ASCEND_CONNECT_PROGRESS,Ascend-Connect-Progress,integer
> > > >         AcctColumnDef   ASCEND_DATA_RATE,Ascend-Data-Rate,integer
> > > >         AcctColumnDef
> > > > ASCEND_PRE_INPUT_OCTETS,Ascend-Pre-Input-Octets,integer
> > > >         AcctColumnDef
> > > > ASCEND_PRE_OUTPUT_OCTETS,Ascend-Pre-Output-Octets,integer
> > > >         AcctColumnDef
> > > > ASCEND_PRESESSION_TIME,Ascend-PreSession-Time,integer
> > > >         AcctColumnDef   ASCEND_XMIT_RATE,Ascend-Xmit-Rate,integer
> > > >         AcctColumnDef   ASCEND_CALLED_STATION_ID,Called-Station-Id
> > > >         AcctColumnDef   ASCEND_CALLING_STATION_ID,Calling-Station-Id
> > > >         AcctColumnDef   FRAMED_PROTOCOL,Framed-Protocol,integer
> > > >         AcctColumnDef   FORMATTED_DATE,%Y-%m-%d.%H.%M.%S,formatted
> > > >
> > > >         AcctFailedLogFileName /usr/local/etc/radius/missedaccounting
> > > >
> > > >
> > > > </AuthBy>
> > > >
> > > > <AuthLog SQL>
> > > >         Identifier AUTHLOG
> > > >
> > > >         DBSource        dbi:mysql:xxxxxxxxxxxxx
> > > >         DBUsername      xxxxxxxxx
> > > >         DBAuth          xxxxxxxxxxxxxxxxx
> > > >         FailureBackoffTime 20
> > > >
> > > >         LogSuccess 1
> > > >         LogFailure 1
> > > >         Table RADAUTHLOG_1
> > > >         SuccessQuery INSERT into RADAUTHLOG_1 values("%t","%n" , "%N"
>
> ,
>
> > > > "Radius2: OK. %1" )
> > > >         FailureQuery INSERT into RADAUTHLOG_1 values("%t","%n" , "%N"
>
> ,
>
> > > > "Radius2: NOK. %1(C-S-Id:%{Called-Station-Id})" )
> > > > </AuthLog>
> > > >
> > > > # Scripts de Fail-Over
> > > > <Handler Request-Type=Access-Request,Realm=test.fr>
> > > >         AuthBy AUTH_USER
> > > > </Handler>
> > > >
> > > > # TEST
> > > > <Handler Request-Type=Access-Request,Realm=test.cegedim>
> > > >         #AuthBy AUTH_USER_NAS
> > > >         AuthBy AUTH_USER_NAS_CSID
> > > >         AuthLog AUTHLOG
> > > > </Handler>
> > > >
> > > > #####################################################
> > > > # OTHER.USERS
> > > > ####################################################
> > > >
> > > >
> > > > <Handler Request-Type=Accounting-Request>
> > > >         AuthBy ACCT
> > > > </Handler>
> > > >
> > > > <Handler Request-Type=Access-Request,Realm=teams.bak>
> > > >         RejectHasReason
> > > >         AuthBy AUTH_USER
> > > >         AuthLog AUTHLOG
> > > > </Handler>
> > > >
> > > >
> > > > <Handler Request-Type=Access-Request>
> > > >         RejectHasReason
> > > >         AuthBy AUTH_USER_NAS_CSID
> > > >         AuthLog AUTHLOG
> > > > </Handler>
> > > >
> > > > ######################################################
> > > >
> > > >
> > > >
> > > > <Log SQL>
> > > >         DBSource        dbi:mysql:xxxxxxxxxxxxxx
> > > >         DBUsername      xxxxxxxxxxxxx
> > > >         DBAuth          xxxxxxxx
> > > >         FailureBackoffTime 20
> > > >
> > > >         Trace 3
> > > > </Log>
> > > >
> > > > ===
> > > > Archive at http://www.open.com.au/archives/radiator/
> > > > Announcements on [EMAIL PROTECTED]
> > > > To unsubscribe, email '[EMAIL PROTECTED]' with
> > > > 'unsubscribe radiator' in the body of the message.
> >
> > --
> > Mike McCauley                               [EMAIL PROTECTED]
> > Open System Consultants Pty. Ltd            Unix, Perl, Motif, C++, WWW
> > 24 Bateman St Hampton, VIC 3188 Australia   http://www.open.com.au
> > Phone +61 3 9598-0985                       Fax   +61 3 9598-0955
> >
> > Radiator: the most portable, flexible and configurable RADIUS server
> > anywhere. SQL, proxy, DBM, files, LDAP, NIS+, password, NT, Emerald,
> > Platypus, Freeside, TACACS+, PAM, external, Active Directory etc etc
> > on Unix, Win95/8, 2000, NT, MacOS 9, MacOS X etc etc
> >
> > ===
> > Archive at http://www.open.com.au/archives/radiator/
> > Announcements on [EMAIL PROTECTED]
> > To unsubscribe, email '[EMAIL PROTECTED]' with
> > 'unsubscribe radiator' in the body of the message.

-- 
Mike McCauley                               [EMAIL PROTECTED]
Open System Consultants Pty. Ltd            Unix, Perl, Motif, C++, WWW
24 Bateman St Hampton, VIC 3188 Australia   http://www.open.com.au
Phone +61 3 9598-0985                       Fax   +61 3 9598-0955

Radiator: the most portable, flexible and configurable RADIUS server 
anywhere. SQL, proxy, DBM, files, LDAP, NIS+, password, NT, Emerald, 
Platypus, Freeside, TACACS+, PAM, external, Active Directory etc etc 
on Unix, Win95/8, 2000, NT, MacOS 9, MacOS X etc etc
# AuthLogSQL.pm
#
# Specific class for logging authentication to SQL
#
# Author: contributed by Dave Lloyd <[EMAIL PROTECTED]>
# $Id: AuthLogSQL.pm,v 1.8 2002/05/23 02:02:44 mikem Exp mikem $

package Radius::AuthLogSQL;
@ISA = qw(Radius::AuthLogGeneric Radius::SqlDb);
use Radius::AuthLogGeneric;
use Radius::SqlDb;
use strict;

%Radius::AuthLogSQL::ConfigKeywords = 
    ('Table'        => 'string',
     'SuccessQuery' => 'string',
     'FailureQuery' => 'string'
     );

#####################################################################
# Do per-instance default initialization
# This is called by Configurable during Configurable::new before
# the config file is parsed. Its a good place initialize instance 
# variables
# that might get overridden when the config file is parsed.
# Do per-instance default initialization. This is called after
# construction is complete
sub initialize
{
    my ($self) = @_;

    $self->Radius::AuthLogGeneric::initialize;
    $self->Radius::SqlDb::initialize;
    $self->{Table} = 'RADAUTHLOG';
}

#####################################################################
# Log a message 
sub authlog
{
    my ($self, $s, $reason, $p) = @_;

    my $table = $self->{Table};

    # (Re)-connect to the database if necessary, 
    return undef unless $self->reconnect;
    my $q;

    if (defined($self->{SuccessQuery}) 
	&& $self->{LogSuccess} 
	&& $s == $main::ACCEPT) 
    {
    	$q = &Radius::Util::format_special
	    ($self->{SuccessQuery}, $p, undef, $s, $self->quote($reason));
	
    } 
    elsif (defined($self->{FailureQuery}) 
	   && $self->{LogFailure} 
	   && $s == $main::REJECT) 
    {
    	$q = &Radius::Util::format_special
	    ($self->{FailureQuery}, $p, undef, $s, $self->quote($reason));

    } 
    else 
    {
    	return;
    }

    ## $s = $self->quote($s) or return;
#    $q = eval qq/"$q"/; # Interpolate perl vars. REMOVE soon
    $self->do($q);
}

1;

Reply via email to