Using rml_perl to modify calling_station_id and set as sql_user_name

Alexander Clouter alex at digriz.org.uk
Mon May 31 21:08:18 CEST 2010


blaqb0x at netscape.net wrote:
> 
> I'm trying to get mac authentication to a mysql database where the mac 
> addresses are stripped of all special characters.
> 
> If I add this line to the /sql/mysql/dialup.conf file
> 
> sql_user_name = "%{Calling-Station-Id}"
> 
> the calling-station-id (username passed to mysql) is the correct mac 
> address however, it has still needs to have all the special characters 
> (hyphens) removed.
> 
> Can someone show me an example of how to modify the 
> calling-station-id?  I suppose using rlm_perl would be the best way as 
> I could modify it using perl.
>
I like to RFCise my attributes, so instead slip into policy.conf the 
following: 
----
rewrite.calling_station_id {
        if( "%{request:Calling-Station-Id}" =~ /^([0-9a-f]{2}).?([0-9a-f]{2}).?([0-9a-f]{2}).?([0-9a-f]{2}).?([0-9a-f]{2}).?([0-9a-f]{2})$/i ){
                update request {
                        Calling-Station-Id := "%{1}-%{2}-%{3}-%{4}-%{5}-%{6}"
                }
        }
        else {
                noop
        }
}
----

After you call 'preprocess' in authorize, call 
'rewrite.calling_station_id' and you should be good.  Trivial to amend 
to your needs.  I also recommend in your SQL syntax you wrap it in a 
call to LOWER() so then everything is in lowercase in your table.

Cheers

-- 
Alexander Clouter
.sigmonster says: Snoopy: No problem is so big that it can't be run away from.




More information about the Freeradius-Users mailing list