update readmes + fix typo

This commit is contained in:
ed 2023-02-26 19:22:54 +00:00
parent 43ff2e531a
commit 5cb2e33353
6 changed files with 68 additions and 25 deletions

View file

@ -96,7 +96,7 @@ try the **[read-only demo server](https://a.ocv.me/pub/demo/)** 👀 running fro
* [optional dependencies](#optional-dependencies) - install these to enable bonus features * [optional dependencies](#optional-dependencies) - install these to enable bonus features
* [optional gpl stuff](#optional-gpl-stuff) * [optional gpl stuff](#optional-gpl-stuff)
* [sfx](#sfx) - the self-contained "binary" * [sfx](#sfx) - the self-contained "binary"
* [copyparty.exe](#copypartyexe) - download [copyparty.exe](https://github.com/9001/copyparty/releases/latest/download/copyparty.exe) or [copyparty64.exe](https://github.com/9001/copyparty/releases/latest/download/copyparty64.exe) * [copyparty.exe](#copypartyexe) - download [copyparty.exe](https://github.com/9001/copyparty/releases/latest/download/copyparty.exe) (win8+) or [copyparty32.exe](https://github.com/9001/copyparty/releases/latest/download/copyparty32.exe) (win7+)
* [install on android](#install-on-android) * [install on android](#install-on-android)
* [reporting bugs](#reporting-bugs) - ideas for context to include in bug reports * [reporting bugs](#reporting-bugs) - ideas for context to include in bug reports
* [devnotes](#devnotes) - for build instructions etc, see [./docs/devnotes.md](./docs/devnotes.md) * [devnotes](#devnotes) - for build instructions etc, see [./docs/devnotes.md](./docs/devnotes.md)
@ -1376,15 +1376,19 @@ you can reduce the sfx size by repacking it; see [./docs/devnotes.md#sfx-repack]
## copyparty.exe ## copyparty.exe
download [copyparty.exe](https://github.com/9001/copyparty/releases/latest/download/copyparty.exe) or [copyparty64.exe](https://github.com/9001/copyparty/releases/latest/download/copyparty64.exe) download [copyparty.exe](https://github.com/9001/copyparty/releases/latest/download/copyparty.exe) (win8+) or [copyparty32.exe](https://github.com/9001/copyparty/releases/latest/download/copyparty32.exe) (win7+)
![copyparty-exe-fs8](https://user-images.githubusercontent.com/241032/194707422-cb7f66c9-41a2-4cb9-8dbc-2ab866cd4338.png) ![copyparty-exe-fs8](https://user-images.githubusercontent.com/241032/194707422-cb7f66c9-41a2-4cb9-8dbc-2ab866cd4338.png)
can be convenient on old machines where installing python is problematic, however is **not recommended** and should be considered a last resort -- if possible, please use **[copyparty-sfx.py](https://github.com/9001/copyparty/releases/latest/download/copyparty-sfx.py)** instead can be convenient on machines where installing python is problematic, however is **not recommended** -- if possible, please use **[copyparty-sfx.py](https://github.com/9001/copyparty/releases/latest/download/copyparty-sfx.py)** instead
* [copyparty.exe](https://github.com/9001/copyparty/releases/latest/download/copyparty.exe) is compatible with 32bit windows7, which means it uses an ancient copy of python (3.7.9) which cannot be upgraded and will definitely become a security hazard at some point * [copyparty.exe](https://github.com/9001/copyparty/releases/latest/download/copyparty.exe) runs on win8 or newer, was compiled on win10, does thumbnails + media tags, and is *currently* safe to use, but any future python/expat/pillow CVEs can only be remedied by downloading a newer version of the exe
* [copyparty64.exe](https://github.com/9001/copyparty/releases/latest/download/copyparty64.exe) is identical except 64bit so it [works in WinPE](https://user-images.githubusercontent.com/241032/205454984-e6b550df-3c49-486d-9267-1614078dd0dd.png) * on win8 it needs [vc redist 2015](https://www.microsoft.com/en-us/download/details.aspx?id=48145), on win10 it just works
* dangerous: [copyparty32.exe](https://github.com/9001/copyparty/releases/latest/download/copyparty32.exe) is compatible with windows7, which means it uses an ancient copy of python (3.7.9) which cannot be upgraded and should never be exposed to the internet (LAN is fine)
* dangerous and deprecated: [copyparty64.exe](https://github.com/9001/copyparty/releases/download/v1.6.5/copyparty64.exe) lets you [run copyparty in WinPE](https://user-images.githubusercontent.com/241032/205454984-e6b550df-3c49-486d-9267-1614078dd0dd.png) and is otherwise completely useless
meanwhile [copyparty-sfx.py](https://github.com/9001/copyparty/releases/latest/download/copyparty-sfx.py) instead relies on your system python which gives better performance and will stay safe as long as you keep your python install up-to-date meanwhile [copyparty-sfx.py](https://github.com/9001/copyparty/releases/latest/download/copyparty-sfx.py) instead relies on your system python which gives better performance and will stay safe as long as you keep your python install up-to-date

View file

@ -2,15 +2,24 @@ standalone programs which are executed by copyparty when an event happens (uploa
these programs either take zero arguments, or a filepath (the affected file), or a json message with filepath + additional info these programs either take zero arguments, or a filepath (the affected file), or a json message with filepath + additional info
run copyparty with `--help-hooks` for usage details / hook type explanations (xbu/xau/xiu/xbr/xar/xbd/xad)
> **note:** in addition to event hooks (the stuff described here), copyparty has another api to run your programs/scripts while providing way more information such as audio tags / video codecs / etc and optionally daisychaining data between scripts in a processing pipeline; if that's what you want then see [mtp plugins](../mtag/) instead > **note:** in addition to event hooks (the stuff described here), copyparty has another api to run your programs/scripts while providing way more information such as audio tags / video codecs / etc and optionally daisychaining data between scripts in a processing pipeline; if that's what you want then see [mtp plugins](../mtag/) instead
# after upload # after upload
* [notify.py](notify.py) shows a desktop notification ([example](https://user-images.githubusercontent.com/241032/215335767-9c91ed24-d36e-4b6b-9766-fb95d12d163f.png)) * [notify.py](notify.py) shows a desktop notification ([example](https://user-images.githubusercontent.com/241032/215335767-9c91ed24-d36e-4b6b-9766-fb95d12d163f.png))
* [notify2.py](notify2.py) uses the json API to show more context
* [discord-announce.py](discord-announce.py) announces new uploads on discord using webhooks ([example](https://user-images.githubusercontent.com/241032/215304439-1c1cb3c8-ec6f-4c17-9f27-81f969b1811a.png)) * [discord-announce.py](discord-announce.py) announces new uploads on discord using webhooks ([example](https://user-images.githubusercontent.com/241032/215304439-1c1cb3c8-ec6f-4c17-9f27-81f969b1811a.png))
* [reject-mimetype.py](reject-mimetype.py) rejects uploads unless the mimetype is acceptable * [reject-mimetype.py](reject-mimetype.py) rejects uploads unless the mimetype is acceptable
# upload batches
these are `--xiu` hooks; unlike `xbu` and `xau` (which get executed on every single file), `xiu` hooks are given a list of recent uploads on STDIN after the server has gone idle for N seconds, reducing server load + providing more context
* [xiu.py](xiu.py) is a "minimal" example showing a list of filenames + total filesize
* [xiu-sha.py](xiu-sha.py) produces a sha512 checksum list in the volume root
# before upload # before upload
* [reject-extension.py](reject-extension.py) rejects uploads if they match a list of file extensions * [reject-extension.py](reject-extension.py) rejects uploads if they match a list of file extensions

View file

@ -452,7 +452,7 @@ var Ls = {
"ur_aun": "All {0} uploads failed, sorry", "ur_aun": "All {0} uploads failed, sorry",
"ur_1sn": "File was NOT found on server", "ur_1sn": "File was NOT found on server",
"ur_asn": "The {0} files were NOT found on server", "ur_asn": "The {0} files were NOT found on server",
"ur_um": "Finished;\n{0} uplads OK,\n{1} uploads failed, sorry", "ur_um": "Finished;\n{0} uploads OK,\n{1} uploads failed, sorry",
"ur_sm": "Finished;\n{0} files found on server,\n{1} files NOT found on server", "ur_sm": "Finished;\n{0} files found on server,\n{1} files NOT found on server",
"lang_set": "refresh to make the change take effect?", "lang_set": "refresh to make the change take effect?",

View file

@ -17,6 +17,6 @@ problem: `svchost.exe` is using 100% of a cpu core, and upon further inspection
"solution": create a virtual filesystem which is intentionally slow and trick windows into reading it from there instead "solution": create a virtual filesystem which is intentionally slow and trick windows into reading it from there instead
* create a file called `AppxManifest.xml` and put something dumb in it * create a file called `AppxManifest.xml` and put something dumb in it
* serve the file from a copyparty instance with `--rsp-slp=9` so every request will hang for 9 sec * serve the file from a copyparty instance with `--rsp-slp=1` so every request will hang for 1 sec
* `net use m: http://127.0.0.1:3993/` (mount copyparty using the windows-native webdav client) * `net use m: http://127.0.0.1:3993/` (mount copyparty using the windows-native webdav client)
* `mklink /d c:\windows\systemapps\microsoftwindows.client.cbs_cw5n1h2txyewy\AppxManifest.xml m:\AppxManifest.xml` * `mklink /d c:\windows\systemapps\microsoftwindows.client.cbs_cw5n1h2txyewy\AppxManifest.xml m:\AppxManifest.xml`

View file

@ -25,13 +25,15 @@
some improvement ideas some improvement ideas
* the JS is a mess -- a preact rewrite would be nice * the JS is a mess -- a ~~preact~~ rewrite would be nice
* preferably without build dependencies like webpack/babel/node.js, maybe a python thing to assemble js files into main.js * preferably without build dependencies like webpack/babel/node.js, maybe a python thing to assemble js files into main.js
* good excuse to look at using virtual lists (browsers start to struggle when folders contain over 5000 files) * good excuse to look at using virtual lists (browsers start to struggle when folders contain over 5000 files)
* maybe preact / vdom isn't the best choice, could just wait for the Next Big Thing
* the UX is a mess -- a proper design would be nice * the UX is a mess -- a proper design would be nice
* very organic (much like the python/js), everything was an afterthought * very organic (much like the python/js), everything was an afterthought
* true for both the layout and the visual flair * true for both the layout and the visual flair
* something like the tron board-room ui (or most other hollywood ones, like ironman) would be :100: * something like the tron board-room ui (or most other hollywood ones, like ironman) would be :100:
* would preferably keep the information density, just more organized yet [not too boring](https://blog.rachelbinx.com/2023/02/unbearable-sameness/)
* some of the python files are way too big * some of the python files are way too big
* `up2k.py` ended up doing all the file indexing / db management * `up2k.py` ended up doing all the file indexing / db management
* `httpcli.py` should be separated into modules in general * `httpcli.py` should be separated into modules in general

View file

@ -7,6 +7,20 @@ there is probably some unintentional bias so please submit corrections
currently up to date with [awesome-selfhosted](https://github.com/awesome-selfhosted/awesome-selfhosted) but that probably won't last currently up to date with [awesome-selfhosted](https://github.com/awesome-selfhosted/awesome-selfhosted) but that probably won't last
## symbol legends
### ...in feature matrices:
* `█` = absolutely
* `` = partially
* `•` = maybe?
* ` ` = nope
### ...in reviews:
* ✅ = advantages over copyparty
* 🔵 = similarities
* ⚠️ = disadvantages (something copyparty does "better")
## toc ## toc
* top * top
@ -37,6 +51,8 @@ currently up to date with [awesome-selfhosted](https://github.com/awesome-selfho
* [gimme-that](#gimme-that) * [gimme-that](#gimme-that)
* [ass](#ass) * [ass](#ass)
* [linx](#linx) * [linx](#linx)
* [h5ai](#h5ai)
* [autoindex](#autoindex)
* [briefly considered](#briefly-considered) * [briefly considered](#briefly-considered)
@ -63,8 +79,8 @@ the table headers in the matrixes below are the different softwares, with a quic
the softwares, the softwares,
* `a` = [copyparty](https://github.com/9001/copyparty) * `a` = [copyparty](https://github.com/9001/copyparty)
* `b` = [hfs2](https://github.com/rejetto/hfs2) * `b` = [hfs2](https://rejetto.com/hfs/)
* `c` = [hfs3](https://www.rejetto.com/hfs/) * `c` = [hfs3](https://github.com/rejetto/hfs)
* `d` = [nextcloud](https://github.com/nextcloud/server) * `d` = [nextcloud](https://github.com/nextcloud/server)
* `e` = [seafile](https://github.com/haiwen/seafile) * `e` = [seafile](https://github.com/haiwen/seafile)
* `f` = [rclone](https://github.com/rclone/rclone), specifically `rclone serve webdav .` * `f` = [rclone](https://github.com/rclone/rclone), specifically `rclone serve webdav .`
@ -363,7 +379,8 @@ symbol legend,
# reviews # reviews
* ✅ are advantages over copyparty * ✅ are advantages over copyparty
* ⚠️ are disadvantages * 🔵 are similarities
* ⚠️ are disadvantages (something copyparty does "better")
## [copyparty](https://github.com/9001/copyparty) ## [copyparty](https://github.com/9001/copyparty)
* resumable uploads which are verified server-side * resumable uploads which are verified server-side
@ -371,7 +388,7 @@ symbol legend,
* both of the above are surprisingly uncommon features * both of the above are surprisingly uncommon features
* very cross-platform (python, no dependencies) * very cross-platform (python, no dependencies)
## [hfs2](https://github.com/rejetto/hfs2) ## [hfs2](https://rejetto.com/hfs/)
* the OG, the legend * the OG, the legend
* ⚠️ uploads not resumable / accelerated / integrity-checked * ⚠️ uploads not resumable / accelerated / integrity-checked
* ⚠️ on cloudflare: max upload size 100 MiB * ⚠️ on cloudflare: max upload size 100 MiB
@ -380,7 +397,7 @@ symbol legend,
* vfs with gui config, per-volume permissions * vfs with gui config, per-volume permissions
* starting to show its age, hence the rewrite: * starting to show its age, hence the rewrite:
## [hfs3](https://www.rejetto.com/hfs/) ## [hfs3](https://github.com/rejetto/hfs)
* nodejs; cross-platform * nodejs; cross-platform
* vfs with gui config, per-volume permissions * vfs with gui config, per-volume permissions
* still early development, let's revisit later * still early development, let's revisit later
@ -434,12 +451,12 @@ symbol legend,
* ⚠️ on cloudflare: max upload size 100 MiB * ⚠️ on cloudflare: max upload size 100 MiB
* ⚠️ doesn't support crazy filenames * ⚠️ doesn't support crazy filenames
* ✅ per-url access control (copyparty is per-volume) * ✅ per-url access control (copyparty is per-volume)
* basic but really snappy ui * 🔵 basic but really snappy ui
* upload, rename, delete, ... see feature matrix * 🔵 upload, rename, delete, ... see feature matrix
## [chibisafe](https://github.com/chibisafe/chibisafe) ## [chibisafe](https://github.com/chibisafe/chibisafe)
* nodejs; recommends docker * nodejs; recommends docker
* *it has upload segmenting!* * 🔵 *it has upload segmenting!*
* ⚠️ but uploads are still not resumable / accelerated / integrity-checked * ⚠️ but uploads are still not resumable / accelerated / integrity-checked
* ⚠️ not portable * ⚠️ not portable
* ⚠️ isolated on-disk file hierarchy, incompatible with other software * ⚠️ isolated on-disk file hierarchy, incompatible with other software
@ -456,7 +473,7 @@ symbol legend,
## [kodbox](https://github.com/kalcaddle/kodbox) ## [kodbox](https://github.com/kalcaddle/kodbox)
* this thing is insane * this thing is insane
* php; [docker](https://hub.docker.com/r/kodcloud/kodbox) * php; [docker](https://hub.docker.com/r/kodcloud/kodbox)
* *upload segmenting, acceleration, and integrity checking!* * 🔵 *upload segmenting, acceleration, and integrity checking!*
* ⚠️ but uploads are not resumable(?) * ⚠️ but uploads are not resumable(?)
* ⚠️ not portable * ⚠️ not portable
* ⚠️ isolated on-disk file hierarchy, incompatible with other software * ⚠️ isolated on-disk file hierarchy, incompatible with other software
@ -483,17 +500,17 @@ symbol legend,
* ⚠️ but no directory tree for navigation * ⚠️ but no directory tree for navigation
* ✅ user signup * ✅ user signup
* ✅ command runner / remote shell * ✅ command runner / remote shell
* supposed to have write-only folders but couldn't get it to work * 🔵 supposed to have write-only folders but couldn't get it to work
## [filegator](https://github.com/filegator/filegator) ## [filegator](https://github.com/filegator/filegator)
* go; cross-platform (windows, linux, mac) * go; cross-platform (windows, linux, mac)
* 🔵 *it has upload segmenting and acceleration*
* ⚠️ but uploads are still not integrity-checked
* ⚠️ http only; no webdav / ftp / zeroconf * ⚠️ http only; no webdav / ftp / zeroconf
* ⚠️ does not support symlinks * ⚠️ does not support symlinks
* ⚠️ expensive download-as-zip feature * ⚠️ expensive download-as-zip feature
* ⚠️ doesn't support crazy filenames * ⚠️ doesn't support crazy filenames
* ⚠️ limited file search * ⚠️ limited file search
* *it has upload segmenting and acceleration*
* ⚠️ but uploads are still not integrity-checked
## [updog](https://github.com/sc0tfree/updog) ## [updog](https://github.com/sc0tfree/updog)
* python; cross-platform * python; cross-platform
@ -510,8 +527,8 @@ symbol legend,
* ⚠️ on cloudflare: max upload size 100 MiB * ⚠️ on cloudflare: max upload size 100 MiB
* ✅ cool clipboard widget * ✅ cool clipboard widget
* copyparty: the markdown editor is an ok substitute * copyparty: the markdown editor is an ok substitute
* read-only and upload-only modes (same as copyparty's write-only) * 🔵 read-only and upload-only modes (same as copyparty's write-only)
* https, webdav * 🔵 https, webdav, but no ftp
## [gimme-that](https://github.com/nejdetckenobi/gimme-that) ## [gimme-that](https://github.com/nejdetckenobi/gimme-that)
* python, but with c dependencies * python, but with c dependencies
@ -520,7 +537,7 @@ symbol legend,
* ⚠️ on cloudflare: max upload size 100 MiB * ⚠️ on cloudflare: max upload size 100 MiB
* ⚠️ weird folder structure for uploads * ⚠️ weird folder structure for uploads
* ✅ clamav antivirus check on upload! neat * ✅ clamav antivirus check on upload! neat
* optional max-filesize, os-notification on uploads * 🔵 optional max-filesize, os-notification on uploads
* copyparty: os-notification available as [a plugin](https://github.com/9001/copyparty/blob/hovudstraum/bin/hooks/notify.py) * copyparty: os-notification available as [a plugin](https://github.com/9001/copyparty/blob/hovudstraum/bin/hooks/notify.py)
## [ass](https://github.com/tycrek/ass) ## [ass](https://github.com/tycrek/ass)
@ -544,7 +561,7 @@ symbol legend,
* originally [andreimarcu/linx-server](https://github.com/andreimarcu/linx-server) but development has ended * originally [andreimarcu/linx-server](https://github.com/andreimarcu/linx-server) but development has ended
* ⚠️ uploads not resumable / accelerated / integrity-checked * ⚠️ uploads not resumable / accelerated / integrity-checked
* ⚠️ on cloudflare: max upload size 100 MiB * ⚠️ on cloudflare: max upload size 100 MiB
* some of its unique features have been added to copyparty as former linx users have migrated * 🔵 some of its unique features have been added to copyparty as former linx users have migrated
* file expiration timers, filename randomization * file expiration timers, filename randomization
* ✅ password-protected files * ✅ password-protected files
* copyparty: password-protected folders + filekeys to skip the folder password seem to cover most usecases * copyparty: password-protected folders + filekeys to skip the folder password seem to cover most usecases
@ -554,8 +571,19 @@ symbol legend,
* copyparty: available as [a plugin](https://github.com/9001/copyparty/blob/hovudstraum/bin/hooks/wget.py) * copyparty: available as [a plugin](https://github.com/9001/copyparty/blob/hovudstraum/bin/hooks/wget.py)
* ✅ can use S3 as storage backend; copyparty relies on rclone-mount for that * ✅ can use S3 as storage backend; copyparty relies on rclone-mount for that
## [h5ai](https://larsjung.de/h5ai/)
* ⚠️ read only; no upload/move/delete
* ⚠️ search hits the filesystem directly; not indexed/cached
* ✅ slick ui
* ✅ in-browser qr generator to share URLs
* 🔵 directory tree, image viewer, thumbnails, download-as-tar
## [autoindex](https://github.com/nielsAD/autoindex)
* ⚠️ read only; no upload/move/delete
* ✅ directory cache for faster browsing of cloud storage
* copyparty: local index/cache for recursive search (names/attrs/tags), but not for browsing
# briefly considered # briefly considered
* [pydio](https://github.com/pydio/cells): python/agpl3, looks great, fantastic ux -- but needs mariadb, systemwide install * [pydio](https://github.com/pydio/cells): python/agpl3, looks great, fantastic ux -- but needs mariadb, systemwide install
* [gossa](https://github.com/pldubouilh/gossa): go/mit, minimalistic, basic file upload, text editor, mkdir and rename (no delete/move) * [gossa](https://github.com/pldubouilh/gossa): go/mit, minimalistic, basic file upload, text editor, mkdir and rename (no delete/move)
* [h5ai](https://larsjung.de/h5ai/): php/mit, slick ui, image viewer, directory tree, no upload feature