Artisan Numérique

/système/stockage/webdav/ Point sur les clients WebDAV

A l'origine pour tester mon serveur WebDAV pour Drupal, j'ai cherché à utiliser le maximum de clients pour ce protocole. L'idée ici est de vous les présenter.

Pour tester la prochaine version de mon module serveur WebDAV pour Drupal, j'ai eu besoin de tester assez systématiquement les clients WebDAV les plus utilisés. Alors autant que cela serve à ceux qui comme moi, ne savent plus bien vivre sans ce protocole.

A l'origine pour tester mon serveur WebDAV pour Drupal, j'ai cherché à utiliser le maximum de clients pour ce protocole. L'idée ici est de vous les présenter.

Pour tester la prochaine version de mon module serveur WebDAV pour Drupal, j'ai eu besoin de tester assez systématiquement les clients WebDAV les plus utilisés. Alors autant que cela serve à ceux qui comme moi, ne savent plus bien vivre sans ce protocole.

Un client WebDAV

Un serveur WebDAV est nativement compatible avec la norme HTTP et vous pouvez naviguer en lecture seule sur un partage à l'aide d'un simple navigateur WEB. Cependant, pour pouvoir parcourir, éditer, supprimer, il va nous falloir quelque chose de plus évolué. Et fort heureusement, des clients WebDAV, il y en a pour tous les goûts.

Ici vous trouverez les clients principaux mais il y en a sûrement d'autres. A chaque fois, je fini mon topo par les caractéristiques comparées de chacun des clients. Cela comprend l'identifiant WEB du client, la capacité de garder la connection (keep-alive), la capacité de s'authentifier, d'utiliser un transport crypté, les sessions à base de cookies (évitant une authentification sur le serveur à chaque fois), la compression GZIP et l'utilisation de la propriété displayname. Ce dernier point n'est pas annodin car la base de référence d'une ressource WebDAV est son URI. Or une URI ne peut contenir n'importe quel caractère (genre ;, # ou ?). Et même encodé correctement, certains clients bloquent si l'URI n'est pas en simple ASCII. La propriété displayname permet de définir par ressource (et donc par URI), un nom lisible utilisé pour l'affichage.

DavFS2

DavFS, et son remplaçant, DavFS2, permettent de monter par la commande mount une URL WebDAV comme n'importe quel autre système de fichier Unix. Il utilise en interne la librairie Neon comme Litmus, la suite de test de compatibilité du protocole WebDAV ou encore subversion.

DavFS2 permet donc à toutes les applications de pouvoir bénéficier du support WebDAV sans qu'elles en aient conscience. Pour accélérer les échanges avec le serveur, DavFS2 utilise un système de cache local avec pour inconvénient la non instantanéité des sauvegarde par rapport au serveur. Ceci mis à part, DavFS2 marche merveilleusement. Pour vous connecter à une ressource par ce biais, il faut bien sur installer le paquet favfs2 et taper en tant que root :

mount -t davfs2 http://mon_server/partage /mnt/mon_partage/ -o uid=gaston
Identifiant de l'agent davfs2/1.3.3 neon/0.28.3
Conection continue (keep-alive) oui
Autentification oui
Transport SSL oui
Session (cookies) non
Compression des données non
Display Name oui, oui, mais il faut ajouter
use_displayname=1 dans
/etc/davfs/davfs.conf.

Pour automatiser le montage, il suffit d'ajouter dans /etc/fstab

http://mon_site/dav /media/dav davfs2 auto,user 0 0

Vous pouvez aussi rajouter gid=... et/ou uid=... pour spécifier un groupe ou un utilisateur à qui appartiendra le montage (sinon ce sera root...). Il est aussi possible de remplacer auto par noauto pour ne pas monter le partage au démarrage.

Pour éviter d'avoir à saisir le mot de passe à chaque fois, il faut ajouter le fichier /etc/fstab2/secrets avec quelque chose comme ceci :

"http://mon_site/dav"  gaston        "mot_de_passe"

Il existe aussi un autre projet du même genre, wfds, que je n'ai pas testé.

Cadaver

Contrairement à DavFS, Cadaver ne cherche pas à "simuler" un système de fichier mais à fournir un interpréteur de commande très similaire de celui d'un client FTP. L'avantage de cette stratégie réside en le fait que les commandes utilisable sont très proches de celles du protocole d'origine.

Pour simplifier l'authentification, Cadaver utilise comme le client FTP, un fichier ~/.netrc qui contiendra une liste d'identifiants sous la forme monsite.com login gaston password un_secret. Ensuite, pour se connecter, il suffit de taper :

cadaver http://mon_site/partage
Identifiant de l'agent cadaver/0.23.2 neon/0.28.3
Connection continue (keep-alive) oui
Autentification oui
Transport SSL oui
Session (cookies) non
Compression des données non
Display Name non

Nautilus via GVFS

Je ne reviens pas sur GIO/GVFS, je me suis déjà longuement étendu sur le sujet. Grâce à cette nouvelle structure et le greffon gvfs-dav écrit par Christian Kellner que je remercie ici, Nautilus devient dés-facto un client WebDAV très acceptable. le seul reproche que je pourrais lui faire, mais c'est encore un jeune développement, est sa lenteur souvent liée à un excès de requêtes au serveur. Les futures versions seront sans nul doute plus optimisées.

Pour se connecter, il faut savoir que pour Gnome, le protocole WebDAV ne s'écrit pas webdav:// mais dav:// (et davs:// pour la version sécurisé). Pourquoi ? je n'en sais rien, sûrement une histoire de grand-mère là dessous... Toujours est-il que pour se connecter, il faut saisir dans l'URL de Nautilus quelque chose comme dav://mon_server/. Là les fichiers et dossiers s'affichent, on peut naviguer et lancer par exemple un gedit sur un fichier. La magie GVFS opérant, le contenu devrait s'ouvrir et vous pouvez le modifier et le sauver. De même avec OpenOffice 3.0, Gimp, etc.

Identifiant de l'agent User-Agent : gvfs/0.99.7.1
Connection continue (keep-alive) oui
Autentification oui
Transport SSL oui
Session (cookies) non
Compression des données non
Display Name oui

Dolphin via KIO

Dolphin semble être devenu pour KDE ce que Nautilus est à Gnome, en moins ergonomique à mon goût. Mais du point de vue WebDAV, le mérite allant à l'excellent KIO_Slave, c'est de loin le meilleur client graphique que j'ai testé. Tout fonctionne à merveille mais surtout de manière très rapide. Et pour cause, c'est le seul, avec DAVExplorer, à prendre en charge la compression et le seul tout court à utiliser les sessions (cookies).

Pour se connecter, l'URL standard est ici webdav://mon_site (ou webdavs:// pour la version cryptée).

Identifiant de l'agent mozilla/5.0 (compatible;
konqueror/4.1; linux)
khtml/4.1.1 (like gecko)
Connection continue (keep-alive) oui
Autentification oui
Transport SSL oui
Session (cookies) oui
Compression des données oui
Display Name oui

DAVExplorer

Alors Ok, il est très, mais alors très super moche avec son look and fell des années 2000 et ses icônes fauchées à Windows 95. Malgré tout, il mérite l'attention car déjà, écrit en Java, il est totalement cross-plate-formes. Ensuite comme Dolphin, il a pour lui la prise en charge de la compression. Le résultat est une navigation très rapide sur les grands volumes de ressources. A se demander pourquoi les autres ne le font pas.

Identifiant de l'agent uci dav explorer/0.91 rpt-httpclient/0.3-3e
Connection continue (keep-alive) oui
Autentification oui
Transport SSL oui
Session (cookies) oui
Compression des données oui
Display Name ?

MacOS/webdavfs 1.3

Nan, je n'ai pas acheté un Mac, j'ai juste découvert que VmWare était parfaitement capable de faire tourner MacOS 10.4.7. Du coup, j'ai pu aller voir ce que valait cet OS tellement ergonomique... Bon, les goûts et les couleurs, on ne va pas s'étendre là dessus. Le truc qui nous intéresse est que cet OS prend en charge nativement WebDAV via le menu Go (pour les gens comme moi, pensez à clicker sur le bureau avant pour que le menu apparaisse...). Ensuite allez sur Connect to server.... Là vous rentrez votre URL à la mode http:// ou https://, vous l'ajouter, vous la sélectionnez et vous clickez sur Connect (je n'ai qu'une version anglaise ;-).

A ce stade la fenêtre d'exploration s'ouvre, et une icône est apparue sur le bureau. Après toutes les opérations sont possibles comme avec Nautilus. Vous pouvez ainsi ouvrir un fichier avec une application de votre choix de manière absolument transparente. Et pour cause, en interne MacOS utilise un bête mount et va donc greffer l'arborescence WebDav dans le dossier /Volumes.

Du coup la même chose est possible en passant par un terminal via GO/Applications/Utilities``Terminal. Là vous pouvez lancer la commande suivante :

mkdir /Volumes/webdav
mount_webdav http://mon_serveur /Volumes/webdav
...
umount /Volume/webdav
Identifiant de l'agent webdavfs/1.3 (01308000) darwin/8.1.0 (x86)
Connection continue (keep-alive) oui
Autentification oui
Transport SSL oui
Session (cookies) non
Compression des données non
Display Name ?

Windows XP

La bonne nouvelle est que le WebDAV est une notion standard sous Windows. Pas besoin donc d'écumer le net à la recherche d'une installation plus ou moins vérolée. Il suffit d'aller dans la fenêtre du réseau, d'ajouter un nouveau favoris réseau, et de saisir l'URL du serveur sous la forme http://mon_serveur (ou https://). Là le bougre mouline un peu, trouve le titre du serveur et vous propose de créer votre favoris. Ceci fait, une fenêtre s'ouvre sur le serveur et les applications semblent être capable d'ouvrir et les sauver les fichiers sans problèmes.

Identifiant de l'agent microsoft data access internet publishing provider protocol discovery
Connection continue (keep-alive) oui
Autentification oui
Transport SSL oui
Session (cookies) non
Compression des données non
Display Name oui

Conclusion

Dolphin est de loin le plus versatile des clients WebDAV, il prend tout en charge et reste très rapide. Mais nautilus/GVFS est encore jeune et je suis persuadé qu'il devrait rattraper ce retard maintenant que l'infrastructure GVFS est en place.

Côté "autres OS", j'avoue avoir été étonné par Windows pour une fois, il fait le job, sans poser le moindre problème. Un respect des normes qui est à saluer connaissant la triste réputation de Microsoft en le domaine. A noter d'ailleurs que la meilleur documentation du protocole WebDAV est aussi chez eux.aspx).