Créer une sorte de console d'administration du fichier httpd.conf d'un serveur A

kilinette Messages postés 6 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 20 juin 2004 - 15 juin 2004 à 15:08
kilinette Messages postés 6 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 20 juin 2004 - 20 juin 2004 à 20:04
Bonjour :)

Voilà je suis en stage et n'ayant jamais travaillé sous Delphi je suis un peu perdue... (Et les explications évasives sur ce que je dois faire n'aident pas !).

Je dois donc créer une sorte de console pour gérer le fichier htppd.conf d'un serveur Apache (un fichier texte).
On m'a demandé pour se faire de représenter sous une TreeList les principaux éléments du fichier et de faire en sorte de pouvoir y rajouter des entrées, où en supprimer...

Petit aperçu du fichier, ça sera plus clair :I

....

#

LoadModule Apa_0031 "C:\Delphi6_Trav\toto\Apache\Apa_Mais2\Apa_0031.dll"
<location /Apa_0031>
   SetHandler Apa_0031-handler
</location>

LoadModule Apa_CE "C:\Delphi6_Trav\toto\Apache\Apa_Ce\Apa_CE.dll"
<location /Apa_CE>
   SetHandler Apa_CE-handler
</location>

LoadModule Apa_Utilisateurtoto "C:\Delphi6_Trav\toto\DataModules\Datatoto\devel\exe\Apa_Utilisateurtoto.dll"
<location /Apa_Utilisateurtoto>
SetHandler Apa_Utilisateurtoto-handler
</location>

LoadModule Apa_Datatoto "C:\Delphi6_Trav\toto\DataModules\Datatoto\devel\exe\Apa_Datatoto.dll"
<location /Apa_Datatoto>
SetHandler Apa_Datatoto-handler
</location>

LoadModule Apa_ServeurLog "C:\Delphi6_Trav\toto\DataModules\Datatoto\devel\exe\Apa_ServeurLog.dll"
<location /Apa_ServeurLog>
SetHandler Apa_ServeurLog-handler
</location>

LoadModule Apa_Produits "C:\Delphi6_Trav\toto\DataModules\Datatoto\devel\exe\Apa_Produits.dll"
<location /Apa_Produits>
SetHandler Apa_Produits-handler
</location>

LoadModule Apa_Structure "C:\Delphi6_Trav\Stoto\DataModules\toto\devel\exe\Apa_Structure.dll"
<location /Apa_Structure>
SetHandler Apa_Structure-handler
</location>

#

....


Voilà, alors ça c'est une partie du fichier que je dois représenter sous forme de TreeList. Sous une racine 'LoadModule' représenter les sous éléments 'Apa_0031', 'Apa_CE', etc... et en afficher le contenu dans une fenêtre par exemple. Il faut que je puisse soit en supprimer (j'efface le fils dans la TreeList et ça me supprime la partie correspondante ds le fichier httpd) soit en rajouter (création d'un fils ds la TreeList et ça me rajoute la partie ds le fichier httpd).

Voilà, je ne sais pas comment créer les sous-éléments de la racine déjà :I Il faut parcourir le texte avec un système de balise j'imagine mais je suis perdue... Idem pour la suppression et la création.

Puis je ne trouve rien sur les TreeList et ses commandes :(

Si quelqu'un peut m'aider... 8) Si quelqu'un à compris déjà :D

10 réponses

cs_Kenavo Messages postés 702 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 1 octobre 2009 5
16 juin 2004 à 08:56
Euh, TreeList ou TreeView

Si c'est TreeView, pour mettre dans la racine c'est :
TreeView1.Items.Add(nil,LeTexteDeLaRacine);
Pour ajouter un enfant :
TreeView1.Items.AddChild(TreeView1.Items[Idx],LeTexteDeLEnfant);
où Idx est l'index de l'élément de l'arbre auquel on rajoute un enfant.
Dans ton cas ça peut donner :

TreeView1.Items.Clear
....
IdxLoadModule := TreeView1.Items.Count;
TreeView1.Items.Add(nil,'LoadModule');  
....
TreeView1.Items.AddChild(TreeView1.Items[IdxIdxLoadModule],ApaTexte);
...


Bon stage,

Ken@vo
____________________
Code, Code, Codec !
0
kilinette Messages postés 6 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 20 juin 2004
16 juin 2004 à 13:51
Je dois le faire avec une TreeList, j'avais commencé avec TreeView mais on m'a demandé de changer :sad)
0
cs_Kenavo Messages postés 702 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 1 octobre 2009 5
16 juin 2004 à 15:30
Bon, ben c'est pas trop grave !
TreeList n'est pas un composant "standard" de Delphi (ou Kylix), mais, les Items du TreeList sont des TTreeNode aussi !
Ca peut se remplir pareil. Pour remplir les colonnes, il faut juste séparer les champs par un ';' par exemple :
ApaTexte := TexteItem+';'+TexteColonne1+';'+TexteColonne2;
ListView1.Items.AddChild(ListView1.Items[IdxLoadModule],ApaTexte);


A+

Ken@vo
____________________
Code, Code, Codec !
0
kilinette Messages postés 6 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 20 juin 2004
16 juin 2004 à 20:37
Pour mettre une partie du texte ds les colonnes de la TreeList il faut faire comment ?
Par exemple, dans la première colonne il y aura une racine 'Module' puis des enfants 'Apa_031', 'Apa_CE'... Dans la deuxième colonne il y aura "C:\Delphi6_Trav\toto\Apache\Apa_Ce\Apa_CE.dll" en face d' 'Apa_031' , "C:\Delphi6_Trav\toto\Apache\Apa_Ce\Apa_CE.dll" en face d' 'Apa_CE, etc... Puis encore en face ds la 3ème colonne, ce qui se situe entre les <handler>.
Puis parcourir le texte et en extraire les bonnes parties, je ne sais pas comment faire encore !

Je suis désolée, mais je n'ai jamais trop fait de programmation en fat, ce n'est pas spécialement dans ce domaine que je cherchais un stage... Pardon de vous déranger avec mes questions :sad)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
MoveX Messages postés 230 Date d'inscription vendredi 9 mai 2003 Statut Membre Dernière intervention 16 juillet 2005 1
16 juin 2004 à 22:42
salut, pourrais tu menvoyer ton fichier par mail stp, j ai un peu la flemme d installer apache enfin bref.
je vais tenter de voir si je peux taider...
mon mail cest movexarea@free.fr
0
cs_Kenavo Messages postés 702 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 1 octobre 2009 5
17 juin 2004 à 10:05
Salut Kilinette,

Pour le remplissage du TreeList, c'est comme je disais plus haut. Pour le parcours du fichier, tu dois utiliser les fonctions des TextFile.
Ce qui nous donne :

procedure TForm1.FormActivate(Sender: TObject);
var
  f : TextFile;
  s : string;
  i : integer;
  Textes, TextesHandler : TabString;
begin
  AssignFile(f,'File1.txt');
  Reset(f);
  While not eof(f) and (s<>'#') do
    Readln(f,s);
  While not eof(f) and (s<>'#') do
    begin
      Readln(f,s);
      if Uppercase(Copy(s,1,10))='LOADMODULE' then
        begin
          Textes := Decoupe(s,' ',3,i);  // revoie les 3 premières sous-chaines de s
          Readln(f,s);   // Saute la ligne suivante
          Readln(f,s);   // Lit la suivante
          TextesHandler := Decoupe(s,' ',2,i);  // revoie les 2 premières sous-chaines de s
          if TreeList1.Items.Count = 0 then // 1er bloc
            TreeList1.Items.Add(nil,Textes[0]);  // Rajout dans la racine de l'arbre
  TreeList1.Items.AddChild(TreeList1.Items[0],Textes[1]+';'+Textes[2]+';'+TextesHandler[1]);
          //  A  cet item racine on ajoute
          //  Textes[1] dans la 1ère colonne
          //  Textes[2] dans la 2ème colonne
          //  extesHandler[1] dans la 3ème colonne
        end;
    end;
  CloseFile(f);
end;

Decoupe est une fonction que je viens de déposer dans les sources

Ca devrait faire ton bonheur. Ou presque !

Ken@vo
____________________
Code, Code, Codec !
0
cs_Kenavo Messages postés 702 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 1 octobre 2009 5
17 juin 2004 à 10:15
pas 'File1.txt', mais le nom complet du fichier httpd.conf

Ken@vo
____________________
Code, Code, Codec !
0
kilinette Messages postés 6 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 20 juin 2004
17 juin 2004 à 17:15
Petite modification, c'est avec les TreeView que je dois faire ça maintenant et non plus TreeList, mon responsable a changé d'avis, encore... :sad)
0
kilinette Messages postés 6 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 20 juin 2004
19 juin 2004 à 09:02
Voilà, j'ai trouvé une source faisant en partie ce que je voudrais :)

zip

Bon le fonctionnement de la recherche dans le fichier me passe un peu au-dessus de la tête encore. Il me faudrait modifier pour que ça liste les loadmodule, alias et scriptalias également !
Après, de pouvoir en rajouter ou en supprimer, je ne pense pas que ça soit trop difficile...

Si qq'un veut regarder et y comprend qq chose, ça m'aiderait ;) . Enfin au moins ça fait comprendre clairement ce que j'essaye de faire !!

Merci à tous !
0
kilinette Messages postés 6 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 20 juin 2004
20 juin 2004 à 20:04
Oups, trompée, apparemment ce ne sont pas les bonnes balises, enfin voilà le lien !

http://kilinette.site.voila.fr/ApacheConfigEditor.zip

J'ai vu des modifications à apporter qui me semblent à ma portée et d'autres déhà faites ! :)
Cependant là où je bloque c'est ce qu'il faut modifier pour que l'arbre liste également les enfants de LoadModule, Alias et ScriptAlias :question) J'ai passé l'après-midi à lire et relire et je ne vois pas :sad)
Si quelqu'un à la courage de lire la source et y comprend quelque chose, je lui en serai reconnaissante à vie :oops: J'ai l'impression que les unités ArgMgr, DelphiConfEntry et clxokcancl1 ne servent pas à grand chose... :question)

Merci :blush)
0
Rejoignez-nous