Forum de la C-P-F

Version complète: Gestionnaire de login
Vous regardez actuellement la version basse qualité d'un document. Voir la version complète avec le bon formatage.
Voila, je pense faire un système de gestion de logins un peu particulier, dédié aux webmasters. Ce serait quelque chose de web-based, à priori en php + xml + xslt.
Le but est de pouvoir garder quelque part, et de manière exportable, tous les accès nécessaires à la gestion d'un site: ftp, sql...
Ce que ça donnerait à peu près:
Code XML :
<sites>
   <site name="Site 1">
      <icon>url icon</icon>
      <ftp>
         <host="ip/url" />
         <login="login1" />
         <pass="pass1" />
      </ftp>
      <sql>
         <host="ip/url sql" />
         <login="login sql" />
         <pass="pass sql" />
      </sql>
   </site>
   <site name="Site 2">
      <icon>url icon</icon>
      <ftp>
         <host="ip/url" />
         <login="login2" />
         <pass="pass2" />
      </ftp>
      <sql>
         <host="ip/url sql" />
         <login="login sql" />
         <pass="pass sql" />
      </sql>
   </site>
</sites>

Est-ce judicieux? sachant que le but est surtout d'avoir quelque chose de réutilisable ailleurs.
Pourquoi pas ... mais je ne suis pas sûr d'avoir réellement saisi le but.
Le format XML me dérange dans le sens où si le répertoire est mal protégé ou a été oublié d'être protégé, alors quelqu'un de mal intentionné récupère des infos critiques.
Je préfère que ce soit un script php qui génère un fichier xml, dans ce cas le script peut faire des contrôle avant de générer ou non le fichier xml ... mais ceci implique d'avoir les infos sauvegardé autre part ce qui ne va pas dans ton sens.

En ce qui concerne la partie base de données je le ferais plutôt comme ça pour que ce soit plus général.

Code XML :

<sites>
   <site name="Site 1">
      <icon>url icon</icon>
      <ftp name="description name">
         <host="ip/url" />
         <login="login1" />
         <pass="pass1" />
      </ftp>
      <database name="database name">
         <type="MySQL" />
         <host="ip/url sql" />
         <login="login sql" />
         <pass="pass sql" />
      </database>
   </site>
   ...
</sites>
 


enfin comme dit plus haut, je ne suis pas sûr d'avoir réellement saisi le besoin.
Oui, tout à fait d'accord avec toi sur le principe du XML, ne serait-ce que pour pouvoir ajouter l'url et le login/pass d'une interface d'admin, ...

Concernant le XML proprement dit, je pensais trouver un algo de codage des mots de passe et que les mots de passe ne soient décodés qu'avec un accès protégé.
ca a l'air interessant, le seul bemol est que étant donné que c'est web-based, l'utilisateur devra quand meme ouvrir son application favorite pour acceder au ftp ou à la base.
il faudrait penser un truc du genre créer un script pour lancer tel ou tel application, ou alors utiliser les application web destinés au base de données ou ftp.

juste une remarque, en xml:

Code :
<type="MySQL" />

ceci est faux, le nom d'une balise ne peut etre en meme temps un attribut

Code :
<type>MySQL</type>


une autre remarque qui m'a un peu bloqué dans mes fichiers: je me suis rendu compte qu'il vaut mieux mettre une description dans une balise plutot que dans un attribut (si elle est longue ou si elle comporte des \n)


ah oui, pour le cryptage, tu peux utiliser le module mcrypt de php?
enfin bon, c'est qu'une ébauche Smile

Bien entendu, le modèle est à affiner, et ce pour deux raisons:
1) c'est actuellement un simple projet, la syntaxe utilisée est plus conceptuelle qu'autre chose
2) le modèle définitif devra être évolutif pour pouvoir accepter un peu tout.

Concernant le cryptage des mots de passes, je cherche un système plutôt universel car le but est que le fichier xml soit transportable et réutilisable. But avoué: pouvoir développer une petite appli sur mon PDA qui exploiterait ce fichier soit en le prenant en ligne soit en local.

Je pense utiliser blowfish comme algorithme, mcrypt() semble pouvoir le décoder et il existe des sources dans la plupart des langages.
Bon, j'ai résolu le premier point: le codage/décodage des données "sensibles" (les mots de passe).
Je voulais utiliser la fonction mcrypt() mais je me suis rendu compte qu'elle n'était pas fréquemment installée sur les serveurs et le simple webmaster ne peux pas l'installer (il faut recompiler php).
Pour cela, j'ai créé une petite classe PHP qui à l'avantage d'être vraiment portable: elle se base uniquement sur de la translation de caractères et de l'encodage standard.

Je donne le code ici mais l'explication est à http://www.crazycat.info/astuce31-php-Cr...nnees.html

Code PHP :
<?
class encrypt {
   var $key;
   var $data;
   
   function init($key) {
      $this->sk = $key;
   }

   function code($string) {
      $this->data = '';
      for ($i = 0; $i<strlen($string); $i++) {
         $kc = substr($this->sk, ($i%strlen($this->sk)) - 1, 1);
         $this->data .= chr(ord($string{$i})+ord($kc));
      }
      $this->data = base64_encode($this->data);
   }

   function decode($string) {
      $this->data = '';
      $string = base64_decode($string);
      for ($i = 0; $i<strlen($string); $i++) {
         $kc = substr($this->sk, ($i%strlen($this->sk)) - 1, 1);
         $this->data .= chr(ord($string{$i})-ord($kc));
      }
   }
}
?>
Bon, je pense que la structure du XML commence à bien avancer.
La DTD
Code XML :
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT url (#PCDATA)>
<!ELEMENT site ((name, url, access+))>
<!ELEMENT server (#PCDATA)>
<!ELEMENT pass (#PCDATA)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT logins ((site+))>
<!ELEMENT login (#PCDATA)>
<!ELEMENT comment (#PCDATA)>
<!ELEMENT base (#PCDATA)>
<!ELEMENT access ((server, login, pass, (comment | (base, comment?))?))>
<!ATTLIST access
        type (web | ftp | database) #REQUIRED
>


Fichier exemple
Code XML :
<!DOCTYPE logins SYSTEM "logins.dtd">
<logins>
        <site>
                <name>Nom du site</name>
                <url>http://www.domain.com</url>
                <access type="ftp">
                        <server>127.0.0.1</server>
                        <login>moi</login>
                        <pass>password</pass>
                </access>
                <access type="database">
                        <server>localhost</server>
                        <login>moi</login>
                        <pass>password</pass>
                        <base>mybase</base>
                        <comment><![CDATA[my comments here]]></comment>
                </access>
                <access type="web">
                        <server>http://www.domain.com</server>
                        <login>moi</login>
                        <pass>password</pass>
                </access>
        </site>
        <site>
                <name>Nom du site 2</name>
                <url>http://www.domain.com</url>
                <access type="ftp">
                        <server>127.0.0.1</server>
                        <login>moi</login>
                        <pass>password</pass>
                        <comment><![CDATA[my comments here]]></comment>
                </access>
                <access type="database">
                        <server>localhost</server>
                        <login>moi</login>
                        <pass>password</pass>
                        <base>mybase</base>
                </access>
                <access type="web">
                        <server>http://www.domain.com</server>
                        <login>moi</login>
                        <pass>password</pass>
                </access>
        </site>
</logins>
ca serait interessant da rajouter un repertoire de base pour le ftp, au cas ou ca ne serait pas le repertoire racine
Je le note.
D'ailleurs, vous pouvez soumettre d'autres idées (types d'accès, paramêtres, ...)
en fait, ca depend qui l'utilise, si c'est pour des sites web normaux, ca a l'air assez, par contre si on commence à avoir des sites ou services plus évolués, on peut avoir besoin d'information genre port d'acces (base de données, intranet sur port autre que 80), acces ssh/sftp

pour ce qui est du port d'acces, il peut etre rajouté à la fin de l'adresse du serveur

mais ce qui est interessant avec le xml, c'est que l'ajout de balises ne modifie pas forcement le programme qui le gere, ce qui permet de le faire évoluer sans problèmes.
Pages: 1 2
URLs de référence