PROJET AUTOBLOG


Planet-Libre

source: Planet-Libre

⇐ retour index

Simon Vieille : Sharepoint Office365 sur Linux (Webdav/Davfs) avec des fichiers accentués

jeudi 30 août 2018 à 18:20

Suite de l'aventure avec Sharepoint !

Je me suis rendu compte que les répertoires et les fichiers nommés avec des accents ne sont pas montés par Davfs. Le problème vient bien sur de Microsoft qui n'est pas foutu d'implémenter un protocole en suivant les standards ! Le support technique est une vraie plaie et ne veut pas comprendre que le problème vient de chez eux…

En effet, les spécifications WebDAV indiquent que les caractères spéciaux (espace compris) doivent être encodés en %XXX. Par exemple, on doit retrouver %C3%A9 à la place de é. Or, Sharepoint ne remplace que les espaces (%20). Voici une partie de la réponse HTTP formée par Sharepoint pour un fichier nommé "éducation.pdf" :

https://foo.sharepoint.com/sites/bar/Documents%20partages/éducation.pdf

Alors que ça devrait être sous cette forme :

https://foo.sharepoint.com/sites/bar/Documents%20partages/%C3%A9ducation.pdf

Du coup, j'ai du travaillé sur un correctif et voici une POC qui corrige le problème. Elle consiste à faire passer les requêtes HTTP de DavFS à travers un proxy qui fera le boulot de Sharepoint : encoder les caractères en question !

Je travaille sur ma machine de dev dans ~/www/repo/sharepoint-webdav-proxy.

J'ai choisi le proxy mitmproxy car on peut modifier les requêtes et les réponses à la volé.

Les binaires de mitmproxy sont placés dans ./bin/. Si vous lancez une première fois bin/mitmproxy, des certificats SSL seront créés dans ~/.mitmproxy/.

Configuration de DavFS :

$ sudo cp ~simon/.mitmproxy/mitmproxy-ca-cert.pem /etc/davfs2/certs/

Dans /etc/davfs2/davfs2.conf, j'ai ajouté :

[/mnt/sharepoint/]
proxy 127.0.0.1:8118
trust_ca_cert /etc/davfs2/certs/mitmproxy-ca-cert.pem
use_proxy 1
[...]

Adapteur WebDAV :

Dans src/webdav-adapter.py :

Lancement du proxy :

./bin/mitmdump --mode regular --listen-host 127.0.0.1 --listen-port 8118 -s ./src/webdav-adapter.py

Une fois tout ça réalisé, mount.davfs va pouvoir monter les répertoires/fichiers accentués.

Gravatar de Simon Vieille
Original post of Simon Vieille.Votez pour ce billet sur Planet Libre.