From 24d8caaf3e982f8d1840c6d9750a1a57075ee352 Mon Sep 17 00:00:00 2001
From: ed
Date: Mon, 20 Mar 2023 21:45:52 +0000
Subject: [PATCH] switch rclone to owncloud mode so it sends lastmod
---
copyparty/web/svcs.html | 4 ++--
docs/rclone.md | 25 +++++++++++++++++++++++--
2 files changed, 25 insertions(+), 4 deletions(-)
diff --git a/copyparty/web/svcs.html b/copyparty/web/svcs.html
index b55460b8..cb0d87e8 100644
--- a/copyparty/web/svcs.html
+++ b/copyparty/web/svcs.html
@@ -46,7 +46,7 @@
note: rclone-FTP is a bit faster, so {% if args.ftp or args.ftps %}try that first{% else %}consider enabling FTP in server settings{% endif %}
if you can, install winfsp+rclone and then paste this in cmd:
- rclone config create {{ aname }}-dav webdav url=http{{ s }}://{{ rip }}{{ hport }} vendor=other{% if accs %} user=k pass={{ pw }}{% endif %} + rclone config create {{ aname }}-dav webdav url=http{{ s }}://{{ rip }}{{ hport }} vendor=owncloud{% if accs %} user=k pass={{ pw }}{% endif %} rclone mount --vfs-cache-mode writes --dir-cache-time 5s {{ aname }}-dav:{{ rvp }} W:{% if s %} @@ -71,7 +71,7 @@
or you can use rclone instead, which is much slower but doesn't require root:
- rclone config create {{ aname }}-dav webdav url=http{{ s }}://{{ rip }}{{ hport }} vendor=other{% if accs %} user=k pass={{ pw }}{% endif %} + rclone config create {{ aname }}-dav webdav url=http{{ s }}://{{ rip }}{{ hport }} vendor=owncloud{% if accs %} user=k pass={{ pw }}{% endif %} rclone mount --vfs-cache-mode writes --dir-cache-time 5s {{ aname }}-dav:{{ rvp }} mp{% if s %} diff --git a/docs/rclone.md b/docs/rclone.md index cd3fd6e5..75ba5bad 100644 --- a/docs/rclone.md +++ b/docs/rclone.md @@ -22,7 +22,7 @@ replace `hunter2` with your password, or remove the `hunter2` lines if you allow ( echo [cpp-rw] echo type = webdav -echo vendor = other +echo vendor = owncloud echo url = http://127.0.0.1:3923/ echo headers = Cookie,cppwd=hunter2 echo( @@ -41,7 +41,7 @@ also install the windows dependencies: [winfsp](https://github.com/billziss-gh/w cat > ~/.config/rclone/rclone.conf <<'EOF' [cpp-rw] type = webdav -vendor = other +vendor = owncloud url = http://127.0.0.1:3923/ headers = Cookie,cppwd=hunter2 @@ -70,3 +70,24 @@ feels out of place but is too good not to mention rclone.exe serve http --read-only . rclone.exe serve webdav . ``` + + +# devnotes + +copyparty supports and expects [the following](https://github.com/rclone/rclone/blob/46484022b08f8756050aa45505ea0db23e62df8b/backend/webdav/webdav.go#L575-L578) from rclone, + +```go +case "owncloud": + f.canStream = true + f.precision = time.Second + f.useOCMtime = true + f.hasOCMD5 = true + f.hasOCSHA1 = true +``` + +notably, +* `useOCMtime` enables the `x-oc-mtime` header to retain mtime of uploads from rclone +* `canStream` is supported but not required by us +* `hasOCMD5` / `hasOCSHA1` is conveniently dontcare on both ends + +there's a scary comment mentioning PROPSET of lastmodified which is not something we wish to support