Module perl dans Freeradius. - réseaux et sécurité - Linux et OS Alternatifs
MarshPosté le 22-01-2007 à 14:00:47
Salut,
Voila, j'ai installé un freeradius sous debian. Comme les données (envoyées par un portail captif) ne sont pas du type: username/password, je dois modifier l'entrée des données. En clair, le portail captif envoie les données au freeradius qui dès le départ (section instantiate) appelle un module perl (preauth.pl) qui modifie les données et les renvoies au freeradius.
Dans l'idée tout va bien, sauf que j'ai une erreur de type: "can't return outside a subroutine at ..." En clair: soit c'est ma ligne "return" qui n'a pas la bonne syntaxe, soit c'est le output_pairs qui n'est pas bon, soit c'est les deux. Le pb, c'est que je viens à peine de commencer le perl, et j'ai eu beau chercher sur google, j'ai pas trouvé quelque chose d'interessant.
Marsh Posté le 22-01-2007 à 14:00:47
Salut,
Voila, j'ai installé un freeradius sous debian. Comme les données (envoyées par un portail captif) ne sont pas du type: username/password, je dois modifier l'entrée des données. En clair, le portail captif envoie les données au freeradius qui dès le départ (section instantiate) appelle un module perl (preauth.pl) qui modifie les données et les renvoies au freeradius.
Dans l'idée tout va bien, sauf que j'ai une erreur de type: "can't return outside a subroutine at ..."
En clair: soit c'est ma ligne "return" qui n'a pas la bonne syntaxe, soit c'est le output_pairs qui n'est pas bon, soit c'est les deux. Le pb, c'est que je viens à peine de commencer le perl, et j'ai eu beau chercher sur google, j'ai pas trouvé quelque chose d'interessant.
Code interessant du radiud.conf :
exec preauth{
wait = yes
input_pairs = request
output_pairs = reply
program = "/usr/bin/perl ${confdir}/preauth.pl"
}
instantiate {
preauth
}
Code interessant du preauth.pl :
$nomutil = $ENV{USER_NAME};
($Organization, $Location, $UserName) = split('_', $nomutil);
$Organization = $Organization."\"";
$Location = "\"".$Location."\"";
$UserName = "\"".$UserName;
$ENV{USER_NAME} = $Organization;
$ENV{Location} = $Location;
$ENV{Utilisateur} = $UserName;
return ("Utilisateur = $ENV{Utilisateur}", "Location = $ENV{Location}", "USER_NAME = $ENV{USER_NAME}" );
Je compte sur votre aide...
++