bien vu la station... il y a le SSH qui est ajouté dans ma version locale...
Pour le port, il peut effectivement être intéressant, surtout si on ajoute dans la liste des serveurs les mails (donc le port pop/imap/ssl)
Bon, voila que j'approche d'un résultat XML qui commence à ressembler à quelque chose.
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!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>
<more><![CDATA[base name]]></more>
<more><![CDATA[some comments]]></more>
</access>
<access type="web">
<server port="80">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>
<more><![CDATA[my mores here]]></more>
</access>
<access type="database">
<server>localhost</server>
<login>moi</login>
<pass>password</pass>
<more><![CDATA[mybase]]></more>
</access>
<access type="web">
<server>http://www.domain.com</server>
<login>moi</login>
<pass>password</pass>
</access>
</site>
<site>
<name>Accès SSH</name>
<url>http://www.myssh.com</url>
<access type="ssh">
<server port="22">192.168.0.1</server>
<login>nobody</login>
<pass>mypass</pass>
</access>
</site>
<site>
<name>Accès mail</name>
<url>http://webmail.domain.com</url>
<access type="mail">
<server port="110">mail.domain.com</server>
<login>nobody@domain.com</login>
<pass>mypass</pass>
<more><![CDATA[my email account]]></more>
</access>
</site>
</logins>
Et la DTD est fort jolie aussi, en plus elle est commentée.
<?xml version="1.0" encoding="ISO-8859-1"?>
<!ELEMENT logins (site+)>
<!-- La racine, contient au moins un éléement de type "site" -->
<!ELEMENT site (name, url, access+)>
<!-- L'élément "site" contient les éléments "url", "name" et au moins un élément "access" -->
<!ELEMENT name (#PCDATA)>
<!ELEMENT url (#PCDATA)>
<!ELEMENT access (server, login, pass, more*)>
<!-- L'élément access contient un élément "server", un élément "login", un élément "pass" et peu contenir un ou des éléments "more" -->
<!ATTLIST access
type (web | ftp | database | ssh | mail) #REQUIRED
>
<!-- L'élément "access" doit contenir un attribut de la liste donnée -->
<!ELEMENT server (#PCDATA)>
<!ATTLIST server
port CDATA #IMPLIED
>
<!-- L'élément "server" peut contenir un attribut "port" -->
<!ELEMENT login (#PCDATA)>
<!ELEMENT pass (#PCDATA)>
<!ELEMENT more (#PCDATA)>
Nota: je retravaillerais le template GeSHi pour les XML pour refaire la mise en couleur.
Je me suis amusé à créer un .xml et un .xsl pour effectuer la transformation, le résultat est assez sympa:
http://www.c-p-f.org/sources/login.xml
Le code du .xsl:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>Gestion de mots de passe</h2>
<table witdh="80%" border="1">
<xsl:for-each select="logins/site">
<tr>
<th colspan="6"><xsl:value-of select="name" /> (<a href="{url}"><xsl:value-of select="url" /></a>)</th>
</tr>
<tr>
<th>Type</th>
<th>Adresse:port</th>
<th>Login</th>
<th>Password</th>
<th>Commentaires</th>
</tr>
<xsl:for-each select="access">
<tr>
<td><img src="./images/{@type}.gif" alt="{@type}" /></td>
<td><xsl:value-of select="server" />
<xsl:if test="./server/@port!=''">:<xsl:value-of select="./server/@port" /></xsl:if></td>
<td><xsl:value-of select="login" /></td>
<td><xsl:value-of select="pass" /></td>
<td><xsl:value-of select="more" /></td>
</tr>
</xsl:for-each>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>