Mike Russell wrote:
I tried to search the mail archives for the similar topic but did not find matched results. Then read wiki again to crosscheck that if i have done it well before posting on the mailing list. I am sorry if similar post has been answered before. I have problem with "rlm_sqlcounter" module. That is "noresetcounter" it always return "0". But if i manually run the query to gerp the users accounting data from MySQL DB, i get accounting results. it seems that everything is in place but unable to know why sql counter still returns zero. whereas dailycounter works fine without any problem.
The sqlcounter module should be pretty simple. Configure accounting data to go into SQL, and ensure that the server is receiving accounting packets. Then, configure the sqlcounter module.
My rlm_sqlnoresetcounter module:
sqlcounter noresetcounter { driver = rlm_sqlcounter
Don't invent configuration. This line does NOTHING. DELETE IT.
counter-name = Max-All-Session-Time check-name = Max-All-Session sqlmod-inst = sql key = User-Name reset = never query = "SELECT IFNULL(SUM(AcctSessionTime),0) FROM radacct WHERE UserName='${key}'"
You edited the default configuration, and broke it. Don't do that. The default uses %{${key}}, not ${key}. They're different.
To Prove the point i would also need to send radtest results for comparison:
It would help to read the output.
sqlcounter_expand: 'SELECT IFNULL(SUM(AcctSessionTime),0) FROM radacct WHERE UserName='User-Name'' ... [noresetcounter] expand: SELECT IFNULL(SUM(AcctSessionTime),0) FROM radacct WHERE UserName='User-Name' -> SELECT IFNULL(SUM(AcctSessionTime),0) FROM radacct WHERE UserName='User-Name'
Is the UserName field in SQL "User-Name"? I know that there's a lot of debugging output. But the entire point if it is for you to *read it*. Look for inconsistencies.
Now lets grep the accounting value from database for the same user (returned "0" earlier) This user has "Max-All-Session" attribute applied and exist in "radgroupreply" table.
mysql> SELECT IFNULL(SUM(AcctSessionTime),0) FROM radacct WHERE UserName='KV60Rp2vtrEe5B';
You see how that's different from the query in the debug output? You're testing *different things*. The point of debugging output is for you to CUT & PASTE the SQL queries, to see what they do when run manually. You didn't do that. You ran a *different* query.
Why rlm_counter returns the zero value.
Don't break the server. Alan DeKok.