Table des matières

, ,

Notes Webdav

Serveur

Voir :

Vérifier que votre serveur implémente implémente correctement le protocole Webdav avec Litmus

WebDAV server protocol compliance test suite

Nginx

Voir proxy_request_buffering off;

apt-get install nginx-full

/etc/nginx/sites-available/webdav

server {
    listen 80;
    server_name webdav.acme.fr;
 
    access_log  /var/log/nginx/webdav-access.log;
    error_log  /var/log/nginx/webdav-error.log;
 
    autoindex on;
    charset utf-8;
    client_max_body_size 10M;
 
location / {
    root /var/www/webdav;
 
    #client_body_temp_path /var/www/webdav-tmp;
 
    dav_methods PUT DELETE MKCOL COPY MOVE;
    dav_ext_methods PROPFIND OPTIONS;
    #auth_basic_user_file $HOME/.htpasswd;
    #min_delete_depth 0;
 
    #auth_basic "Restricted";
    #auth_basic_user_file /etc/nginx/webdav.htpasswd;
 
    create_full_put_path  on;
    dav_access user:rw group:rw all:r;
 
    limit_except GET {
        allow 192.168.1.22;
        allow all;
        #deny  all;
    }
}
}

davserver (python)

Voir :

#sudo apt-get install python3-webdav
python3 -m pip install PyWebDAV3

config.ini

[DAV]
 
#baseurl =
baseurl = https://dav.acme.fr
 
# Verbose?
# verbose enabled is like loglevel = INFO
verbose = 1
 
#log level : DEBUG, INFO, WARNING, ERROR, CRITICAL (Default is WARNING)
#loglevel = WARNING
 
# main directory 
directory = /var/www/webdav
 
# Server address
port = 8082
host = localhost
 
# disable auth
noauth = 1
 
# Enable mysql auth
mysql_auth=0
 
# admin user
user = test
password = test00
 
# daemonize?
daemonize = 0
daemonaction = start
 
# instance counter
counter = 0
 
# mimetypes support
#mimecheck = 1
mimecheck = 0
 
# webdav level (1 = webdav level 2)
lockemulation = 1
 
# internal features
#chunked_http_response = 1
#http_request_use_iterator = 0
#http_response_use_iterator = 0
su - www-data 
davserver -c config.ini

Weborf - Le serveur ultra léger

https://github.com/ltworf/weborf/blob/master/examples/auth.py

apt-get install weborf
python /usr/share/doc/weborf/examples/auth.py
chmod 777 /tmp/weborf_auth.socket
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 8083 -j REJECT
iptables-save > /etc/iptables/rules.v4

Client

Voir :

davfs2 http://doc.ubuntu-fr.org/davfs2

cadaver https://webdav.acme.fr

Pour ne pas taper le mdp à chaque fois

~/.netrc

default
login    myusername
password P@ssw0rd
 
machine  webdav.acme.fr
login    myusername
password P@ssw0rd
chmod 600 ~/.netrc

Voir man netrc

Exemple de fichier conf (commandes lancées automatique au démarrage de cadaver)

~/.cadaverrc

set editor vim
set pager less
set tolerant

cd home

WDFS

Voir aussi :

Ajout de l'utilisateur “jean” au groupe “fuse” Apparement pas nécessaire si fuse est installé alors qu'il n'existe pas de compte “fuse” Est-ce lié à systemd ?

adduser jean fuse

Montage (dans un dossier vide)
Exemples :

mkdir -p ~/mnt/wd-partage
wdfs -o username=utilisateur -o password=MDP_En_Clair https://webdav.acme.fr/partage ~/mnt/wd-partage

Pour démonter

fusermount -u ~/mnt/

Protocole

Curl

Faut-il préciser le Content-Type ?

curl -XPROPFIND https://user:pass@dav.acme.fr/ -H "Depth:infinity" |xmllint --format -
 
curl --request PROPFIND  --user user:pass --header "Content-Type: text/xml" --header "Brief:t" --data "<D:propfind xmlns:D='DAV:'><D:prop><D:displayname/></D:prop></D:propfind>" https://dav.acme.fr/
 
curl -X PROPFIND -H "Content-Type: text/xml" http://USER:PASSWORD@HOST/owncloud/remote.php/webdav/FOLDER | xmllint --format -

Envoyer un fichier

curl -X PUT https://webdav.server/dir/file.txt -d @~/file.txt

Déplacer un fichier

curl -X MOVE -H 'Destination: https://webdav.server/dir/file2.txt' https://webdav.server/dir/file.txt

Juste un bout d'un fichier grâce à Content-Range

curl -H 'Content-Range: bytes 10-20/*' https://webdav.server/dir.file.txt