webdav: help windows deal with read-only volumes

This commit is contained in:
ed 2022-10-30 17:11:43 +00:00
parent dd26b8f183
commit 89cf7608f9
2 changed files with 16 additions and 6 deletions

View file

@ -705,10 +705,18 @@ with read-write support, supports winXP and later, macos, nautilus/gvfs
general usage:
* login with any username + your password, or put your password in the username field and leave password empty
on windows xp/7+, connect using the explorer UI:
* rightclick [my computer] -> [map network drive] -> [Connect to a network server] hyperlink -> [Choose a custom network location] -> `http://192.168.123.1:3923/`
on macos, connect from finder:
* [Go] -> [Connect to Server...] -> http://192.168.123.1:3923/
on windows 7+, connect using command prompt (`wark`=password):
### connecting to webdav from windows
using the GUI (winXP or later):
* rightclick [my computer] -> [map network drive] -> Folder: `http://192.168.123.1:3923/`
* on winXP only, click the `Sign up for online storage` hyperlink instead and put the URL there
* providing your password as the username is recommended; the password field can be anything or empty
connecting from commandline (win7 or later; `wark`=password):
* `net use w: http://192.168.123.1:3923/ k /user:wark`
on windows (xp or later), disable wpad for performance:
@ -717,6 +725,7 @@ on windows (xp or later), disable wpad for performance:
known client bugs:
* win7+ doesn't actually send the password to the server when reauthenticating after a reboot unless you first try to login with an incorrect password and then switch to the correct password
* or just type your password into the username field instead to get around it entirely
* connecting to a folder which allows anonymous read will make writing impossible, as windows has decided it doesn't need to login
* win7+ cannot access servers which require authentication unless you use https or [enable basic auth](./contrib/webdav-basicauth.reg) for http
* win7+ cannot download files larger than 47.6 MiB by default; [registry fix](./contrib/webdav-unlimit.bat) to allow files up to 4 GiB (actual absolute max on windows)
* win7+ opens a new tcp connection for every file and sometimes forgets to close them, eventually needing a reboot

View file

@ -903,7 +903,8 @@ class HttpCli(object):
if self.args.no_dav:
raise Pebkac(405, "WebDAV is disabled in server config")
if not self.can_write:
# win7+ deadlocks if we say no; just smile and nod
if not self.can_write and "Microsoft-WebDAV" not in self.ua:
self.log("{} tried to lock [{}]".format(self.uname, self.vpath))
raise Pebkac(401, "authenticate")
@ -960,7 +961,7 @@ class HttpCli(object):
if self.args.no_dav:
raise Pebkac(405, "WebDAV is disabled in server config")
if not self.can_write:
if not self.can_write and "Microsoft-WebDAV" not in self.ua:
self.log("{} tried to lock [{}]".format(self.uname, self.vpath))
raise Pebkac(401, "authenticate")
@ -1055,7 +1056,7 @@ class HttpCli(object):
self.log("PUT " + self.req)
if not self.can_write:
t = "{} does not have write-access here"
t = "user {} does not have write-access here"
raise Pebkac(403, t.format(self.uname))
if not self.args.no_dav and self._applesan():