Stripping Realms from SQL Accounting Queries

Tim Gustafson tjg at soe.ucsc.edu
Mon Nov 23 20:15:08 CET 2009


Hi,

I'm using FreeRADIUS with LDAP for authentication and mySQL for logging.  The LDAP queries seem to be stripping the realm name properly, whereas the mySQL queries are not.  I'm running FreeRADIUS 2.1.6 on FreeBSD:

FreeRADIUS Version 2.1.6, for host i386-portbld-freebsd7.2, built on Nov 10 2009 at 08:34:04

Here's what I've got in my modules/ldap:

----- modules/ldap -----
ldap {
  server = "foo"
  basedn = "dc=foo"
  identity = "uid=foo"
  password = "foo"
  filter = "(uid=%{Stripped-User-Name:-%{User-Name}})"
  ldap_connections_number = 5
  timeout = 4
  timelimit = 3
  net_timeout = 1
  
  tls {
    start_tls = yes
  }
  
  access_attr = "uid"
  dictionary_mapping = ${confdir}/ldap.attrmap
  password_attribute = sambaNTPassword
  edir_account_policy_check = no

  groupname_attribute = "cn"
  groupmembership_attribute = "memberUid"
  groupmembership_filter = "(memberUid=%{Stripped-User-Name:-%{User-Name}})"
}
----- modules/ldap -----

Here's what I've got in my sql/mysql/wpa.conf file:

----- sql/mysql/wpa.conf -----
accounting_start_query = "insert into RadiusLog (SessionID, UserName, WapIpAddress, UserMacAddress, StartTime) value ('%{Acct-Session-Id}', '%{Stripped-User-Name:-%{User-Name}}', '%{NAS-IP-Address}', '%{Calling-Station-Id}', '%S')"

accounting_stop_query = "update RadiusLog set EndTime = '%S', BytesIn = '%{%{Acct-Input-Gigawords}:-0}' << 32 | '%{%{Acct-Input-Octets}:-0}', BytesOut = '%{%{Acct-Output-Gigawords}:-0}' << 32 | '%{%{Acct-Output-Octets}:-0}' where SessionID = '%{Acct-Session-Id}' and UserName = '%{Stripped-User-Name:-%{User-Name}}' and StartTime >= date_sub(now(), interval 30 day)"

accounting_update_query = "update RadiusLog set BytesIn = '%{%{Acct-Input-Gigawords}:-0}' << 32 | '%{%{Acct-Input-Octets}:-0}', BytesOut = '%{%{Acct-Output-Gigawords}:-0}' << 32 | '%{%{Acct-Output-Octets}:-0}' where SessionID = '%{Acct-Session-Id}' and UserName = '%{Stripped-User-Name:-%{User-Name}}' and StartTime >= date_sub(now(), interval 30 day)"
----- sql/mysql/wpa.conf -----

And here are some sample queries from the SQL trace file:

----- /var/log/radacct/radius.sql -----
insert into RadiusLog (SessionID, UserName, WapIpAddress, UserMacAddress, StartTime) value ('0004F815', 'tjg at foo', '192.168.32.8', '0024.2b58.2f46', '2009-11-23 10:52:58');
update RadiusLog set EndTime = '2009-11-23 10:53:46', BytesIn = '0' << 32 | '2487', BytesOut = '0' << 32 | '1356' where SessionID = '0004F815' and UserName = 'tjg at foo' and StartTime >= date_sub(now(), interval 30 day);
----- /var/log/radacct/radius.sql -----

I tried adding a realm definition in proxy.conf, like this:

----- proxy.conf -----
realm foo {
 type  = radius
 authhost = LOCAL
 accthost = LOCAL
 strip
}
----- proxy.conf -----

But that didn't help at all.

I know I must be missing something obvious.  Most of the Google hits on this talk about creating realms and stuff, but that hasn't helped me.  Can anyone share some wisdom here?

Thanks!

Tim Gustafson
Baskin School of Engineering
UC Santa Cruz
tjg at soe.ucsc.edu
831-459-5354



More information about the Freeradius-Users mailing list