sqlcounter returning wrong value?

tnt at kalik.net tnt at kalik.net
Fri Oct 24 16:21:02 CEST 2008


It (daily sqlcounter) does the same in 2.0.5:

rlm_sqlcounter: Authorized user jagoda, check_item=10000000, counter=2635
rlm_sqlcounter: Sent Reply-Item for user jagoda, Type=Session-Timeout,
value=10027850

Returns value that is greater than the limit. I am using noreset
sqlcounter and that one works fine.

Ivan Kalik
Kalik Informatika ISP


Dana 24/10/2008, "liran tal" <liransgarage at gmail.com> piše:

>Hey,
>
>2008/10/24 <tnt at kalik.net>
>
>> No, he wants a data not time counter.
>
>
>That's right Evan. Moreover, there is no sense in changing the attribute to
>be Session-Timeout when Chilli expects something else.
>Any thoughts on this issue?
>
>
>Thanks,
>
>
>
>Dana 24/10/2008, "mulianto" <mulianto at cni.co.id> piše:
>
>>
>> >hi..i think you should fix this one :
>> >
>> >                reply-name = ChilliSpot-Max-Total-Octets to :
>> >                reply-name = Session-Timeout
>> >
>> >try it..
>> >rgds,
>> >Mulianto
>> >
>> >http://www.indohotspot.net
>> >Your Hotspot solution
>> >  -----Original Message-----
>> >  From: freeradius-users-bounces+mulianto=cni.co.id at lists.freeradius.org
>> >[mailto:freeradius-users-bounces+mulianto<freeradius-users-bounces%2Bmulianto>
>> =cni.co.id at lists.freeradius.org]On
>> >Behalf Of liran tal
>> >  Sent: Friday, October 24, 2008 1:07 AM
>> >  To: FreeRadius users mailing list
>> >  Subject: sqlcounter returning wrong value?
>> >
>> >
>> >
>> >  Hey,
>> >
>> >  I'm experimenting with some sqlcounter directives in radiusd.conf and
>> >chilli as the NAS.
>> >  I've defined the following sqlcounter stanza for a daily traffic limit:
>> >
>> >  sqlcounter defined in radiusd.conf:
>> >  (the query was corrected as suggested by tnt on a previous thread on the
>> >list, correct me if I got it wrong please)
>> >
>> >          sqlcounter counterChilliSpotMaxDailyOctets {
>> >                  counter-name = ChilliSpot-Max-Daily-Octets
>> >                  check-name = ChilliSpot-Max-Daily-Octets
>> >                  reply-name = ChilliSpot-Max-Total-Octets
>> >                  sqlmod-inst = sql
>> >                  key = User-Name
>> >                  reset = daily
>> >                  error-msg = "Sorry, your maximum traffic usage (download
>> >and upload) has exceed the provided limit"
>> >                  query = "SELECT (SUM(AcctInputOctets +
>> AcctOutputOctets))
>> >FROM radacct WHERE UserName='%{%k}' AND UNIX_TIMESTAMP(AcctStartTime) +
>> >AcctSessionTime > '%b'"
>> >          }
>> >
>> >
>> >
>> >  In the authorization phase, I'm seeing the following in debug log:
>> >    rlm_sqlcounter: Entering module authorize code
>> >    sqlcounter_expand:  'SELECT
>> (SUM(AcctInputOctets)+SUM(AcctOutputOctets))
>> >FROM radacct WHERE UserName='%{User-Name}''
>> >    radius_xlat:  'SELECT (SUM(AcctInputOctets)+SUM(AcctOutputOctets))
>> FROM
>> >radacct WHERE UserName='tester1''
>> >    sqlcounter_expand:  '%{sql:SELECT
>> >(SUM(AcctInputOctets)+SUM(AcctOutputOctets)) FROM radacct WHERE
>> >UserName='tester1'}'
>> >    radius_xlat: Running registered xlat function of module sql for string
>> >'SELECT (SUM(AcctInputOctets)+SUM(AcctOutputOctets)) FROM radacct WHERE
>> >UserName='tester1''
>> >    rlm_sql (sql): - sql_xlat
>> >    radius_xlat:  'tester1'
>> >    rlm_sql (sql): sql_set_user escaped user --> 'tester1'
>> >    radius_xlat:  'SELECT (SUM(AcctInputOctets)+SUM(AcctOutputOctets))
>> FROM
>> >radacct WHERE UserName='tester1''
>> >    rlm_sql (sql): Reserving sql socket id: 2
>> >    rlm_sql (sql): - sql_xlat finished
>> >    rlm_sql (sql): Released sql socket id: 2
>> >    radius_xlat:  '24004370'
>> >    rlm_sqlcounter: (Check item - counter) is greater than zero
>> >    rlm_sqlcounter: Authorized user tester1, check_item=26214400,
>> >counter=24004370
>> >    rlm_sqlcounter: Sent Reply-Item for user tester1,
>> >Type=ChilliSpot-Max-Total-Octets, value=26239950
>> >      modcall[authorize]: module "counterChilliSpotMaxDailyOctets" returns
>> >ok for request 0
>> >  The entry in radcheck is as follows:
>> >
>> >    | 346 | tester1 | ChilliSpot-Max-Daily-Octets | := | 26214400 |
>> >  What happens is that it seems the counter doesn't work as expected. When
>> a
>> >user logs in, performs some traffic usage, logs out and logs in again,
>> >  the replied back attribute for chilli doesn't contain a value which is
>> the
>> >remainder of the traffic usage, but something else.
>> >
>> >  According to the radius debug above, if check_item=26214400 and
>> >counter=24004370, how come value=26239950?
>> >  So I'm guessing I'm missing something but I'm too obsessed with the
>> >sqlcounter to notice it. (is the subtractation not a normal decimal
>> action?)
>> >
>> >  The FreeRADIUS version used is 1.1.7
>>
>>
>




More information about the Freeradius-Users mailing list