Supprimer lignes de commentaires dans fichiers freeRADIUS

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Golfy
Messages : 423
Inscription : mer. 25/août/2004 15:14
Localisation : Grenoble
Contact :

Supprimer lignes de commentaires dans fichiers freeRADIUS

Message 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
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

FreeRadius ?
Golfy
Messages : 423
Inscription : mer. 25/août/2004 15:14
Localisation : Grenoble
Contact :

Message 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
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

non, dsl !
Golfy
Messages : 423
Inscription : mer. 25/août/2004 15:14
Localisation : Grenoble
Contact :

Message 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 # :)
Répondre