(RADIATOR) Truncation error in AuthBy SQL - MySQL to MSSQL

Randall radiator at diskserv.com
Sun Apr 10 14:22:07 CDT 2005


Hello, Mike and Hugh!

Don't know if you have had many questions from folks like me who have been 
using Radiator with MySQL very successfully, but who now want for various 
reasons to switch to MS SQL.  I need to switch in order to get 
transaction-based replication between two live redundant database servers, 
and avoid the crummy master-slave aspects of MySQL 4.x.  Of course, MySQL 5 
will not appear in stable form in time for me to wait for it :-)   The 
conversion is almost complete, except for one little thing.  I am getting a 
baffling truncation error in <AuthBy SQL>.  Maybe it is because I have the 
CHECKATTR and REPLYATTR fields defined as TEXT ?

I have appended, as Mike and Hugh recommend, full Trace Level 4 debug 
output, and our config code, as well as an Include file for this 
code.  Could you please point me in the right direction to resolve this 
truncation error?  I have pored over the help files on your web site to no 
avail :-(

Question 1.) Is there a string length limit for this to work?
I have very long Reply Attribute Strings in some cases, over 255 characters.
It worked just fine as TINYTEXT fields in MySQL.   But MSSQL does not have 
TINYTEXT.

Question 2.) Could this be a limitation of the MS SQL Server ODBC, or is it 
a limitation of Radiator?
I am using Version 2000.85.1025.00.

Question 3.) Do you have recommended settings that I can see or use for the 
MS SQL ODBC DSN Configuration?
(I mean ODBC DSN Settings like Use ANSI nulls, paddings and warnings, etc)

Thanks, everyone!

Randall

<rep at ms.edu>




--- Start SQL Database design for <AuthBy SQL> ---------------------

1     USERNAME               varchar     50    0
0     PASSWORD                varchar     50    1
0     ENCRYPTEDPASSWORD       varchar     50    1
0     CHECKATTR              text        16    1
0     REPLYATTR              text        16    1
0     TIMELEFT               int         4     1
0     TIMEBANKED             int         4     0
0     TIMEBANKED_MONTHLY      int         4     1
0     MONTHLY_USAGE_CAP       int         4     1

--- End SQL Database design for <AuthBy SQL> ---------------------


----------- Start Trace ------------------------------------------
Sun Apr 10 12:27:36 2005: DEBUG: Packet dump:
*** Received from 192.168.1.5 port 3028 ....
Code:       Access-Request
Identifier: 5
Authentic:  1234567890123456
Attributes:
         User-Name = "test at xyz.com"
         Service-Type = Framed-User
         NAS-IP-Address = 66.99.29.1
         NAS-Port = 1234
         Called-Station-Id = "123456789"
         Calling-Station-Id = "987654321"
         NAS-Port-Type = Async
         CHAP-Password = 
5tT<11><149><245>n<175>Wr<29><192><142><199><142><132><1
70>
         CHAP-Challenge = 1234567890123456

Sun Apr 10 12:27:36 2005: DEBUG: Rewrote user name to test at xyz.com
Sun Apr 10 12:27:36 2005: DEBUG: Handling request with Handler 'Realm=xyz.com'
Sun Apr 10 12:27:36 2005: DEBUG: Radonline Deleting session for 
test at xyz.com, 66
.99.29.1, 1234
Sun Apr 10 12:27:36 2005: DEBUG: do query is: 'delete from RADONLINE where 
USERN
AME = 'test at xyz.com'':

Sun Apr 10 12:27:36 2005: DEBUG: Handling with Radius::AuthSQL
Sun Apr 10 12:27:36 2005: DEBUG: Handling with Radius::AuthSQL
Sun Apr 10 12:27:36 2005: DEBUG: Handling with Radius::AuthGROUP
Sun Apr 10 12:27:36 2005: DEBUG: Handling with Radius::AuthSQL
Sun Apr 10 12:27:36 2005: DEBUG: Handling with Radius::AuthSQL: RejectUsers
Sun Apr 10 12:27:36 2005: DEBUG: Query is: 'select "Reject:User is Suspended or
reached Realm or User Cap Limit" from Reject_Users where 
USERNAME='test at xyz.com'
':

Sun Apr 10 12:27:36 2005: DEBUG: Radius::AuthSQL looks for match with 
test at xyz.c
om
Sun Apr 10 12:27:36 2005: DEBUG: Handling with PORTLIMITCHECK:
Sun Apr 10 12:27:36 2005: DEBUG: Query is: 'select Count(*) from RADONLINE 
where
  realm = 'xyz.com'':

Sun Apr 10 12:27:36 2005: DEBUG: PORTLIMITCHECK got a current session count 
of 0

Sun Apr 10 12:27:36 2005: DEBUG: Handling with Radius::AuthSQL
Sun Apr 10 12:27:36 2005: DEBUG: Handling with Radius::AuthSQL:
Sun Apr 10 12:27:36 2005: DEBUG: Query is: 'select PASSWORD, CHECKATTR, 
REPLYATTR from xyzcom_subscribers where USERNAME= 'test at xyz.com'':

DBD::ODBC::st fetchrow failed: [Microsoft][ODBC SQL Server Driver]String 
data, right truncation (SQL-01004)(DBD: st_fetch/SQLFetch (long truncated 
DBI attribute LongTruncOk not set and/or LongReadLen too small) err=-1) at 
C:/Perl/site/lib/Radius/SqlDb.pm line 267.

Sun Apr 10 12:27:36 2005: DEBUG: Radius::AuthSQL looks for match with 
test at xyz.c
om
Sun Apr 10 12:27:36 2005: DEBUG: Query is: 'select PASSWORD, CHECKATTR, 
REPLYATT
R from xyzcom_subscribers where USERNAME= 'DEFAULT'':

Sun Apr 10 12:27:36 2005: INFO: Access rejected for test at xyz.com: No such user
Sun Apr 10 12:27:36 2005: DEBUG: do query is: 'insert into xyzcom_authlog 
(TIME_
STAMP, USERNAME, TYPE, REASON, REQUESTPASSWORD, PRIORITY, EVENTTIME, NASIP, 
NASI
D, NASIDENTIFIER, TESTTYPE, CORRECTPASSWORD) values (1113154056, 
'test at xyz.com',
  0, 'No such user', '', 1, 'Apr 10, 2005 12:27:36', '66.99.29.1', 
1082727681, '
', 'Access-Request', NULL)':

Sun Apr 10 12:27:36 2005: DEBUG: Packet dump:
*** Sending to 192.168.1.5 port 3028 ....
Code:       Access-Reject
Identifier: 5
Authentic:  1234567890123456
Attributes:
         Reply-Message = "No such user"

Sun Apr 10 12:27:36 2005: DEBUG: Packet dump:
*** Received from 192.168.1.5 port 3028 ....
Code:       Accounting-Request
Identifier: 6
Authentic:  <231><7>(<224><214>!tFq<208><203><161>#a :
Attributes:
         User-Name = "test at xyz.com"
         Service-Type = Framed-User
         NAS-IP-Address = 66.99.29.1
         NAS-Port = 1234
         NAS-Port-Type = Async
         Acct-Session-Id = "00001234"
         Acct-Status-Type = Start
         Called-Station-Id = "123456789"
         Calling-Station-Id = "987654321"
         Acct-Delay-Time = 0

Sun Apr 10 12:27:36 2005: DEBUG: Rewrote user name to test at xyz.com
Sun Apr 10 12:27:36 2005: WARNING: Bad authenticator in request from 
DEFAULT (66
.99.29.1)
Sun Apr 10 12:27:41 2005: DEBUG: Packet dump:
*** Received from 192.168.1.5 port 3028 ....
Code:       Accounting-Request
Identifier: 7
Authentic:  <131><231>R<5><252><200><<160><146><7><138><194><194><131><17><255>
Attributes:
         User-Name = "test at xyz.com"
         Service-Type = Framed-User
         NAS-IP-Address = 66.99.29.1
         NAS-Port = 1234
         NAS-Port-Type = Async
         Acct-Session-Id = "00001234"
         Acct-Status-Type = Stop
         Called-Station-Id = "123456789"
         Calling-Station-Id = "987654321"
         Acct-Delay-Time = 0
         Acct-Session-Time = 1000
         Acct-Input-Octets = 20000
         Acct-Output-Octets = 30000

Sun Apr 10 12:27:41 2005: DEBUG: Rewrote user name to test at xyz.com
Sun Apr 10 12:27:41 2005: WARNING: Bad authenticator in request from 
DEFAULT (66
.99.29.1)

--------- End Trace 
---------------------------------------------------------------

---------- Start Config (Main) 
--------------------------------------------------------
# windows.cfg
#     Revised January 13, 2005
#
BindAddress 192.168.1.5
AuthPort    1645
AcctPort    1646

# Define Globals
# Master Radius Database

DefineFormattedGlobalVar MSSQLServer MSRadius
DefineFormattedGlobalVar MSSQLUser User
DefineFormattedGlobalVar MSSQLPassword Password

# Read Only Slave Radius Database

Foreground
LogStdout

# %L in any file name path
LogDir            c:\Radlogs
LogFile           %L/logfile-64-137-27-1-%Y%m%d.log

# %D in any file name path
DbDir c:\Radius

# DictionaryFile %D/dictionary,%D/dictionary.ascend
# For AASP Use the Following
DictionaryFile %D/dictionary

# Rewrite Username to be all Lower Case
RewriteUsername tr/{A-Z]/[a-z]/

# RewriteUserName to have UserName portion case sensitive and realm portion 
lower case
#RewriteUsername s/(?<=@)(.*)$/lc($1)/e


# This will log at DEBUG level: very verbose
# User a lower trace level in production systems, typically use 3
Trace             4

# Monitor connection
<Monitor>
       BindAddress 192.168.1.5
       Port xxxx
       Username xxxxx
       Password xxxxxxxxx
</Monitor>

# SessionDatabase SQL entries
#' Set override of SessionDatabase Queries
<SessionDatabase SQL>
       DBSource dbi:ODBC:%{GlobalVar:MSSQLServer}
       DBUsername %{GlobalVar:MSSQLUser}
       DBAuth %{GlobalVar:MSSQLPassword}
       Identifier Radonline
       AddQuery insert into 
RADONLINE(USERNAME,NASIDENTIFIER,NASPORT,ACCTSESSIONID,TIME_STAMP,FRAMEDIPADDRESS,NASPORTTYPE,SERVICETYPE, 
Calling_Station_Id, Called_Station_Id, Framed_Protocol, Realm) values 
('%u','%1',%2,%3,%{Timestamp},'%{Framed-IP-Address}','%{NAS-Port-Type}','%{Service-Type}', 
'%{Calling-Station-Id}', '%{Called-Station-Id}', '%{Framed-Protocol}', '%W')
       DeleteQuery delete from RADONLINE where USERNAME = '%u'
       ClearNasQuery
       CountQuery select Count(*) from RADONLINE where USERNAME='%u'
</SessionDatabase>

# Trace level log file with messages
<Log  SQL>
       DBSource dbi:ODBC:%{GlobalVar:MSSQLServer}
       DBUsername %{GlobalVar:MSSQLUser}
       DBAuth %{GlobalVar:MSSQLPassword}
       Table radlog
       Identifier RadLog
       LogQuery insert into %3 (TIME_STAMP,PRIORITY,MESSAGE, USERNAME, 
REALM) values (%t, %0, %2, %u, %W)
</LOG>

<StatsLog SQL>
       Identifier RadStatsLog
       DBSource dbi:ODBC:%{GlobalVar:MSSQLServer}
       DBUsername %{GlobalVar:MSSQLUser}
       DBAuth %{GlobalVar:MSSQLPassword}
#     The logging interval in seconds (Default 600 Seconds or 10 Mins)
       Interval 1800
#     You can configure the SQL query to be used for each log.
#     %0, %1 etc are replaced by each statistic, in alphabetical order
#     of their name.This example just logs the time, object type, id and
#     average responseTime
       InsertQuery insert into radstatslog 
(TIME_STAMP,TYPE,IDENTIFIER,ACCESSACCEPTS,ACCESSCHALLENGES,ACCESSREJECTS,ACCESSREQUESTS, 
\
       ACCOUNTINGREQUESTS,ACCOUNTINGRESPONSES,BADAUTHACCESSREQUESTS,BADAUTHACCOUNTINGREQUESTS,BADAUTHREQUESTS,DROPPEDACCESSREQUESTS, 
\
       DROPPEDACCOUNTINGREQUESTS,DROPPEDREQUESTS,DUPACCESSREQUESTS,DUPACCOUNTINGREQUESTS,DUPLICATEREQUESTS,MALFORMEDACCESSREQUESTS, 
\
       MALFORMEDACCOUNTINGREQUESTS,PROXIEDNOREPLY,PROXIEDREQUESTS,REQUESTS,RESPONSETIME) 
values \
       (%0, '%1', '%2', %3, %4, %5, %6, %7, %8, %9, %10, %11, %12, %13, 
%14, %15, %16, %17, %18, %19, %20, %21, %22, %23)
</StatsLog>

#' Enabled Client List from SQL database
<ClientListSQL>
       DBSource dbi:ODBC:%{GlobalVar:MSSQLServer}
       DBUsername %{GlobalVar:MSSQLUser}
       DBAuth %{GlobalVar:MSSQLPassword}
       GetClientQuery select NASIDENTIFIER,SECRET,IGNOREACCTSIGNATURE, \
       DUPINTERVAL,DEFAULTREALM,NASTYPE,SNMPCOMMUNITY,LIVINGSTONOFFS, \
       LIVINGSTONHOLE,NULL,NULL, \
       REWRITEUSERNAME,NOIGNOREDUPLICATES,PREHANDLERHOOK, \
       IDENTIFIER,DEFAULTREPLY,NULL,STRIPFROMREPLY, \
       ALLOWINREPLY,ADDTOREPLY,ADDTOREPLYIFNOTEXIST,DYNAMICREPLY FROM 
RADCLIENTS
</ClientListSQL>

<Realm DEFAULT>
       <AuthBy INTERNAL>
             AuthResult REJECT
             AcctStopResult ACCEPT
             AcctStartResult ACCEPT
             DefaultResult REJECT
       </AuthBy>
</Realm>

<AuthBy SQL>
       Identifier RejectUsers
       DBSource dbi:ODBC:%{GlobalVar:MSSQLServer}
       DBUsername %{GlobalVar:MSSQLUser}
       DBAuth %{GlobalVar:MSSQLPassword}
       DateFormat '%b $d,%Y %H:%M:%S'
       AuthSelect select "Reject:User is Suspended or reached Realm or User 
Cap Limit" from Reject_Users where USERNAME=%0
       AuthColumnDef 0, Auth-Type, check
       AcceptIfMissing
       NoDefault
</AuthBy>

# Authenticate  realms with this
# Manual location 6.15

Include %D/Includes/xyz.com.cfg

--------- End Config (Main) -------------------------------------------

-------- Start Config (Include) ---------------------------------------
<Realm xyz.com>
#     MaxSessions 1
#     Log accounting to a detail file. %D is replaced by DbDir above
       AcctLogFileName   %L/%W_Detail-%Y%m%d.log
#     Log for all authentication attemps
       PasswordLogFileName %L/%W_Password-%Y%m%d.log
       AuthByPolicy ContinueAlways
       AccountingHandled
       RejectHasReason
       <AuthLog SQL>
             DBSource dbi:ODBC:%{GlobalVar:MSSQLServer}
             DBUsername %{GlobalVar:MSSQLUser}
             DBAuth %{GlobalVar:MSSQLPassword}
             Table xyzcom_authlog
             Identifier xyzcomAuthLogID
             SuccessQuery insert into xyzcom_authlog (TIME_STAMP, USERNAME, 
TYPE, REASON, REQUESTPASSWORD, PRIORITY, EVENTTIME, NASIP, NASID, 
NASIDENTIFIER, TESTTYPE, CORRECTPASSWORD) values (%t, '%n', 1, %1, '%P', 
%0, '%G', '%N', %I, '%{Client:IDENTIFIER}', '%T', %3)
             FailureQuery insert into xyzcom_authlog (TIME_STAMP, USERNAME, 
TYPE, REASON, REQUESTPASSWORD, PRIORITY, EVENTTIME, NASIP, NASID, 
NASIDENTIFIER, TESTTYPE, CORRECTPASSWORD) values (%t, '%n', 0, %1, '%P', 
%0, '%G', '%N', %I, '%{Client:IDENTIFIER}', '%T', %3)
             LogFailure 1
             LogSuccess 1
       </AuthLog>

       <AuthBy SQL>
#           SQLRecoveryFile is Version 3.8 or higher
             SQLRecoveryFile %L/%W_SQLRecoveryFile
             DBSource dbi:ODBC:%{GlobalVar:MSSQLServer}
             DBUsername %{GlobalVar:MSSQLUser}
             DBAuth %{GlobalVar:MSSQLPassword}
             DateFormat '%b $d,%Y %H:%M:%S'
             HandleAcctStatusTypes Start
             AcctInsertQuery insert into %0(%1) values (%2)
             AuthSelect
             AccountingTable xyzcom_accounting
             AcctColumnDef User_Name,User-Name
             AcctColumnDef Start_Time,Timestamp
             AcctColumnDef Stop_Time,Timestamp
             AcctColumnDef State,State
             AcctColumnDef Password,Password
             AcctColumnDef Expiration,Expiration
             AcctColumnDef Service_Type,Service-Type
             AcctColumnDef Framed_Protocol,Framed-Protocol
             AcctColumnDef Ascend_Assign_IP_Pool,Ascend-Assign-IP-Pool
             AcctColumnDef Ascend_Idle_Limit,Ascend-Idle-Limit
             AcctColumnDef Ascend_Maximum_Channels,Ascend-Maximum-Channels
             AcctColumnDef Ascend_Minimum_Channels,Ascend-Minimum-Channels
             AcctColumnDef Framed_IP_Address,Framed-IP-Address
             AcctColumnDef Framed_IP_Netmask,Framed-IP-Netmask
             AcctColumnDef NAS_IP_Address,NAS-IP-Address
             AcctColumnDef NAS_Port,NAS-Port
             AcctColumnDef NAS_Port_Type,NAS-Port-Type
             AcctColumnDef Acct_Status_Type,Acct-Status-Type
             AcctColumnDef Acct_Delay_Time,Acct-Delay-Time
             AcctColumnDef Acct_Session_Id,Acct-Session-Id
             AcctColumnDef Acct_Authentic,Acct-Authentic
             AcctColumnDef Acct_Session_Time,Acct-Session-Time
             AcctColumnDef Acct_Input_Octets,Acct-Input-Octets
             AcctColumnDef Acct_Output_Octets,Acct-Output-Octets
             AcctColumnDef Acct_Input_Packets,Acct-Input-Packets
             AcctColumnDef Acct_Output_Packets,Acct-Output-Packets
             AcctColumnDef Ascend_Disconnect_Cause,Ascend-Disconnect-Cause
             AcctColumnDef Ascend_Connect_Progress,Ascend-Connect-Progress
             AcctColumnDef Ascend_Xmit_Rate,Ascend-Xmit-Rate
             AcctColumnDef Ascend_Data_Rate,Ascend-Data-Rate
             AcctColumnDef Ascend_PreSession_Time,Ascend-PreSession-Time
             AcctColumnDef Ascend_Pre_Input_Octets,Ascend-Pre-Input-Octets
             AcctColumnDef Ascend_Pre_Output_Octets,Ascend-Pre-Output-Octets
             AcctColumnDef Ascend_Pre_Input_Packets,Ascend-Pre-Input-Packets
             AcctColumnDef Ascend_Pre_Output_Packets,Ascend-Pre-Output-Packets
             AcctColumnDef Ascend_First_Dest,Ascend-First-Dest
             AcctColumnDef Ascend_Multilink_ID,Ascend-Multilink-ID
             AcctColumnDef Ascend_Num_In_Multilink,Ascend-Num-In-Multilink
             AcctColumnDef Acct_Link_Count,Acct-Link-Count
             AcctColumnDef Acct_Multi_Session_Id,Acct-Multi-Session-Id
             AcctColumnDef Ascend_Modem_PortNo,Ascend-Modem-PortNo
             AcctColumnDef Ascend_Modem_SlotNo,Ascend-Modem-SlotNo
             AcctColumnDef Calling_Station_Id,Calling-Station-Id
             AcctColumnDef Called_Station_Id,Called-Station-Id
             AcctColumnDef CHAP_Password,CHAP-Password
             AcctColumnDef Connect_Info,Connect-Info
             AcctColumnDef Ascend_Handle_IPX,Ascend-Handle-IPX
             AcctColumnDef NAS_Identifier,NAS-Identifier
             AcctColumnDef CHAP_Challenge,CHAP-Challenge
             AcctColumnDef Ascend_Netware_timeout,Ascend-Netware-timeout
             AcctColumnDef Proxy_State,Proxy-State
             AcctColumnDef Class,Class
             AcctColumnDef Framed_Compression,Framed-Compression
             AcctColumnDef Port_Limit,Port-Limit
             AcctColumnDef Acct_Terminate_Cause,Acct-Terminate-Cause
             AcctColumnDef CVX_SS7_Session_ID_Type,CVX-SS7-Session-ID-Type
             AcctColumnDef CVX_Terminate_Cause,CVX-Terminate-Cause
             AcctColumnDef Login_IP_Host,Login-IP-Host
             AcctColumnDef User_Password,User-Password
             AcctColumnDef Framed_Routing,Framed-Routing
             AcctColumnDef Filter_Id,Filter-Id
             AcctColumnDef Framed_MTU,Framed-MTU
             AcctColumnDef Login_Service,Login-Service
             AcctColumnDef Login_TCP_Port,Login-TCP-Port
             AcctColumnDef Framed_Route,Framed-Route
             AcctColumnDef Framed_IPX_Network,Framed-IPX-Network
             AcctColumnDef Termination_Action,Termination-Action
             AcctColumnDef Vendor_specific,Vendor-specific
             AcctColumnDef Acct_Input_Gigawords,Acct-Input-Gigawords
             AcctColumnDef Acct_Output_Gigawords,Acct-Output-Gigawords
             AcctColumnDef Old_Password,Old-Password
             AcctColumnDef Reply_Message,Reply-Message
             AcctColumnDef Callback_Number,Callback-Number
             AcctColumnDef Callback_ID,Callback-ID
             AcctColumnDef User_Realm,User-Realm
             AcctColumnDef CVX_Identification,CVX-Identification
             AcctColumnDef Ascend_Source_Auth,Ascend-Source-Auth
             AcctColumnDef Session_Authentic,Session-Authentic
             AcctColumnDef Event_Timestamp,Event-Timestamp
             AcctColumnDef cvx_ppp_inactivity_limit,CVX-PPP-Inactivity-Limit
             AcctColumnDef GRIC_Timestamp,GRIC-Timestamp
             AcctColumnDef Ascend_Modem_ShelfNo,Ascend-Modem-ShelfNo
             AcctColumnDef Ascend_Owner_IP_Addr,Ascend-Owner-IP-Addr
             AcctColumnDef Tunnel_Client_Endpoint,Tunnel-Client-Endpoint
             AcctColumnDef Tunnel_Server_Endpoint,Tunnel-Server-Endpoint
             AcctColumnDef Idle_Timeout,Idle-Timeout
             AcctColumnDef Tunnel_Type,Tunnel-Type
             AcctColumnDef Class_1,Class-1
             AcctColumnDef Tunnel_ID,Tunnel-ID
             AcctColumnDef Ascend_FR_Direct,Ascend-FR-Direct
             AcctColumnDef CVX_VPOP_ID,CVX-VPOP-ID
             AcctColumnDef CVX_Terminate_Component,CVX-Terminate-Component
             AcctColumnDef Timestamp,Timestamp
       </AuthBy>
       <AuthBy SQL>
#           SQLRecoveryFile is Version 3.8 or higher
             SQLRecoveryFile %L/%W_SQLRecoveryFile
             DBSource dbi:ODBC:%{GlobalVar:MSSQLServer}
             DBUsername %{GlobalVar:MSSQLUser}
             DBAuth %{GlobalVar:MSSQLPassword}
             DateFormat '%b $d,%Y %H:%M:%S'
             HandleAcctStatusTypes Stop
             AcctInsertQuery update %0 set Acct_Status_Type = 
'%{Acct-Status-Type}', \
             Acct_Delay_Time = '%{Acct-Delay-Time}', Acct_Input_Octets = 
'%{Acct-Input-Octets}', \
             Acct_Output_Octets = '%{Acct-Output-Octets}', Acct_Authentic = 
'%{Acct-Authentic}', \
             Acct_Session_Time = '%{Acct-Session-Time}', Stop_Time = 
'%{Timestamp}', \
             Acct_Input_Packets = '%{Acct-Input-Packets}', 
Acct_Output_Packets = '%{Acct-Output-Packets}', \
             Acct_Terminate_Cause = '%{Acct-Terminate-Cause}',  \
             Ascend_Pre_Input_Octets = '%{Ascend-Pre-Input-Octets}', \
             Ascend_Pre_Output_Octets = '%{Ascend-Pre-Output-Octets}', 
Ascend_Pre_Input_Packets = '%{Ascend-Pre-Input-Packets}', \
             Ascend_Pre_Output_Packets = '%{Ascend-Pre-Output-Packets}', 
Ascend_Disconnect_Cause = '%{Ascend-Disconnect-Cause}', \
             Ascend_Connect_Progress = '%{Ascend-Connect-Progress}', 
Ascend_Data_Rate = '%{Ascend-Data-Rate}', \
             Ascend_PreSession_Time = '%{Ascend-PreSession-Time}', 
Ascend_Xmit_Rate = '%{Ascend-Xmit-Rate}', Realm = '%W' \
             where Acct_Session_Id = '%{Acct-Session-Id}'
             AuthSelect
             AcctSQLStatement delete from RADONLINE where USERNAME = '%u'
             AccountingTable xyzcom_accounting
             AcctColumnDef User_Name,User-Name
             AcctColumnDef Start_Time
             AcctColumnDef Stop_Time,Timestamp
             AcctColumnDef State,State
             AcctColumnDef Password,Password
             AcctColumnDef Expiration,Expiration
             AcctColumnDef Service_Type,Service-Type
             AcctColumnDef Framed_Protocol,Framed-Protocol
             AcctColumnDef Ascend_Assign_IP_Pool,Ascend-Assign-IP-Pool
             AcctColumnDef Ascend_Idle_Limit,Ascend-Idle-Limit
             AcctColumnDef Ascend_Maximum_Channels,Ascend-Maximum-Channels
             AcctColumnDef Ascend_Minimum_Channels,Ascend-Minimum-Channels
             AcctColumnDef Framed_IP_Address,Framed-IP-Address
             AcctColumnDef Framed_IP_Netmask,Framed-IP-Netmask
             AcctColumnDef NAS_IP_Address,NAS-IP-Address
             AcctColumnDef NAS_Port,NAS-Port
             AcctColumnDef NAS_Port_Type,NAS-Port-Type
             AcctColumnDef Acct_Status_Type,Acct-Status-Type
             AcctColumnDef Acct_Delay_Time,Acct-Delay-Time
             AcctColumnDef Acct_Session_Id,Acct-Session-Id
             AcctColumnDef Acct_Authentic,Acct-Authentic
             AcctColumnDef Acct_Session_Time,Acct-Session-Time
             AcctColumnDef Acct_Input_Octets,Acct-Input-Octets
             AcctColumnDef Acct_Output_Octets,Acct-Output-Octets
             AcctColumnDef Acct_Input_Packets,Acct-Input-Packets
             AcctColumnDef Acct_Output_Packets,Acct-Output-Packets
             AcctColumnDef Ascend_Disconnect_Cause,Ascend-Disconnect-Cause
             AcctColumnDef Ascend_Connect_Progress,Ascend-Connect-Progress
             AcctColumnDef Ascend_Xmit_Rate,Ascend-Xmit-Rate
             AcctColumnDef Ascend_Data_Rate,Ascend-Data-Rate
             AcctColumnDef Ascend_PreSession_Time,Ascend-PreSession-Time
             AcctColumnDef Ascend_Pre_Input_Octets,Ascend-Pre-Input-Octets
             AcctColumnDef Ascend_Pre_Output_Octets,Ascend-Pre-Output-Octets
             AcctColumnDef Ascend_Pre_Input_Packets,Ascend-Pre-Input-Packets
             AcctColumnDef Ascend_Pre_Output_Packets,Ascend-Pre-Output-Packets
             AcctColumnDef Ascend_First_Dest,Ascend-First-Dest
             AcctColumnDef Ascend_Multilink_ID,Ascend-Multilink-ID
             AcctColumnDef Ascend_Num_In_Multilink,Ascend-Num-In-Multilink
             AcctColumnDef Acct_Link_Count,Acct-Link-Count
             AcctColumnDef Acct_Multi_Session_Id,Acct-Multi-Session-Id
             AcctColumnDef Ascend_Modem_PortNo,Ascend-Modem-PortNo
             AcctColumnDef Ascend_Modem_SlotNo,Ascend-Modem-SlotNo
             AcctColumnDef Calling_Station_Id,Calling-Station-Id
             AcctColumnDef Called_Station_Id,Called-Station-Id
             AcctColumnDef CHAP_Password,CHAP-Password
             AcctColumnDef Connect_Info,Connect-Info
             AcctColumnDef Ascend_Handle_IPX,Ascend-Handle-IPX
             AcctColumnDef NAS_Identifier,NAS-Identifier
             AcctColumnDef CHAP_Challenge,CHAP-Challenge
             AcctColumnDef Ascend_Netware_timeout,Ascend-Netware-timeout
             AcctColumnDef Proxy_State,Proxy-State
             AcctColumnDef Class,Class
             AcctColumnDef Framed_Compression,Framed-Compression
             AcctColumnDef Port_Limit,Port-Limit
             AcctColumnDef Acct_Terminate_Cause,Acct-Terminate-Cause
             AcctColumnDef CVX_SS7_Session_ID_Type,CVX-SS7-Session-ID-Type
             AcctColumnDef CVX_Terminate_Cause,CVX-Terminate-Cause
             AcctColumnDef Login_IP_Host,Login-IP-Host
             AcctColumnDef User_Password,User-Password
             AcctColumnDef Framed_Routing,Framed-Routing
             AcctColumnDef Filter_Id,Filter-Id
             AcctColumnDef Framed_MTU,Framed-MTU
             AcctColumnDef Login_Service,Login-Service
             AcctColumnDef Login_TCP_Port,Login-TCP-Port
             AcctColumnDef Framed_Route,Framed-Route
             AcctColumnDef Framed_IPX_Network,Framed-IPX-Network
             AcctColumnDef Termination_Action,Termination-Action
             AcctColumnDef Vendor_specific,Vendor-specific
             AcctColumnDef Acct_Input_Gigawords,Acct-Input-Gigawords
             AcctColumnDef Acct_Output_Gigawords,Acct-Output-Gigawords
             AcctColumnDef Old_Password,Old-Password
             AcctColumnDef Reply_Message,Reply-Message
             AcctColumnDef Callback_Number,Callback-Number
             AcctColumnDef Callback_ID,Callback-ID
             AcctColumnDef User_Realm,User-Realm
             AcctColumnDef CVX_Identification,CVX-Identification
             AcctColumnDef Ascend_Source_Auth,Ascend-Source-Auth
             AcctColumnDef Session_Authentic,Session-Authentic
             AcctColumnDef Event_Timestamp,Event-Timestamp
             AcctColumnDef cvx_ppp_inactivity_limit,CVX-PPP-Inactivity-Limit
             AcctColumnDef GRIC_Timestamp,GRIC-Timestamp
             AcctColumnDef Ascend_Modem_ShelfNo,Ascend-Modem-ShelfNo
             AcctColumnDef Ascend_Owner_IP_Addr,Ascend-Owner-IP-Addr
             AcctColumnDef Tunnel_Client_Endpoint,Tunnel-Client-Endpoint
             AcctColumnDef Tunnel_Server_Endpoint,Tunnel-Server-Endpoint
             AcctColumnDef Idle_Timeout,Idle-Timeout
             AcctColumnDef Tunnel_Type,Tunnel-Type
             AcctColumnDef Class_1,Class-1
             AcctColumnDef Tunnel_ID,Tunnel-ID
             AcctColumnDef Ascend_FR_Direct,Ascend-FR-Direct
             AcctColumnDef CVX_VPOP_ID,CVX-VPOP-ID
             AcctColumnDef CVX_Terminate_Component,CVX-Terminate-Component
             AcctColumnDef Timestamp,Timestamp
       </AuthBy>
       <AuthBy GROUP>
             AuthByPolicy ContinueUntilReject
             AuthBy RejectUsers
             <AuthBy PORTLIMITCHECK>
                   SessionLimit 999999
                   CountQuery select Count(*) from RADONLINE where realm = '%W'
               </AuthBy>
             <AuthBy SQL>
#                 SQLRecoveryFile is Version 3.8 or higher
                   SQLRecoveryFile %L/%W_SQLRecoveryFile
                   DBSource dbi:ODBC:%{GlobalVar:MSSQLServer}
                   DBUsername %{GlobalVar:MSSQLUser}
                   DBAuth %{GlobalVar:MSSQLPassword}
                   DateFormat '%b $d,%Y %H:%M:%S'
                   AuthSelect select PASSWORD, CHECKATTR, REPLYATTR from 
xyzcom_subscribers where USERNAME= %0
                   AuthColumnDef 0, User-Password, check
                   AuthColumnDef 1, GENERIC, check
                   AuthColumnDef 2, GENERIC, reply
                   AuthColumnDef 3, Session-Timeout, reply
                   DefaultSimultaneousUse 2
                   RejectEmptyPassword
             </AuthBy>
       </AuthBy GROUP>
</Realm>

-------- End Config (Include) ---------------------------------------


Thank You;
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.open.com.au/pipermail/radiator/attachments/20050410/ec8fd035/attachment.html>


More information about the radiator mailing list