[Résolu] Transfert de données entre chillispot et freeradius.

Transfert de données entre chillispot et freeradius. [Résolu] - réseaux et sécurité - Linux et OS Alternatifs

Marsh Posté le 22-01-2007 à 14:42:55    

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...   :D  
   
++


Message édité par supermattt le 27-07-2007 à 12:31:37
Reply

Marsh Posté le 22-01-2007 à 14:42:55   

Reply

Marsh Posté le 27-07-2007 à 12:28:38    

Je n'ai toujours pas réussi à résoudre le problème (ou partiellement).
 
Freeradius attend en fait la sortie standard. Donc il ne faut pas faire de return, mais juste un print. Le seul soucis, c'est que freeradius ne récupère les variable que temporairement (et ce même avec une création de variable dans le dictionnary.
 
Donc ma solution c'est tourné vers un module pré-intégré à freeradius pour la réécriture:
 
attr_rewrite Utilisateur1{
        attribute = Utilisateur
        searchin = request
        searchfor = "^[0-9]+§"
        replacewith = ""
        ignore_case = no
        new_attribute = no
        max_matches = 1
        append = no
}
 
(ca n'est qu'un exemple, adaptez-le à vos besoins)
Il faut penser à appeller le module depuis la section accounting (et authorize aussi forcément)
 
J'espère que ca aidera quelqu'un.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed