From a10cad54fc29727518e6ab8dfe5bd885e0955f51 Mon Sep 17 00:00:00 2001 From: ed Date: Fri, 7 Jul 2023 22:20:01 +0000 Subject: [PATCH] v1.8.1 --- copyparty/__main__.py | 25 +++++++-------- copyparty/__version__.py | 4 +-- docs/changelog.md | 56 +++++++++++++++++++++++++++++++++ scripts/pyinstaller/deps.sha512 | 2 +- 4 files changed, 71 insertions(+), 16 deletions(-) diff --git a/copyparty/__main__.py b/copyparty/__main__.py index 6cfbb57a..944de8b2 100755 --- a/copyparty/__main__.py +++ b/copyparty/__main__.py @@ -533,8 +533,8 @@ def get_sects(): "use plugins to handle certain events", dedent( """ - usually copyparty returns a 404 if a file does not exist, and - 403 if a user tries to access a file they don't have access to + usually copyparty returns a \033[33m404\033[0m if a file does not exist, and + \033[33m403\033[0m if a user tries to access a file they don't have access to you can load a plugin which will be invoked right before this happens, and the plugin can choose to override this behavior @@ -543,31 +543,30 @@ def get_sects(): --on404 ~/partyhandlers/not404.py -v .::r:c,on404=~/partyhandlers/not404.py \033[0m - - the file must define a `main(cli,vn,rem)` function: - cli: the HttpCli instance - vn: the VFS which overlaps with the requested URL - rem: the remainder of the URL below the VFS mountpoint + the file must define the function \033[35mmain(cli,vn,rem)\033[0m: + \033[35mcli\033[0m: the copyparty HttpCli instance + \033[35mvn\033[0m: the VFS which overlaps with the requested URL + \033[35mrem\033[0m: the remainder of the URL below the VFS mountpoint `main` must return a string; one of the following: - > "true": the plugin has responded to the request, + > \033[32m"true"\033[0m: the plugin has responded to the request, and the TCP connection should be kept open - > "false": the plugin has responded to the request, + > \033[32m"false"\033[0m: the plugin has responded to the request, and the TCP connection should be terminated - > "retry": the plugin has done something to resolve the 404 + > \033[32m"retry"\033[0m: the plugin has done something to resolve the 404 situation, and copyparty should reattempt reading the file. if it still fails, a regular 404 will be returned - > "allow": should ignore the insufficient permissions + > \033[32m"allow"\033[0m: should ignore the insufficient permissions and let the client continue anyways - > "": the plugin has not handled the request; + > \033[32m""\033[0m: the plugin has not handled the request; try the next plugin or return the usual 404 or 403 - PS! the folder that contains the python file should ideally + \033[1;35mPS!\033[0m the folder that contains the python file should ideally not contain many other python files, and especially nothing with filenames that overlap with modules used by copyparty """ diff --git a/copyparty/__version__.py b/copyparty/__version__.py index 51ef4240..da0e8292 100644 --- a/copyparty/__version__.py +++ b/copyparty/__version__.py @@ -1,8 +1,8 @@ # coding: utf-8 -VERSION = (1, 8, 0) +VERSION = (1, 8, 1) CODENAME = "argon" -BUILD_DT = (2023, 6, 26) +BUILD_DT = (2023, 7, 7) S_VERSION = ".".join(map(str, VERSION)) S_BUILD_DT = "{0:04d}-{1:02d}-{2:02d}".format(*BUILD_DT) diff --git a/docs/changelog.md b/docs/changelog.md index 1847235f..67e012a1 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -1,3 +1,59 @@ +▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ +# 2023-0626-0005 `v1.8.0` argon + +News: if you use rclone as a copyparty webdav client, upgrading to [rclone v1.63](https://github.com/rclone/rclone/releases/tag/v1.63.0) (just released) will give you [a huge speed boost](https://github.com/rclone/rclone/pull/6897) for small files + +## new features +* #39 hashed passwords + * instead of keeping plaintext account passwords in config files, you can now store hashed ones instead + * `--ah-alg` specifies algorithm; best to worst: `argon2`, `scrypt`, `sha2`, or the default `none` + * the default settings of each algorithm takes `0.4 sec` to hash a password, and argon2 eats `256 MiB` RAM + * can be adjusted with optional comma-separated args after the algorithm name; see `--help-pwhash` + * `--ah-salt` is the [static salt](https://github.com/9001/copyparty/blob/hovudstraum/docs/devnotes.md#hashed-passwords) for all passwords, and is autogenerated-and-persisted if not specified + * `--ah-cli` switches copyparty into a shell where you can hash passwords interactively + * but copyparty will also autoconvert any unhashed passwords on startup and give you the values to insert into the config anyways +* #40 volume size limit + * volflag `vmaxb` specifies max size of a volume + * volflag `vmaxn` specifies max number of files in a volume + * example: `-v [...]:c,vmaxb=900g:c,vmaxn=20k` blocks uploads if the volume reaches 900 GiB or a total of 20480 files + * good alternative to `--df` since it works per-volume + +## bugfixes +* autogenerated TLS certs didn't include the mDNS name + +## other changes +* improved cloudflare challenge detection +* markdown edits will now trigger upload hooks + + + +▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ +# 2023-0611-0814 `v1.7.6` NO_COLOR + +## new features +* #31 `--grid` shows thumbnails instead of file-list by default +* #28 `--unlist` regex-exclude files from browser listings + * for example `--unlist '\.(js|css)$'` hides all `.js` and `.css` files + * **purely cosmetic!** the files are still fully accessible, and still appear in API calls +* auto-generate TLS certificates on startup / network-change + * mostly good for LAN, requires [cfssl](https://github.com/cloudflare/cfssl/releases/latest), can be disabled with `--no-crt` + * creates a self-signed CA and certs with SANs of all detected server IPs + * so it's still recommended to use a reverse-proxy / letsencrypt for WAN servers +* the default `--fk-salt` is now much stronger + * all existing installations will keep the previously selected seed -- you can choose to upgrade by deleting `~/.config/copyparty/cert.pem` but this will change all filekeys / per-file passwords +* the `NO_COLOR` environment-variable is now supported, removing colors from stdout + * see https://no-color.org/ and more importantly https://youtu.be/biW5UVGkPMA?t=150 + * `--ansi` and `--no-ansi` can also be used to force-enable/disable colored output +* #33 disable colors when stdout is redirected to a pipe/file -- by @clach04 +* #32 simplify building sfx from source +* upgraded [copyparty.exe](https://github.com/9001/copyparty/releases/latest/download/copyparty.exe) to [python 3.11.4](https://pythoninsider.blogspot.com/2023/06/python-3114-31012-3917-3817-3717-and.html) + +## bugfixes +* #30 `--ftps` didn't work without `--ftp` +* tiny css bug in light themes (opaque thumbnail controls) + + + ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ # 2023-0513-0000 `v1.7.2` hard resolve diff --git a/scripts/pyinstaller/deps.sha512 b/scripts/pyinstaller/deps.sha512 index afd71574..6ccecf2d 100644 --- a/scripts/pyinstaller/deps.sha512 +++ b/scripts/pyinstaller/deps.sha512 @@ -26,5 +26,5 @@ ba91ab0518c61eff13e5612d9e6b532940813f6b56e6ed81ea6c7c4d45acee4d98136a383a250675 00558cca2e0ac813d404252f6e5aeacb50546822ecb5d0570228b8ddd29d94e059fbeb6b90393dee5abcddaca1370aca784dc9b095cbb74e980b3c024767fb24 Jinja2-3.1.2-py3-none-any.whl 7f8f4daa4f4f2dbf24cdd534b2952ee3fba6334eb42b37465ccda3aa1cccc3d6204aa6bfffb8a83bf42ec59c702b5b5247d4c8ee0d4df906334ae53072ef8c4c MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl 4a20aeb52d4fde6aabcba05ee261595eeb5482c72ee27332690f34dd6e7a49c0b3ba3813202ac15c9d21e29f1cd803f2e79ccc1c45ec314fcd0a937016bcbc56 mutagen-1.46.0-py3-none-any.whl -78414808cb9a5fa74e7b23360b8f46147952530e3cc78a3ad4b80be3e26598080537ac691a1be1f35b7428a22c1f65a6adf45986da2752fbe9d9819d77a58bf8 Pillow-9.5.0-cp311-cp311-win_amd64.whl +926d408a886059a75cf12706fa061146f9f042b27fb6e65be7d49f398ed23fb0227639d84804586ac014c6bcf7d08cd86a09c1a20793d341aa0802d3d32a546b Pillow-10.0.0-cp311-cp311-win_amd64.whl a48ee8992eee60a0d620dced71b9f96596f5dd510e3024015aca55884cdb3f9e2405734bfc13f3f40b79106a77bc442cce02ac4c8f5d16207448052b368fd52a python-3.11.4-amd64.exe