Rewriting User-Name in pre-proxy

William Taylor williamt at corp.sonic.net
Mon May 18 20:16:27 CEST 2009


Im currently using freeradius 2.1.4
I need to lookup a username in a dbm and rewrite it before sending off  
the proxy request.
I have achieved this by using the below method. But I was wondering if  
there was a better way.
It would seem that invoking perl with every auth request might be bad.

Thanks in advance!

-William


In: /etc/raddb/dictionary

	ATTRIBUTE My-Local-String 3000 string

In: sites-available/default

	pre-proxy {
         	rewrite
	        update proxy-request {
         	        User-Name := "%{proxy-request:My-Local-String}"
	        }
	}

In: /etc/raddb/modules/rewrite

	exec rewrite {
		wait = yes
		program = "/etc/raddb/rewriteusername.pl %{User-Name} %{Stripped- 
User-Name} %{Realm}"
		input_pairs = proxy-request
		output_pairs = proxy-request
		shell_escape = yes
	}

In: /etc/raddb/rewriteusername.pl

#!/usr/bin/perl
use strict;
use DB_File;

my %h;
tie %h, "DB_File", "/etc/raddb/rewritemap.db", O_RDONLY, 0444, $DB_HASH
                or die "Cannot open file rewritemap.db: $!\n";

my $fuser  = $ARGV[0];
my $suser = $ARGV[1];
my $realm = $ARGV[2];

if($realm eq "foobee.net") {

     if($h{$suser}) {
         print "My-Local-String=" . $h{$suser};
     } else {
         print "My-Local-String=$suser";
     }

} else {
     print "My-Local-String=$suser";
}

exit 0;




More information about the Freeradius-Users mailing list