R: rlm_sql
Carlo Prestopino
c.prestopino at waitalia.com
Thu Feb 2 19:10:25 CET 2006
My environment is freeRADIUS 1.1.0 with mySQL 5.0.
MySQ 5.0 support stored procedures and function, so I've defined a function
called mac_check as follows:
CREATE FUNCTION `mac_check`(utente VARCHAR(20),mac VARCHAR(30)) RETURNS
varchar(50)
DETERMINISTIC
BEGIN
IF (SELECT (SELECT MAX((Attribute='Calling-Station-Id')) from radcheck WHERE
UserName=utente))
THEN
RETURN 'record already present';
END IF;
INSERT INTO radcheck (UserName,Attribute,op,Value)
VALUES (utente,'Calling-Station-Id',':=', mac);
RETURN 'record inserted';
END
The function mac_check controls if Calling-Station-Id is already present
into radcheck table for key "utente", if not "mac" will be inserted.
The function will then be called from raddb/sql.conf simply modifying the
content of postauth_query:
was
postauth_query = "INSERT into ${postauth_table} (id, user, pass, reply,
date) values ('', '%{User-Name}', '%{User-Password:-Chap-Password}',
'%{reply:Packet-Type}', NOW())"
become
postauth_query = "SELECT mac_check(${postauth_table}, %{User-Name},
%{User-Password:-Chap-Password}, %{reply:Packet-Type},
%{Called-Station-Id})"
in this way I lost the entry into radpostauth table, but this is not a big
problem. I've modified the postauth_query thinking that, acting like this,
no modifications where necessary to rlm_sql.c file. In fact, if I change the
INSERT into postauth_query with a different one, this work pretty good.
Unfortunately things seem to work in a dufferent way, because the mac_check
function is not recognized by freeRADIUS: from logs I can see that it is not
executed.... ;-(
I suppose that there is something to change into rlm_sql.c file....
Any advice?
Thank you in advance
Carlo
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freeradius.org/pipermail/freeradius-devel/attachments/20060202/11e899c2/attachment.html>
More information about the Freeradius-Devel
mailing list