rlm_sqlcounter + PostgreSQL problem
Miguel Cabrera
mfcabrera at gmail.com
Tue Jul 5 21:53:37 CEST 2005
Hi list!
I have a problem with the rlm_sqlcounter. It send the Session-Time-Out
correctly but when if check the time limit against the data base it
always return 0. I've added some debugging output and recompile.
This is the output:
Tue Jul 5 14:46:51 2005 : Debug: rlm_sqlcounter: Entering module authorize code
Tue Jul 5 14:46:51 2005 : Debug: sqlcounter_expand: 'SELECT
SUM(AcctSessionTime) FROM radacct WHERE UserName='%{User-Name}' AND
AcctStartTime > abstime(1120539600)'
Tue Jul 5 14:46:51 2005 : Debug: radius_xlat: 'SELECT
SUM(AcctSessionTime) FROM radacct WHERE UserName='ceruno' AND
AcctStartTime > abstime(1120539600)'
Tue Jul 5 14:46:51 2005 : Debug: sqlcounter_expand:
'%{sqlcca3:SELECT SUM(AcctSessionTime) FROM radacct WHERE
UserName='ceruno' AND AcctStartTime > abstime(1120539600)}'
Tue Jul 5 14:46:51 2005 : Debug: rlm_sqlcounter: querystr:
%{%S:SELECT SUM(AcctSessionTime) FROM radacct WHERE UserName='ceruno'
AND AcctStartTime > abstime(1120539600)}
Tue Jul 5 14:46:51 2005 : Debug: rlm_sqlcounter: responsestr:
%{sqlcca3:SELECT SUM(AcctSessionTime) FROM radacct WHERE
UserName='ceruno' AND AcctStartTime > abstime(1120539600)}
Tue Jul 5 14:46:51 2005 : Debug: rlm_sqlcounter: Valor obtenido de la
consulta: 0
Tue Jul 5 14:46:51 2005 : Debug: rlm_sqlcounter: Valor a checkar: 90
Tue Jul 5 14:46:51 2005 : Debug: rlm_sqlcounter: (Check item -
counter) is greater than zero
Tue Jul 5 14:46:51 2005 : Debug: rlm_sqlcounter: Authorized user
ceruno, check_item=90, counter=0
Tue Jul 5 14:46:51 2005 : Debug: rlm_sqlcounter: Sent Reply-Item for
user ceruno, Type=Session-Timeout, value=90
Tue Jul 5 14:46:51 2005 : Debug: modsingle[authorize]: returned
from dailycounter (rlm_sqlcounter) for request 9
Tue Jul 5 14:46:51 2005 : Debug: modcall[authorize]: module
"dailycounter" returns ok for request 9
Tue Jul 5 14:46:51 2005 : Debug: modsingle[authorize]: calling
monthlycounter (rlm_sqlcounter) for request 9
Tue Jul 5 14:46:51 2005 : Debug: rlm_sqlcounter: Entering module authorize code
Tue Jul 5 14:46:51 2005 : Debug: rlm_sqlcounter: Could not find Check
item value pair
Tue Jul 5 14:46:51 2005 : Debug: modsingle[authorize]: returned
from monthlycounter (rlm_sqlcounter) for request 9
Tue Jul 5 14:46:51 2005 : Debug: modcall[authorize]: module
"monthlycounter" returns noop for request 9
Tue Jul 5 14:46:51 2005 : Debug: modcall: group authorize returns ok
for request 9
Tue Jul 5 14:46:51 2005 : Debug: rad_check_password: Found Auth-Type System
Tue Jul 5 14:46:51 2005 : Debug: auth: type "System"
Tue Jul 5 14:46:51 2005 : Debug: Processing the authenticate
section of radiusd.conf
Tue Jul 5 14:46:51 2005 : Debug: modcall: entering group authenticate
for request 9
Tue Jul 5 14:46:51 2005 : Debug: modsingle[authenticate]: calling
unix (rlm_unix) for request 9
Tue Jul 5 14:46:51 2005 : Debug: modsingle[authenticate]: returned
from unix (rlm_unix) for request 9
Tue Jul 5 14:46:51 2005 : Debug: modcall[authenticate]: module
"unix" returns ok for request 9
Tue Jul 5 14:46:51 2005 : Debug: modcall: group authenticate returns
ok for request 9
Looking at the code in rlm_sqlcounter.c in the sqlcounter_authorize
function (the lines starting with * is what I've added).
/* third, wrap query with sql module & expand */
sprintf(querystr, "%%{%%S:%s}", responsestr);
sqlcounter_expand(responsestr, MAX_QUERY_LEN, querystr, instance);
/* Finally, xlat resulting SQL query */
radius_xlat(querystr, MAX_QUERY_LEN, responsestr, request, NULL);
* DEBUG2("rlm_sqlcounter: querystr: %s",querystr);
* DEBUG2("rlm_sqlcounter: responsestr: %s",responsestr);
counter = atoi(querystr);
* DEBUG2("rlm_sqlcounter: Valor obtenido de la consulta: %d",counter);
* DEBUG2("rlm_sqlcounter: Valor a checkar: %d",check_vp->lvalue);
If you compare the output above you will note that when 'counter =
atoi(querystr)' happens the value of querystr is : ' %{%S:SELECT
SUM(AcctSessionTime) FROM radacct WHERE UserName='ceruno' AND
AcctStartTime > abstime(1120539600)}' . So I think is maybe a bug.
I also have a question: Where the SQL query really happens? I
couldn't figure it out :(
I'am runnig in a FC3 with PostgreSQL 7.4.8 and the last stable release
of freeRadius. (Version 1.0.4)
I'll appreciate any help you can give me.
Miguel.
More information about the Freeradius-Users
mailing list