sqlcounter returning wrong value?

tnt at kalik.net tnt at kalik.net
Fri Oct 24 10:48:45 CEST 2008


No, he wants a data not time counter.

Ivan Kalik
Kalik Informatika ISP


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=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
>
>
>
>  Regards,
>  Liran.
>
>




More information about the Freeradius-Users mailing list