dgraziotin / docker-nginx-webdav-nononsense Goto Github PK
View Code? Open in Web Editor NEWAims to enable a no-nonsense WebDAV docker system on the latest available nginx mainline. Magic included?
License: MIT License
Aims to enable a no-nonsense WebDAV docker system on the latest available nginx mainline. Magic included?
License: MIT License
Hi,
thank you for your great work! I am very happy to have such a well-working nginx webdav container at hand.
I just wanted to leave a note about a small possible documentation update. I am using another nginx container as reverse proxy and I noticed that I needed to also add client_max_body_size
to the configuration of the reverse proxy. Otherwise, the proxy would refuse large files with http error 413 Payload Too Large
before the file even makes it to the webdav server.
My full reverse proxy config looks like this, so very simple:
server {
listen 443 ssl http2;
server_name xxxx;
location / {
set $upstream "nginxwebdav";
proxy_pass http://$upstream;
proxy_buffering off;
}
client_max_body_size 10G;
}
If you agree with this change I could propose a documentation update as a pull request. Just wanted to discuss this first.
Cheers
Hi,
Would you please consider to add #61 the part where @FlorianEndel explains how to add the Multi Users with one container, to the readme section. I think it would be very helpful to other who are looking for a way to use webdav with Multi Users.
I have successfully setup your container for Multi Users as he described!
TIA
Thanks for your excellent docker image!
I am trying to use this image to setup a webdav enviroment to test OpenDAL's webdav service.
apache/opendal#2873
However, I face some problems when I want to mount a volume for data
like this:
version: '3.8'
services:
webdav:
image: dgraziotin/nginx-webdav-nononsense
...
volumes:
- webdav-data:/data
...
volumes:
webdav-data:
You can check what we actually write this docker compose file in https://github.com/apache/incubator-opendal/pull/2873/files/111e694f7c036cfcc8e92649db9fce28206c8666
The webdav service gave us the 403 Forbidden
error. Log: https://github.com/apache/incubator-opendal/actions/runs/5877080995/job/15936499613?pr=2873
Errors may be caused by incorrect permission settings. We try to add a Dockerfile and that solve this problem:
FROM dgraziotin/nginx-webdav-nononsense
RUN chown -R abc:abc /data
We seem need to create the dir and set the permission first before mark it as a volumn.
Is it possible to change the copied file permissions when copying from remote to server from -rw------- ?
Usecase I sometimes use the copied files in programs like e.g. photo servers (librephotos) and I cant view my asserts unless I change the copied files permissions
I've looked at nginx.conf and cant figure out if this parameter was set
Also google search didnt helped out much
I've seen the "dav_access user:rw group:rw all:r;" parameter but I have no idea where I should put this in the nginx.conf
Thanks
this is more a suggestion not an issue
add a restart policy to the docker-compose.yml
i tried to add a restart: unless-stopped
at the end of the file but it throws error when i docker-compose up -d
ERROR: yaml.scanner.ScannerError: while scanning for the next token
found character '\t' that cannot start any token
in "./docker-compose.yml", line 20, column 21
actually i think it throws error whenever i try to add anything in to the file and "break" its structure?
i added a restart policy by sudo docker update --restart unless-stopped container_name
and
sudo docker inspect container_name
tells me
"RestartPolicy": {
"Name": "unless-stopped",
"MaximumRetryCount": 0
},
so i'm guessing its applied
keep up
Hello,
Would you consider to add "Last-Modified" header to Access-Control-Allow-Headers?
Some apps, specially "keeweb" needs it to work properly. I use now your image with a modified ngix.conf, but others may benefit from this change.
Thank you,
This is part of #8.
After fixing #11, it is only possible to access the root folder of the WebDAV location and see a file listing. No other operation (traverse, access) is possible.
It is also not possible to access the mapped WebDAV location a second time, after adding it.
Accessing the same file is greeted with an HTTP 401 with Microsoft/Explorer:
Microsoft/Explorer:
nginxwebdav | 172.21.0.1 - - [10/Dec/2021:14:45:33 +0100] "GET /ciao.txt HTTP/1.1" 401 179 "-" "Microsoft-WebDAV-MiniRedir/10.0.22000"
Whereas with macOS Finder:
nginxwebdav | 172.21.0.1 - user [10/Dec/2021:14:47:10 +0100] "PROPFIND / HTTP/1.1" 207 1377 "-" "WebDAVFS/3.0.0 (03008000) Darwin/21.1.0 (x86_64)"
nginxwebdav | 172.21.0.1 - user [10/Dec/2021:14:47:11 +0100] "PROPFIND /ciao.txt HTTP/1.1" 207 371 "-" "WebDAVFS/3.0.0 (03008000) Darwin/21.1.0 (x86_64)"
nginxwebdav | 172.21.0.1 - user [10/Dec/2021:14:47:11 +0100] "PROPFIND / HTTP/1.1" 207 335 "-" "WebDAVFS/3.0.0 (03008000) Darwin/21.1.0 (x86_64)"
nginxwebdav | 172.21.0.1 - user [10/Dec/2021:14:47:13 +0100] "LOCK /ciao.txt HTTP/1.1" 200 383 "-" "WebDAVFS/3.0.0 (03008000) Darwin/21.1.0 (x86_64)"
nginxwebdav | 172.21.0.1 - user [10/Dec/2021:14:47:13 +0100] "GET /ciao.txt HTTP/1.1" 304 0 "-" "WebDAVFS/3.0.0 (03008000) Darwin/21.1.0 (x86_64)"
nginxwebdav | 172.21.0.1 - user [10/Dec/2021:14:47:13 +0100] "UNLOCK /ciao.txt HTTP/1.1" 204 0 "-" "WebDAVFS/3.0.0 (03008000) Darwin/21.1.0 (x86_64)"
Describe the bug
I'm using docker compose, and I am not able to pass through an existing windows network share to the data directory. No matter what I do, the data directory is blank.
I have tried:
d:/path/folder
/d/path/folder
d:\path\folder
Can you add the ability to see activity in the docker logs? Commands like "GET, HEAD, PROPFIND, PUT", etc. It would be useful to see what's going on.
Hello,
Is it possible to have multi user with their own folder?
For example,
User Samantha will have folder user1
User Josh will have folder user2
Each user has their own username and password.
If this is possible will be great as additional feature.
Rgds
i really enjoy this image as it provides a 5 min set up personal cloud really no nonsense.
everything works as it should and i can access and sync my files with my phone.
Only issue i have is that i can't access a large photo folder ~200gb | ~50000 items
i have changed CLIENT_MAX_BODY_SIZE to 300G
and tried to view logs with docker logs --follow 73e7bc2b53cc
but it returned nothing
any ideas appreciated
keep up
Hi! First of all, great work, keep it up!
I configured a Container with your Image yesterday. When connecting with WinSCP, everything is working like a charm, however the Windows 10 integrated WebDAV Client can't connect.
The WebDAV Container is running behind a Nginx reverse Proxy exclusive on a custom Port, see configuration below.
server
{
listen 10443 ssl;
server_name wwms.*;
resolver 127.0.0.11 valid=60s;
set $webdav_upstream wwms_webdav_1:80;
ssl_certificate /etc/letsencrypt/live/xxx.xxx.xxx/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/xxx.xxx.xxx/privkey.pem;
proxy_http_version 1.1;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port 10443;
proxy_set_header X-Frame-Options SAMEORIGIN;
location /
{
proxy_pass http://$webdav_upstream;
}
}
My compose.yml looks as the following.
webdav:
image: dgraziotin/nginx-webdav-nononsense
restart: unless-stopped
volumes:
- ftp:/data/
- ~/wwms/webdav/htpasswd:/etc/nginx/htpasswd
environment:
- TZ:"Europe/Vienna"
- PUID:"1000"
- PGID:"1000"
As I can connect to the Directory Listing via Web Browser and can connect via WinSCP, it seems that the Basic configuration must be okay.
Anything I must configure in Windows (Interet Settings or Registry) in order to get it working?
I'm trying to connect to the webdav server using my ddns url https://my.ddns.domain:0000 file managers require a dav:// (http) or davs:// (https) prefix my url isn't recognized using this format neither using https:// also tried webdav://
i get a failed to open file system , "not a webdav enabled file share"
tried another workaround, mounting it with autofs and davfs2
sudo mount -t davfs https://my.ddns.domain:0000 ~/mountpoint
throws error
/sbin/mount.davfs: mounting failed; the server does not support WebDAV
server is mounted fine under android and windows 10
any ideas appreciated
I'm running the ':latest' release of the container, and I see that the logs show my reverse proxy (haproxy running on another host) as the source IPs. I have the following config in haproxy:
backend webdav
server [REDACTED] 192.168.1.5:8082
option forwardfor
http-request set-header X-Real-IP %[src]
And the proxy logs still seem to show the proxy IP instead of the "real" IP. I confirmed the proxy is sending correct headers with tcpdump. Is there a setting I need to adjust to tell nginx to log those, or do I have to rebuild the container with the tweaked log configuration?
I've follow all of the instructions, and can access webdav via browser, but using Finder got a Popup of Problems in connection. I'm using nginx reverse proxy with ssl.
This is mi log for the Finder Connection:
172.20.0.7 - - [17/Sep/2021:20:08:21 -0500] "OPTIONS / HTTP/1.1" 204 0 "-" "WebDAVLib/1.3"
172.20.0.7 - - [17/Sep/2021:20:08:36 -0500] "OPTIONS / HTTP/1.1" 204 0 "-" "WebDAVLib/1.3"
172.20.0.7 - - [17/Sep/2021:20:08:36 -0500] "OPTIONS / HTTP/1.1" 204 0 "-" "WebDAVFS/3.0.0 (03008000) Darwin/21.1.0 (arm64)"
Any help is appreciated!
PD: Nice project!!! this is one of the best written docker projects until now!!! Congratulations!
An unauthenticated PROPFIND request to / succeeds, and some properties are returned:
HTTP/1.1 207 Multi-Status
Server: openresty
Date: Fri, 17 Dec 2021 12:47:39 GMT
Content-Type: text/xml; charset=utf-8
Content-Length: 424
Connection: close
<?xml version="1.0" encoding="utf-8" ?>
<D:multistatus xmlns:D="DAV:">
<D:response>
<D:href>/</D:href>
<D:propstat>
<D:prop>
<D:displayname>/</D:displayname>
<D:getlastmodified>Fri, 17 Dec 2021 12:40:27 GMT</D:getlastmodified>
<D:resourcetype><D:collection/></D:resourcetype>
<D:lockdiscovery/>
<D:supportedlock>
</D:supportedlock>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
</D:multistatus>
An unauthenticated PROPFIND request to a (guessed) existing file succeeds, and some properties are returned:
HTTP/1.1 207 Multi-Status
Server: openresty
Date: Fri, 17 Dec 2021 12:48:51 GMT
Content-Type: text/xml; charset=utf-8
Content-Length: 469
Connection: close
<?xml version="1.0" encoding="utf-8" ?>
<D:multistatus xmlns:D="DAV:">
<D:response>
<D:href>/hello.txt</D:href>
<D:propstat>
<D:prop>
<D:displayname>hello.txt</D:displayname>
<D:getcontentlength>8</D:getcontentlength>
<D:getlastmodified>Fri, 17 Dec 2021 12:47:59 GMT</D:getlastmodified>
<D:resourcetype></D:resourcetype>
<D:lockdiscovery/>
<D:supportedlock>
</D:supportedlock>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
</D:multistatus>
in web browser it's seem ok
but in other client file will not be shown
I wanted to run this in read only mode and it took me a while to figure out I just need to add the following to config/nginx/location.conf, this might be useful for other users.
limit_except GET PROPFIND OPTIONS HEAD {
deny all;
}
In relation to #22
I am running this docker container on a Synology NAS and receive this error. I moved from a separate non Synology environment where it worked before, simply copied my folders and same compose block. I am primarily using this for Paperless document consuming, thus the paperless naming conventions. However the configuration should be isolated.
paperless-webdav:
image: dgraziotin/nginx-webdav-nononsense:latest
container_name: paperless-webdav
restart: unless-stopped
networks:
- apps-net
environment:
- PUID=${puid}
- PGID=${pgid}
- TZ=${tz}
- WEBDAV_USERNAME=${paperless_webdav_user}
- WEBDAV_PASSWORD=${paperless_webdav_password}
- SERVER_NAMES=scans.*
- TIMEOUTS_S=1200 # these are seconds
- CLIENT_MAX_BODY_SIZE=2G # must end with M(egabytes) or G(igabytes)
volumes:
- ./paperless/webdav:/config
- ./paperless/consume:/data
PUID and PGID are ones that I use for other containers on the NAS. I can see that the startup of the container will show the proper ID's
-------------------------------------
GID/UID
-------------------------------------
User uid: 1032
User gid: 65538
-------------------------------------
Here is the "consume" directory on the host, where data should be getting dropped.
$ ls -laF
drwxrwxr-x 5 captain docker 4096 Jan 18 21:40 ./
drwxrwxr-x 8 captain docker 4096 Feb 8 13:36 ../
drwxrwx--- 2 captain docker 4096 Feb 8 14:01 consume/
drwxrwx--- 3 captain docker 4096 Feb 8 13:22 webdav/
With user captain being the 1032 id used for the container
$ id captain
uid=1032(captain) gid=100(users) groups=100(users)
I am getting the same error when trying to write a file. I can connect, browse and delete files just cant write, tried through various methods like an app called Quickscan on iOS or just Finder connection on Mac
172.20.0.2 - paperless [08/Feb/2023:14:01:46 -0600] "PROPFIND /statement.pdf HTTP/1.1" 404 153 "-" "WebDAVFS/3.0.0 (03008000) Darwin/22.2.0 (arm64)"
172.20.0.2 - paperless [08/Feb/2023:14:01:46 -0600] "PROPFIND /statement.pdf HTTP/1.1" 404 153 "-" "WebDAVFS/3.0.0 (03008000) Darwin/22.2.0 (arm64)"
2023/02/08 14:01:46 [crit] 138#138: *84 open() "/var/cache/nginx/client_temp/0000000003" failed (13: Permission denied), client: 172.20.0.2, server: scans.*, request: "PUT /statement.pdf HTTP/1.1", host: "scans.mydomain.com"
172.20.0.2 - paperless [08/Feb/2023:14:01:46 -0600] "PUT /statement.pdf HTTP/1.1" 500 177 "-" "WebDAVFS/3.0.0 (03008000) Darwin/22.2.0 (arm64)"
For good measure, I set this up on a a raspberry pi and it failed for the same file. Note that this has no reverse proxy (above uses SWAG/nginx), was just accessing directly.
webdav:
image: dgraziotin/nginx-webdav-nononsense:latest
container_name: webdav
ports:
- 9999:80
environment:
- PUID=1001
- PGID=995
- TZ=America/Chicago
- WEBDAV_USERNAME=test
- WEBDAV_PASSWORD=qwerty21
#- SERVER_NAMES=test.*
- TIMEOUTS_S=1200 # these are seconds
- CLIENT_MAX_BODY_SIZE=2G # must end with M(egabytes) or G(igabytes)
volumes:
- ./test/webdav:/config
- ./test/consume:/data
Error from Mac OSX finder.
10.0.10.81 - test [08/Feb/2023:14:24:28 -0600] "PROPFIND /statement.pdf HTTP/1.1" 404 153 "-" "WebDAVFS/3.0.0 (03008000) Darwin/22.2.0 (arm64)"
10.0.10.81 - test [08/Feb/2023:14:24:28 -0600] "PROPFIND /statement.pdf HTTP/1.1" 404 153 "-" "WebDAVFS/3.0.0 (03008000) Darwin/22.2.0 (arm64)"
2023/02/08 14:24:28 [crit] 138#138: *4 open() "/data/statement.pdf.0000000002" failed (13: Permission denied), client: 10.0.10.81, server: localhost, request: "PUT /statement.pdf HTTP/1.1", host: "10.0.10.17:9999"
10.0.10.81 - test [08/Feb/2023:14:24:28 -0600] "PUT /statement.pdf HTTP/1.1" 500 177 "-" "WebDAVFS/3.0.0 (03008000) Darwin/22.2.0 (arm64)"
Really curious what is going on and how it worked for me before but then broke when I moved to a different host.
Thanks.
As suggested in #25, find a way to either add one custom config file or go with nginx split configuration format.
I use your docker with Zotero to be able to keep my files uploaded and sync on my server.
I couldn't make it work until I changed the chmod for /var/cache/nginx/* from 700 to 775.
Without that I got permission denied because it tried to push file in that folder.
I use the env variable PUID and GID.
I have no idea if it can be helpful and/or if the code needed to be changed but I thought it was worth mentioning it
Hello! I would like to change the Permissions which are assigned to new Files. As of Nginx Documentation this can be done with the dav_access configuration Parameter. I have done this successfull by editing the nginx.conf manually. I am curious if there is a more elegant way for doing this, as editing manual is either not persistent, or is cutting me off of further changes to the File in the Image.
Hello,
@dgraziotin, I want to thank you for putting all this together and for the documentation.
I am looking to replace Nextcloud, which does a lot of things, but I only use two parts, remote file browsing and syncing files from phones.
Filebrower takes care of the remote file browsing.
Docker-nginx-webdav-nonosense seems to be perfect to handle the syncing of files from android phones using PhotoSync.
After deploying dnwn by cloning the git repository, I noticed it was using baseimage-ubuntu:focal instead of baseimage-ubuntu:jammy in the Dockerfile.
I changed the baseimage to jammy on lines 10 and 116 and now dnwn is using the jammy image base.
Mentioning it, as I got the message the focal image is not longer supported. (I was also having problems, and thought the update would help, the problems where not due to having the focal base.)
I do not know what/if problems changing the base image will cause. As dgraziotin has not updated the Dockerfile to jammy, then this is a use at your own risk, if anyone else follows this info.
Hello,
I cloned this repository edited docker-compose.yml (set PGID, PUID) and executed docker-compose build && docker-compose up
but the uploaded/created files were created with a wrong userid.
how to reproduce
clone 9cf381a
@@ -8,10 +8,10 @@ services:
- ./data:/data
- - ./htpasswd:/etc/nginx/htpasswd
+ #- ./htpasswd:/etc/nginx/htpasswd
environment:
- - PUID=501
- - PGID=20
+ - PUID=1000
+ - PGID=1000
- TZ=Europe/Berlin
- WEBDAV_USERNAME=user
- - WEBDAV_PASSWORD=password
- - SERVER_NAMES=localhost
+ - WEBDAV_PASSWORD=mysecurepassword
+ - SERVER_NAMES=localhost,mycomputer
- TIMEOUTS_S=1200 # these are seconds
docker-compose build && docker-compose up
ls -l ./data
what I see
the owner id of the uploaded file is 911
what I expect
the owner id of the uploaded file should be 1000
This is part of #8.
Windows/Explorer does not handle trailing slash well and fails to delete folders.
Describe the bug
Unable to save Documents from Excel 2021 on the Webdav server.
Please include the exact error messages that your client is reporting:
Someone else is working in 'X:\yourfile.xlsx' right now. Please try again later.
To Reproduce
Steps to reproduce the issue:
Expected behavior
Save the file on the network drive
Hi. Thanks for the effort.
Could you please consider adding multi-arch to your images? arm/v7 and arm64/v8 are welcome.
I'm running my containers on a raspberry pi and it takes quite a while to build nginx. I also can't use the local built image on my k3s cluster since I don't have a docker registry configured.
Hi,
I keep getting:
Pulling nginxwebdav (dgraziotin/docker-nginx-webdav-nononsense:)... ERROR: The image for the service you're trying to recreate has been removed. If you continue, volume data could be lost. Consider backing up your data before continuing.
somethings wrong?
We are using your Image for some days now, I know that the Windows WebDAV Client is a mess itselfe, but supporting Windows WebDAV is curcial for us, as we need native File Explorer integration for our Project. I would like to help you to find an solve all relevant Problems regarding Windows WebDAV Support. Shall I start one Issue for Windows Support overall, or one Issue for each Problem we face?
After rebooting Windows it is quiet impossible to get WebDAV up and running again. I am getting some generic Error Messages. It works quiet well when it works, but a reboot seems to trigger some Bug which is Hard to Workaround. Removing and readding the Drive, while changing some Parameters seems to get it running again, but I can't figure out what is causing it to work again. It seems as, as long as Windows still knows it is the same WebDAV Server the Issue is present, you need to change config Values until Windows can't determine that it is the same Server.
Linuxserver.io images prepare /config
so that expected configuration files appear there. Have user-editable configuration files gathered from here.
Hello, first of all thank you for making my life easier with this image, been using for about a year
I use this with NAS + infuse for apple tv
The only nitpick I have is ability to delete files from it. The app supports it but webdav doesn't, at least from what I see I can only add custom users
Maybe I am missing something or is there any easy workaround? Thank you!!
This is part of #8.
Using the "Map Network Drive" feature.
When adding the WebDAV location (e.g., http://192.168.178.99:32080), Windows/Explorer would fail to connect and give an error.
At this point, a PROPFIND request is issued when setting up the connection.
The issue is that Microsoft as well as IIS, expects an HTTP 404 in the response headers, whereas RFC2518 recommends an HTTP 207 with the error descriptions in the response body (an XML file).
Somebody (Russian, use Google Translate) proposed as fix to create an ad-hoc response for Microsoft only that would return 404. Implementing this solution restores access to the WebDAV location.
I use this docker on openmediavault. It works, but not with Files and Folder with beginning ".".
E.g. Folder ".logging" or File "/User_home/_MigrationMail/var/mail/user/.INBOX._CNC/dovecot-uidlist".
Can I enable this to store?
Tanks
As of commit 0125aa2, I removed all CORS headers to reduce complexity while we debug issues with Windows.
I need to decide if to restore them, and how (see also keeweb/keeweb)
Windows not working.
I installed this package from dockerhub, set it up in accordance with the instructions, made https through the proxy manager. All the same errors, the network drive is not connected. In the browser pass authorization normally, the list of files shows.
When renaming using a Windows client (explorer) the MOVE method doesn't work.
The log shows the following:
515 client sent invalid "Destination" header: "https?://.*/test/
The origin lies here:
docker-nginx-webdav-nononsense/nginx.conf
Line 109 in d6ba5d6
Is this a documentation error, or should it be working like that?
I noticed that ipv6 is not enabled because it is missing the listen [::]:80;
directive in nginx.conf
. Can you enable ipv6 from there? Thanks.
Creating a new folder is unsupported with error message "The request is not supported".
nginx logs:
nginxwebdav | 172.21.0.1 - - [10/Dec/2021:15:47:38 +0100] "PROPFIND / HTTP/1.1" 207 1495 "-" "Microsoft-WebDAV-MiniRedir/10.0.22000"
nginxwebdav | 172.21.0.1 - - [10/Dec/2021:15:47:38 +0100] "PROPFIND /New%20folder HTTP/1.1" 404 153 "-" "Microsoft-WebDAV-MiniRedir/10.0.22000"
nginxwebdav | 172.21.0.1 - - [10/Dec/2021:15:47:38 +0100] "PROPFIND / HTTP/1.1" 207 424 "-" "Microsoft-WebDAV-MiniRedir/10.0.22000"
nginxwebdav | 172.21.0.1 - - [10/Dec/2021:15:47:38 +0100] "MKCOL /New%20folder HTTP/1.1" 401 179 "-" "Microsoft-WebDAV-MiniRedir/10.0.22000"
macOS Finder works with the following log
nginxwebdav | 172.21.0.1 - user [10/Dec/2021:15:51:44 +0100] "PROPFIND /untitled%20folder HTTP/1.1" 404 153 "-" "WebDAVFS/3.0.0 (03008000) Darwin/21.1.0 (x86_64)"
nginxwebdav | 172.21.0.1 - user [10/Dec/2021:15:51:44 +0100] "MKCOL /untitled%20folder HTTP/1.1" 201 0 "-" "WebDAVFS/3.0.0 (03008000) Darwin/21.1.0 (x86_64)"
nginxwebdav | 172.21.0.1 - user [10/Dec/2021:15:51:44 +0100] "PROPFIND / HTTP/1.1" 207 1389 "-" "WebDAVFS/3.0.0 (03008000) Darwin/21.1.0 (x86_64)"
nginxwebdav | 172.21.0.1 - user [10/Dec/2021:15:51:44 +0100] "PROPFIND /untitled%20folder/ HTTP/1.1" 207 353 "-" "WebDAVFS/3.0.0 (03008000) Darwin/21.1.0 (x86_64)"
A DELETE https://domain.com/
will return 403 Forbidden
but actually delete any file (non directory) at the root.
The logs will show that the root folder cannot be deleted, with permission denied. Yet, any contained file will disappear.
nginxwebdav | 2021/12/17 13:39:16 [error] 13#13: *1 rmdir() "/data/" failed (13: Permission denied), client: 172.30.0.1, server: localhost, request: "DELETE / HTTP/1.1", host: "myhost.ineed.coffee"
nginxwebdav | 172.30.0.1 - - [17/Dec/2021:13:39:16 +0100] "DELETE / HTTP/1.1" 403 153 "-" "Paw/3.3.2 (Macintosh; OS X/12.0.1) GCDHTTPRequest
litmus is "a WebDAV server test suite, which aims to test whether a server is compliant with the WebDAV protocol as specified in RFC2518;".
I containerized it under dgraziotin/litmus. It can be run with docker run --rm -it dgraziotin/litmus:0.13 http://ip:port user password
.
Current output:
-> running `basic':
0. init.................. pass
1. begin................. pass
2. options............... FAIL (server does not claim WebDAV compliance)
3. put_get............... pass
4. put_get_utf8_segment.. pass
5. put_no_parent......... pass
6. mkcol_over_plain...... pass
7. delete................ pass
8. delete_null........... pass
9. delete_fragment....... WARNING: DELETE removed collection resource with Request-URI including fragment; unsafe
...................... pass (with 1 warning)
10. mkcol................. pass
11. mkcol_again........... pass
12. delete_coll........... pass
13. mkcol_no_parent....... pass
14. mkcol_with_body....... pass
15. finish................ pass
<- summary for `basic': of 16 tests run: 15 passed, 1 failed. 93.8%
-> 1 warning was issued.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.