Page 1 sur 1

Supprimer lignes de commentaires dans fichiers freeRADIUS

Publié : ven. 27/mai/2005 10:50
par Golfy
Application simple de l'utilisation de deux fichiers simultanément (un en lecture, l'autre en écriture) et de comparaison de chaîne, ce code permet de supprimer les lignes de commentaire (caractère # en début de ligne) des fichiers FreeRADIUS.

Code : Tout sélectionner

; programme de suppression de lignes de commentaires
Declare.s EnleveTab(ligne.s)
   

NomFichier$ = OpenFileRequester("Ouvrir un fichier avec commentaires", "C:\", "*.*", 0)
If NomFichier$ > ""
  ; on a un fichier a traiter
  Chemin$ = GetPathPart(NomFichier$)
  Extension$ = GetExtensionPart(NomFichier$)
  Fichier$ = RemoveString(GetFilePart(NomFichier$), Extension$)
  NewFichier$ = Left(Fichier$, Len(Fichier$)-1)+"_NoComment."+Extension$
  Debug Fichier$+"  |  "+Extension$+"   ==>  "+NewFichier$
  If ReadFile(0,NomFichier$)
   OpenFile(1,Chemin$+NewFichier$)
   UseFile(0)                       ; travaille sur le fichier en lecture (handle 0)
   While Eof(0)=0
         ligne$ = ReadString()
         Debug "==>"+ligne$
         
      If Left(EnleveTab(ligne$),1) = "#"   ; on enlève les espaces devant et on vérifie si c'est un commentaire
        ; c'est un commentaire
      ElseIf ligne$>""
        ; ce n'est pas un commentaire : on écrit la ligne en conservant son formatage
         UseFile(1)
         WriteStringN(ligne$)
         UseFile(0)
         Debug "<=="+ligne$
      EndIf
      Wend
   EndIf
   CloseFile(0)
   CloseFile(1)
EndIf

Procedure.s EnleveTab(ligne$)
   Repeat
      a$ = Left(ligne$,1)
      If a$ = " " Or a$ = Chr(9)
         ligne$ = Right(ligne$, Len(ligne$)-1)
      EndIf
   Until a$ <> " " And a$ <> Chr(9)
   ProcedureReturn ligne$
EndProcedure

Publié : ven. 27/mai/2005 13:23
par Progi1984
FreeRadius ?

Publié : ven. 27/mai/2005 16:21
par Golfy
Et oui... 802.1x, TTLS, Wi-FI et ennuis ;)
Tu connais ???

Voici une mise à jour pour les fichiers sans extensions (y'avait un bug) et en plus on peut le lancer avec un paramètre (style boite DOS ou mieux : en mettant un raccourci dans C:\Documents and Settings\username\SendTo il devient possible cliquer avec le bouton droit sur le fichier et choisir "envoyer vers...")

Code : Tout sélectionner

; programme de suppression de lignes de commentaires
Declare.s EnleveTab(ligne.s)
   

;-- Passage de paramètres
Parametre$ = ProgramParameter()
If Parametre$ = ""
   ; s'il n'y a pas de paramètre passé au programme, on ouvre une boite de dialogue...
   NomFichier$ = OpenFileRequester("Ouvrir un fichier avec commentaires", "C:\", "*.*", 0)
Else
   ; ... sinon on utilise le paramètre comme nom de fichier.
   NomFichier$ = Parametre$
EndIf

If NomFichier$ > ""
   ; on a un fichier a traiter
   Chemin$ = GetPathPart(NomFichier$)
   Fichier$=GetFilePart(NomFichier$)
   Extension$ = GetExtensionPart(NomFichier$)
   If Extension$ = ""
      ; le fichier n'a pas d'extension
      NewFichier$ = Fichier$+"_NoComment"
   Else
      Fichier$ = RemoveString(GetFilePart(NomFichier$), Extension$)
      NewFichier$ = Left(Fichier$, Len(Fichier$)-1)+"_NoComment."+Extension$
   EndIf
  Debug Fichier$+"  |  "+Extension$+"   ==>  "+NewFichier$
  If ReadFile(0,NomFichier$)
   OpenFile(1,Chemin$+NewFichier$)
   UseFile(0)                       ; travaille sur le fichier en lecture (handle 0) 
   While Eof(0)=0
         ligne$ = ReadString()
         Debug "==>"+ligne$
         
      If Left(EnleveTab(ligne$),1) = "#"   ; on enlève les espaces devant et on vérifie si c'est un commentaire
        ; c'est un commentaire
      ElseIf ligne$>""
        ; ce n'est pas un commentaire : on écrit la ligne en conservant son formatage
         UseFile(1)
         WriteStringN(ligne$)
         UseFile(0)
         Debug "<=="+ligne$
      EndIf
      Wend
   EndIf
   CloseFile(0)
   CloseFile(1)
   MessageRequester("Commentaires #", "Toutes les lignes de commentaires (#) ont été enlevées.", #MB_OK|#MB_ICONINFORMATION)
EndIf

Procedure.s EnleveTab(ligne$)
   Repeat
      a$ = Left(ligne$,1)
      If a$ = " " Or a$ = Chr(9)
         ligne$ = Right(ligne$, Len(ligne$)-1)
      EndIf
   Until a$ <> " " And a$ <> Chr(9)
   ProcedureReturn ligne$
EndProcedure

Publié : ven. 27/mai/2005 16:23
par Progi1984
non, dsl !

Publié : sam. 28/mai/2005 12:52
par Golfy
FreeRADIUS est un système AAA (Authenticate, Authorize and Account) : il peut gérer une liste d'utilisateurs et de mots de passe ou bien s'interconnecter avec un serveur LDAP, une base /etc/password (Unix), etc.

Quand tu te connectes en ADSL, ton FAI utilise probablement un serveur RADIUS pour t'authentifier. FreeRADIUS est le projet Open-source de ce protocole (RADIUS est un protocole à l'origine).

Voilà, c'était juste pour l'information générale. Les fichiers ont de nombreux commentaires et l'édition ou la comparaison sont pénibles alors mon petit programme supprime les lignes commencant par # :)