copyparty 1.13.3__tar.gz → 1.13.5__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {copyparty-1.13.3 → copyparty-1.13.5}/PKG-INFO +45 -10
- {copyparty-1.13.3 → copyparty-1.13.5}/README.md +43 -8
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/__main__.py +80 -41
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/__version__.py +2 -2
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/authsrv.py +68 -9
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/broker_util.py +3 -3
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/cert.py +10 -6
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/cfg.py +3 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/ftpd.py +44 -7
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/httpcli.py +224 -96
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/httpsrv.py +3 -3
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/mdns.py +1 -1
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/mtag.py +3 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/smbd.py +1 -1
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/ssdp.py +1 -1
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/svchub.py +4 -2
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/tcpsrv.py +4 -1
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/tftpd.py +5 -10
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/th_cli.py +3 -2
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/th_srv.py +16 -8
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/up2k.py +124 -40
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/util.py +45 -15
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/web/a/u2c.py +117 -38
- copyparty-1.13.5/copyparty/web/baguettebox.js.gz +0 -0
- copyparty-1.13.5/copyparty/web/browser.js.gz +0 -0
- copyparty-1.13.5/copyparty/web/deps/marked.js.gz +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/web/svcs.html +11 -10
- copyparty-1.13.5/copyparty/web/ui.css.gz +0 -0
- copyparty-1.13.5/copyparty/web/up2k.js.gz +0 -0
- copyparty-1.13.5/copyparty/web/util.js.gz +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/web/w.hash.js.gz +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty.egg-info/PKG-INFO +45 -10
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty.egg-info/requires.txt +1 -1
- {copyparty-1.13.3 → copyparty-1.13.5}/pyproject.toml +1 -1
- copyparty-1.13.3/copyparty/web/baguettebox.js.gz +0 -0
- copyparty-1.13.3/copyparty/web/browser.js.gz +0 -0
- copyparty-1.13.3/copyparty/web/deps/marked.js.gz +0 -0
- copyparty-1.13.3/copyparty/web/ui.css.gz +0 -0
- copyparty-1.13.3/copyparty/web/up2k.js.gz +0 -0
- copyparty-1.13.3/copyparty/web/util.js.gz +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/LICENSE +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/__init__.py +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/bos/__init__.py +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/bos/bos.py +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/bos/path.py +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/broker_mp.py +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/broker_mpw.py +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/broker_thr.py +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/dxml.py +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/fsutil.py +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/httpconn.py +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/ico.py +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/metrics.py +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/multicast.py +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/pwhash.py +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/res/COPYING.txt +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/res/__init__.py +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/res/insecure.pem +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/star.py +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/stolen/__init__.py +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/stolen/dnslib/__init__.py +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/stolen/dnslib/bimap.py +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/stolen/dnslib/bit.py +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/stolen/dnslib/buffer.py +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/stolen/dnslib/dns.py +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/stolen/dnslib/label.py +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/stolen/dnslib/lex.py +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/stolen/dnslib/ranges.py +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/stolen/ifaddr/__init__.py +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/stolen/ifaddr/_posix.py +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/stolen/ifaddr/_shared.py +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/stolen/ifaddr/_win32.py +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/stolen/qrcodegen.py +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/stolen/surrogateescape.py +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/sutil.py +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/szip.py +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/u2idx.py +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/web/a/__init__.py +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/web/a/partyfuse.py +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/web/a/webdav-cfg.bat +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/web/browser.css.gz +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/web/browser.html +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/web/browser2.html +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/web/cf.html +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/web/dbg-audio.js.gz +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/web/dd/2.png +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/web/dd/3.png +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/web/dd/4.png +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/web/dd/5.png +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/web/dd/__init__.py +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/web/deps/__init__.py +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/web/deps/busy.mp3.gz +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/web/deps/easymde.css.gz +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/web/deps/easymde.js.gz +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/web/deps/mini-fa.css.gz +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/web/deps/mini-fa.woff +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/web/deps/prism.css.gz +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/web/deps/prism.js.gz +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/web/deps/prismd.css.gz +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/web/deps/scp.woff2 +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/web/deps/sha512.ac.js.gz +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/web/deps/sha512.hw.js.gz +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/web/md.css.gz +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/web/md.html +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/web/md.js.gz +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/web/md2.css.gz +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/web/md2.js.gz +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/web/mde.css.gz +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/web/mde.html +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/web/mde.js.gz +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/web/msg.css.gz +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/web/msg.html +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/web/splash.css.gz +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/web/splash.html +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/web/splash.js.gz +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty/web/svcs.js.gz +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty.egg-info/SOURCES.txt +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty.egg-info/dependency_links.txt +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty.egg-info/entry_points.txt +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/copyparty.egg-info/top_level.txt +0 -0
- {copyparty-1.13.3 → copyparty-1.13.5}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: copyparty
|
3
|
-
Version: 1.13.
|
3
|
+
Version: 1.13.5
|
4
4
|
Summary: Portable file server with accelerated resumable uploads, deduplication, WebDAV, FTP, zeroconf, media indexer, video thumbnails, audio transcoding, and write-only folders
|
5
5
|
Author-email: ed <copyparty@ocv.me>
|
6
6
|
License: MIT
|
@@ -48,7 +48,7 @@ Provides-Extra: ftps
|
|
48
48
|
Requires-Dist: pyftpdlib; extra == "ftps"
|
49
49
|
Requires-Dist: pyopenssl; extra == "ftps"
|
50
50
|
Provides-Extra: tftpd
|
51
|
-
Requires-Dist: partftpy>=0.
|
51
|
+
Requires-Dist: partftpy>=0.4.0; extra == "tftpd"
|
52
52
|
Provides-Extra: pwhash
|
53
53
|
Requires-Dist: argon2-cffi; extra == "pwhash"
|
54
54
|
|
@@ -137,6 +137,8 @@ turn almost any device into a file server with resumable uploads/downloads using
|
|
137
137
|
* [reverse-proxy](#reverse-proxy) - running copyparty next to other websites
|
138
138
|
* [real-ip](#real-ip) - teaching copyparty how to see client IPs
|
139
139
|
* [prometheus](#prometheus) - metrics/stats can be enabled
|
140
|
+
* [other extremely specific features](#other-extremely-specific-features) - you'll never find a use for these
|
141
|
+
* [custom mimetypes](#custom-mimetypes) - change the association of a file extension
|
140
142
|
* [packages](#packages) - the party might be closer than you think
|
141
143
|
* [arch package](#arch-package) - now [available on aur](https://aur.archlinux.org/packages/copyparty) maintained by [@icxes](https://github.com/icxes)
|
142
144
|
* [fedora package](#fedora-package) - does not exist yet
|
@@ -261,7 +263,7 @@ also see [comparison to similar software](./docs/versus.md)
|
|
261
263
|
* upload
|
262
264
|
* ☑ basic: plain multipart, ie6 support
|
263
265
|
* ☑ [up2k](#uploading): js, resumable, multithreaded
|
264
|
-
*
|
266
|
+
* **no filesize limit!** ...unless you use Cloudflare, then it's 383.9 GiB
|
265
267
|
* ☑ stash: simple PUT filedropper
|
266
268
|
* ☑ filename randomizer
|
267
269
|
* ☑ write-only folders
|
@@ -277,6 +279,7 @@ also see [comparison to similar software](./docs/versus.md)
|
|
277
279
|
* ☑ [navpane](#navpane) (directory tree sidebar)
|
278
280
|
* ☑ file manager (cut/paste, delete, [batch-rename](#batch-rename))
|
279
281
|
* ☑ audio player (with [OS media controls](https://user-images.githubusercontent.com/241032/215347492-b4250797-6c90-4e09-9a4c-721edf2fb15c.png) and opus/mp3 transcoding)
|
282
|
+
* ☑ play video files as audio (converted on server)
|
280
283
|
* ☑ image gallery with webm player
|
281
284
|
* ☑ textfile browser with syntax hilighting
|
282
285
|
* ☑ [thumbnails](#thumbnails)
|
@@ -627,6 +630,7 @@ it does static images with Pillow / pyvips / FFmpeg, and uses FFmpeg for video f
|
|
627
630
|
audio files are covnerted into spectrograms using FFmpeg unless you `--no-athumb` (and some FFmpeg builds may need `--th-ff-swr`)
|
628
631
|
|
629
632
|
images with the following names (see `--th-covers`) become the thumbnail of the folder they're in: `folder.png`, `folder.jpg`, `cover.png`, `cover.jpg`
|
633
|
+
* the order is significant, so if both `cover.png` and `folder.jpg` exist in a folder, it will pick the first matching `--th-covers` entry (`folder.jpg`)
|
630
634
|
* and, if you enable [file indexing](#file-indexing), it will also try those names as dotfiles (`.folder.jpg` and so), and then fallback on the first picture in the folder (if it has any pictures at all)
|
631
635
|
|
632
636
|
in the grid/thumbnail view, if the audio player panel is open, songs will start playing when clicked
|
@@ -634,6 +638,7 @@ in the grid/thumbnail view, if the audio player panel is open, songs will start
|
|
634
638
|
|
635
639
|
enabling `multiselect` lets you click files to select them, and then shift-click another file for range-select
|
636
640
|
* `multiselect` is mostly intended for phones/tablets, but the `sel` option in the `[⚙️] settings` tab is better suited for desktop use, allowing selection by CTRL-clicking and range-selection with SHIFT-click, all without affecting regular clicking
|
641
|
+
* the `sel` option can be made default globally with `--gsel` or per-volume with volflag `gsel`
|
637
642
|
|
638
643
|
|
639
644
|
## zip downloads
|
@@ -696,6 +701,7 @@ up2k has several advantages:
|
|
696
701
|
* uploads resume if you reboot your browser or pc, just upload the same files again
|
697
702
|
* server detects any corruption; the client reuploads affected chunks
|
698
703
|
* the client doesn't upload anything that already exists on the server
|
704
|
+
* no filesize limit unless imposed by a proxy, for example Cloudflare, which blocks uploads over 383.9 GiB
|
699
705
|
* much higher speeds than ftp/scp/tarpipe on some internet connections (mainly american ones) thanks to parallel connections
|
700
706
|
* the last-modified timestamp of the file is preserved
|
701
707
|
|
@@ -763,7 +769,7 @@ uploads can be given a lifetime, afer which they expire / self-destruct
|
|
763
769
|
|
764
770
|
the feature must be enabled per-volume with the `lifetime` [upload rule](#upload-rules) which sets the upper limit for how long a file gets to stay on the server
|
765
771
|
|
766
|
-
clients can specify a shorter expiration time using the [up2k ui](#uploading) -- the relevant options become visible upon navigating into a folder with `lifetimes` enabled -- or by using the `life` [upload modifier](#write)
|
772
|
+
clients can specify a shorter expiration time using the [up2k ui](#uploading) -- the relevant options become visible upon navigating into a folder with `lifetimes` enabled -- or by using the `life` [upload modifier](./docs/devnotes.md#write)
|
767
773
|
|
768
774
|
specifying a custom expiration time client-side will affect the timespan in which unposts are permitted, so keep an eye on the estimates in the up2k ui
|
769
775
|
|
@@ -850,6 +856,7 @@ some hilights:
|
|
850
856
|
* OS integration; control playback from your phone's lockscreen ([windows](https://user-images.githubusercontent.com/241032/233213022-298a98ba-721a-4cf1-a3d4-f62634bc53d5.png) // [iOS](https://user-images.githubusercontent.com/241032/142711926-0700be6c-3e31-47b3-9928-53722221f722.png) // [android](https://user-images.githubusercontent.com/241032/233212311-a7368590-08c7-4f9f-a1af-48ccf3f36fad.png))
|
851
857
|
* shows the audio waveform in the seekbar
|
852
858
|
* not perfectly gapless but can get really close (see settings + eq below); good enough to enjoy gapless albums as intended
|
859
|
+
* videos can be played as audio, without wasting bandwidth on the video
|
853
860
|
|
854
861
|
click the `play` link next to an audio file, or copy the link target to [share it](https://a.ocv.me/pub/demo/music/Ubiktune%20-%20SOUNDSHOCK%202%20-%20FM%20FUNK%20TERRROR!!/#af-1fbfba61&t=18) (optionally with a timestamp to start playing from, like that example does)
|
855
862
|
|
@@ -931,6 +938,8 @@ see [./srv/expand/](./srv/expand/) for usage and examples
|
|
931
938
|
|
932
939
|
* files named `.prologue.html` / `.epilogue.html` will be rendered before/after directory listings unless `--no-logues`
|
933
940
|
|
941
|
+
* files named `descript.ion` / `DESCRIPT.ION` are parsed and displayed in the file listing, or as the epilogue if nonstandard
|
942
|
+
|
934
943
|
* files named `README.md` / `readme.md` will be rendered after directory listings unless `--no-readme` (but `.epilogue.html` takes precedence)
|
935
944
|
|
936
945
|
* `README.md` and `*logue.html` can contain placeholder values which are replaced server-side before embedding into directory listings; see `--help-exp`
|
@@ -1035,7 +1044,7 @@ some recommended FTP / FTPS clients; `wark` = example password:
|
|
1035
1044
|
|
1036
1045
|
## webdav server
|
1037
1046
|
|
1038
|
-
with read-write support, supports winXP and later, macos, nautilus/gvfs
|
1047
|
+
with read-write support, supports winXP and later, macos, nautilus/gvfs ... a greay way to [access copyparty straight from the file explorer in your OS](#mount-as-drive)
|
1039
1048
|
|
1040
1049
|
click the [connect](http://127.0.0.1:3923/?hc) button in the control-panel to see connection instructions for windows, linux, macos
|
1041
1050
|
|
@@ -1499,8 +1508,9 @@ you can either:
|
|
1499
1508
|
* or do location-based proxying, using `--rp-loc=/stuff` to tell copyparty where it is mounted -- has a slight performance cost and higher chance of bugs
|
1500
1509
|
* if copyparty says `incorrect --rp-loc or webserver config; expected vpath starting with [...]` it's likely because the webserver is stripping away the proxy location from the request URLs -- see the `ProxyPass` in the apache example below
|
1501
1510
|
|
1502
|
-
some reverse proxies (such as [Caddy](https://caddyserver.com/)) can automatically obtain a valid https/tls certificate for you, and some support HTTP/2 and QUIC which could be a nice speed boost
|
1503
|
-
* **warning:** nginx-QUIC is still experimental and can make uploads much slower, so HTTP/
|
1511
|
+
some reverse proxies (such as [Caddy](https://caddyserver.com/)) can automatically obtain a valid https/tls certificate for you, and some support HTTP/2 and QUIC which *could* be a nice speed boost, depending on a lot of factors
|
1512
|
+
* **warning:** nginx-QUIC (HTTP/3) is still experimental and can make uploads much slower, so HTTP/1.1 is recommended for now
|
1513
|
+
* depending on server/client, HTTP/1.1 can also be 5x faster than HTTP/2
|
1504
1514
|
|
1505
1515
|
example webserver configs:
|
1506
1516
|
|
@@ -1580,6 +1590,28 @@ the following options are available to disable some of the metrics:
|
|
1580
1590
|
note: the following metrics are counted incorrectly if multiprocessing is enabled with `-j`: `cpp_http_conns`, `cpp_http_reqs`, `cpp_sus_reqs`, `cpp_active_bans`, `cpp_total_bans`
|
1581
1591
|
|
1582
1592
|
|
1593
|
+
## other extremely specific features
|
1594
|
+
|
1595
|
+
you'll never find a use for these:
|
1596
|
+
|
1597
|
+
|
1598
|
+
### custom mimetypes
|
1599
|
+
|
1600
|
+
change the association of a file extension
|
1601
|
+
|
1602
|
+
using commandline args, you can do something like `--mime gif=image/jif` and `--mime ts=text/x.typescript` (can be specified multiple times)
|
1603
|
+
|
1604
|
+
in a config-file, this is the same as:
|
1605
|
+
|
1606
|
+
```yaml
|
1607
|
+
[global]
|
1608
|
+
mime: gif=image/jif
|
1609
|
+
mime: ts=text/x.typescript
|
1610
|
+
```
|
1611
|
+
|
1612
|
+
run copyparty with `--mimes` to list all the default mappings
|
1613
|
+
|
1614
|
+
|
1583
1615
|
# packages
|
1584
1616
|
|
1585
1617
|
the party might be closer than you think
|
@@ -1823,12 +1855,14 @@ alternatively, some alternatives roughly sorted by speed (unreproducible benchma
|
|
1823
1855
|
* [rclone-http](./docs/rclone.md) (26s), read-only
|
1824
1856
|
* [partyfuse.py](./bin/#partyfusepy) (35s), read-only
|
1825
1857
|
* [rclone-ftp](./docs/rclone.md) (47s), read/WRITE
|
1826
|
-
* davfs2 (103s), read/WRITE
|
1858
|
+
* davfs2 (103s), read/WRITE
|
1827
1859
|
* [win10-webdav](#webdav-server) (138s), read/WRITE
|
1828
1860
|
* [win10-smb2](#smb-server) (387s), read/WRITE
|
1829
1861
|
|
1830
1862
|
most clients will fail to mount the root of a copyparty server unless there is a root volume (so you get the admin-panel instead of a browser when accessing it) -- in that case, mount a specific volume instead
|
1831
1863
|
|
1864
|
+
if you have volumes that are accessible without a password, then some webdav clients (such as davfs2) require the global-option `--dav-auth` to access any password-protected areas
|
1865
|
+
|
1832
1866
|
|
1833
1867
|
# android app
|
1834
1868
|
|
@@ -1857,6 +1891,7 @@ defaults are usually fine - expect `8 GiB/s` download, `1 GiB/s` upload
|
|
1857
1891
|
|
1858
1892
|
below are some tweaks roughly ordered by usefulness:
|
1859
1893
|
|
1894
|
+
* disabling HTTP/2 and HTTP/3 can make uploads 5x faster, depending on server/client software
|
1860
1895
|
* `-q` disables logging and can help a bunch, even when combined with `-lo` to redirect logs to file
|
1861
1896
|
* `--hist` pointing to a fast location (ssd) will make directory listings and searches faster when `-e2d` or `-e2t` is set
|
1862
1897
|
* and also makes thumbnails load faster, regardless of e2d/e2t
|
@@ -1972,7 +2007,7 @@ volflag `dk` generates dirkeys (per-directory accesskeys) for all folders, grant
|
|
1972
2007
|
|
1973
2008
|
volflag `dky` disables the actual key-check, meaning anyone can see the contents of a folder where they have `g` access, but not its subdirectories
|
1974
2009
|
|
1975
|
-
* `dk` + `dky` gives the same behavior as if all users with `g` access have full read-access, but subfolders are hidden files (their names start with a dot), so `dky` is an alternative to renaming all the folders for that purpose, maybe just for some users
|
2010
|
+
* `dk` + `dky` gives the same behavior as if all users with `g` access have full read-access, but subfolders are hidden files (as if their names start with a dot), so `dky` is an alternative to renaming all the folders for that purpose, maybe just for some users
|
1976
2011
|
|
1977
2012
|
volflag `dks` lets people enter subfolders as well, and also enables download-as-zip/tar
|
1978
2013
|
|
@@ -1997,7 +2032,7 @@ the default configs take about 0.4 sec and 256 MiB RAM to process a new password
|
|
1997
2032
|
|
1998
2033
|
both HTTP and HTTPS are accepted by default, but letting a [reverse proxy](#reverse-proxy) handle the https/tls/ssl would be better (probably more secure by default)
|
1999
2034
|
|
2000
|
-
copyparty doesn't speak HTTP/2 or QUIC, so using a reverse proxy would solve that as well
|
2035
|
+
copyparty doesn't speak HTTP/2 or QUIC, so using a reverse proxy would solve that as well -- but note that HTTP/1 is usually faster than both HTTP/2 and HTTP/3
|
2001
2036
|
|
2002
2037
|
if [cfssl](https://github.com/cloudflare/cfssl/releases/latest) is installed, copyparty will automatically create a CA and server-cert on startup
|
2003
2038
|
* the certs are written to `--crt-dir` for distribution, see `--help` for the other `--crt` options
|
@@ -83,6 +83,8 @@ turn almost any device into a file server with resumable uploads/downloads using
|
|
83
83
|
* [reverse-proxy](#reverse-proxy) - running copyparty next to other websites
|
84
84
|
* [real-ip](#real-ip) - teaching copyparty how to see client IPs
|
85
85
|
* [prometheus](#prometheus) - metrics/stats can be enabled
|
86
|
+
* [other extremely specific features](#other-extremely-specific-features) - you'll never find a use for these
|
87
|
+
* [custom mimetypes](#custom-mimetypes) - change the association of a file extension
|
86
88
|
* [packages](#packages) - the party might be closer than you think
|
87
89
|
* [arch package](#arch-package) - now [available on aur](https://aur.archlinux.org/packages/copyparty) maintained by [@icxes](https://github.com/icxes)
|
88
90
|
* [fedora package](#fedora-package) - does not exist yet
|
@@ -207,7 +209,7 @@ also see [comparison to similar software](./docs/versus.md)
|
|
207
209
|
* upload
|
208
210
|
* ☑ basic: plain multipart, ie6 support
|
209
211
|
* ☑ [up2k](#uploading): js, resumable, multithreaded
|
210
|
-
*
|
212
|
+
* **no filesize limit!** ...unless you use Cloudflare, then it's 383.9 GiB
|
211
213
|
* ☑ stash: simple PUT filedropper
|
212
214
|
* ☑ filename randomizer
|
213
215
|
* ☑ write-only folders
|
@@ -223,6 +225,7 @@ also see [comparison to similar software](./docs/versus.md)
|
|
223
225
|
* ☑ [navpane](#navpane) (directory tree sidebar)
|
224
226
|
* ☑ file manager (cut/paste, delete, [batch-rename](#batch-rename))
|
225
227
|
* ☑ audio player (with [OS media controls](https://user-images.githubusercontent.com/241032/215347492-b4250797-6c90-4e09-9a4c-721edf2fb15c.png) and opus/mp3 transcoding)
|
228
|
+
* ☑ play video files as audio (converted on server)
|
226
229
|
* ☑ image gallery with webm player
|
227
230
|
* ☑ textfile browser with syntax hilighting
|
228
231
|
* ☑ [thumbnails](#thumbnails)
|
@@ -573,6 +576,7 @@ it does static images with Pillow / pyvips / FFmpeg, and uses FFmpeg for video f
|
|
573
576
|
audio files are covnerted into spectrograms using FFmpeg unless you `--no-athumb` (and some FFmpeg builds may need `--th-ff-swr`)
|
574
577
|
|
575
578
|
images with the following names (see `--th-covers`) become the thumbnail of the folder they're in: `folder.png`, `folder.jpg`, `cover.png`, `cover.jpg`
|
579
|
+
* the order is significant, so if both `cover.png` and `folder.jpg` exist in a folder, it will pick the first matching `--th-covers` entry (`folder.jpg`)
|
576
580
|
* and, if you enable [file indexing](#file-indexing), it will also try those names as dotfiles (`.folder.jpg` and so), and then fallback on the first picture in the folder (if it has any pictures at all)
|
577
581
|
|
578
582
|
in the grid/thumbnail view, if the audio player panel is open, songs will start playing when clicked
|
@@ -580,6 +584,7 @@ in the grid/thumbnail view, if the audio player panel is open, songs will start
|
|
580
584
|
|
581
585
|
enabling `multiselect` lets you click files to select them, and then shift-click another file for range-select
|
582
586
|
* `multiselect` is mostly intended for phones/tablets, but the `sel` option in the `[⚙️] settings` tab is better suited for desktop use, allowing selection by CTRL-clicking and range-selection with SHIFT-click, all without affecting regular clicking
|
587
|
+
* the `sel` option can be made default globally with `--gsel` or per-volume with volflag `gsel`
|
583
588
|
|
584
589
|
|
585
590
|
## zip downloads
|
@@ -642,6 +647,7 @@ up2k has several advantages:
|
|
642
647
|
* uploads resume if you reboot your browser or pc, just upload the same files again
|
643
648
|
* server detects any corruption; the client reuploads affected chunks
|
644
649
|
* the client doesn't upload anything that already exists on the server
|
650
|
+
* no filesize limit unless imposed by a proxy, for example Cloudflare, which blocks uploads over 383.9 GiB
|
645
651
|
* much higher speeds than ftp/scp/tarpipe on some internet connections (mainly american ones) thanks to parallel connections
|
646
652
|
* the last-modified timestamp of the file is preserved
|
647
653
|
|
@@ -709,7 +715,7 @@ uploads can be given a lifetime, afer which they expire / self-destruct
|
|
709
715
|
|
710
716
|
the feature must be enabled per-volume with the `lifetime` [upload rule](#upload-rules) which sets the upper limit for how long a file gets to stay on the server
|
711
717
|
|
712
|
-
clients can specify a shorter expiration time using the [up2k ui](#uploading) -- the relevant options become visible upon navigating into a folder with `lifetimes` enabled -- or by using the `life` [upload modifier](#write)
|
718
|
+
clients can specify a shorter expiration time using the [up2k ui](#uploading) -- the relevant options become visible upon navigating into a folder with `lifetimes` enabled -- or by using the `life` [upload modifier](./docs/devnotes.md#write)
|
713
719
|
|
714
720
|
specifying a custom expiration time client-side will affect the timespan in which unposts are permitted, so keep an eye on the estimates in the up2k ui
|
715
721
|
|
@@ -796,6 +802,7 @@ some hilights:
|
|
796
802
|
* OS integration; control playback from your phone's lockscreen ([windows](https://user-images.githubusercontent.com/241032/233213022-298a98ba-721a-4cf1-a3d4-f62634bc53d5.png) // [iOS](https://user-images.githubusercontent.com/241032/142711926-0700be6c-3e31-47b3-9928-53722221f722.png) // [android](https://user-images.githubusercontent.com/241032/233212311-a7368590-08c7-4f9f-a1af-48ccf3f36fad.png))
|
797
803
|
* shows the audio waveform in the seekbar
|
798
804
|
* not perfectly gapless but can get really close (see settings + eq below); good enough to enjoy gapless albums as intended
|
805
|
+
* videos can be played as audio, without wasting bandwidth on the video
|
799
806
|
|
800
807
|
click the `play` link next to an audio file, or copy the link target to [share it](https://a.ocv.me/pub/demo/music/Ubiktune%20-%20SOUNDSHOCK%202%20-%20FM%20FUNK%20TERRROR!!/#af-1fbfba61&t=18) (optionally with a timestamp to start playing from, like that example does)
|
801
808
|
|
@@ -877,6 +884,8 @@ see [./srv/expand/](./srv/expand/) for usage and examples
|
|
877
884
|
|
878
885
|
* files named `.prologue.html` / `.epilogue.html` will be rendered before/after directory listings unless `--no-logues`
|
879
886
|
|
887
|
+
* files named `descript.ion` / `DESCRIPT.ION` are parsed and displayed in the file listing, or as the epilogue if nonstandard
|
888
|
+
|
880
889
|
* files named `README.md` / `readme.md` will be rendered after directory listings unless `--no-readme` (but `.epilogue.html` takes precedence)
|
881
890
|
|
882
891
|
* `README.md` and `*logue.html` can contain placeholder values which are replaced server-side before embedding into directory listings; see `--help-exp`
|
@@ -981,7 +990,7 @@ some recommended FTP / FTPS clients; `wark` = example password:
|
|
981
990
|
|
982
991
|
## webdav server
|
983
992
|
|
984
|
-
with read-write support, supports winXP and later, macos, nautilus/gvfs
|
993
|
+
with read-write support, supports winXP and later, macos, nautilus/gvfs ... a greay way to [access copyparty straight from the file explorer in your OS](#mount-as-drive)
|
985
994
|
|
986
995
|
click the [connect](http://127.0.0.1:3923/?hc) button in the control-panel to see connection instructions for windows, linux, macos
|
987
996
|
|
@@ -1445,8 +1454,9 @@ you can either:
|
|
1445
1454
|
* or do location-based proxying, using `--rp-loc=/stuff` to tell copyparty where it is mounted -- has a slight performance cost and higher chance of bugs
|
1446
1455
|
* if copyparty says `incorrect --rp-loc or webserver config; expected vpath starting with [...]` it's likely because the webserver is stripping away the proxy location from the request URLs -- see the `ProxyPass` in the apache example below
|
1447
1456
|
|
1448
|
-
some reverse proxies (such as [Caddy](https://caddyserver.com/)) can automatically obtain a valid https/tls certificate for you, and some support HTTP/2 and QUIC which could be a nice speed boost
|
1449
|
-
* **warning:** nginx-QUIC is still experimental and can make uploads much slower, so HTTP/
|
1457
|
+
some reverse proxies (such as [Caddy](https://caddyserver.com/)) can automatically obtain a valid https/tls certificate for you, and some support HTTP/2 and QUIC which *could* be a nice speed boost, depending on a lot of factors
|
1458
|
+
* **warning:** nginx-QUIC (HTTP/3) is still experimental and can make uploads much slower, so HTTP/1.1 is recommended for now
|
1459
|
+
* depending on server/client, HTTP/1.1 can also be 5x faster than HTTP/2
|
1450
1460
|
|
1451
1461
|
example webserver configs:
|
1452
1462
|
|
@@ -1526,6 +1536,28 @@ the following options are available to disable some of the metrics:
|
|
1526
1536
|
note: the following metrics are counted incorrectly if multiprocessing is enabled with `-j`: `cpp_http_conns`, `cpp_http_reqs`, `cpp_sus_reqs`, `cpp_active_bans`, `cpp_total_bans`
|
1527
1537
|
|
1528
1538
|
|
1539
|
+
## other extremely specific features
|
1540
|
+
|
1541
|
+
you'll never find a use for these:
|
1542
|
+
|
1543
|
+
|
1544
|
+
### custom mimetypes
|
1545
|
+
|
1546
|
+
change the association of a file extension
|
1547
|
+
|
1548
|
+
using commandline args, you can do something like `--mime gif=image/jif` and `--mime ts=text/x.typescript` (can be specified multiple times)
|
1549
|
+
|
1550
|
+
in a config-file, this is the same as:
|
1551
|
+
|
1552
|
+
```yaml
|
1553
|
+
[global]
|
1554
|
+
mime: gif=image/jif
|
1555
|
+
mime: ts=text/x.typescript
|
1556
|
+
```
|
1557
|
+
|
1558
|
+
run copyparty with `--mimes` to list all the default mappings
|
1559
|
+
|
1560
|
+
|
1529
1561
|
# packages
|
1530
1562
|
|
1531
1563
|
the party might be closer than you think
|
@@ -1769,12 +1801,14 @@ alternatively, some alternatives roughly sorted by speed (unreproducible benchma
|
|
1769
1801
|
* [rclone-http](./docs/rclone.md) (26s), read-only
|
1770
1802
|
* [partyfuse.py](./bin/#partyfusepy) (35s), read-only
|
1771
1803
|
* [rclone-ftp](./docs/rclone.md) (47s), read/WRITE
|
1772
|
-
* davfs2 (103s), read/WRITE
|
1804
|
+
* davfs2 (103s), read/WRITE
|
1773
1805
|
* [win10-webdav](#webdav-server) (138s), read/WRITE
|
1774
1806
|
* [win10-smb2](#smb-server) (387s), read/WRITE
|
1775
1807
|
|
1776
1808
|
most clients will fail to mount the root of a copyparty server unless there is a root volume (so you get the admin-panel instead of a browser when accessing it) -- in that case, mount a specific volume instead
|
1777
1809
|
|
1810
|
+
if you have volumes that are accessible without a password, then some webdav clients (such as davfs2) require the global-option `--dav-auth` to access any password-protected areas
|
1811
|
+
|
1778
1812
|
|
1779
1813
|
# android app
|
1780
1814
|
|
@@ -1803,6 +1837,7 @@ defaults are usually fine - expect `8 GiB/s` download, `1 GiB/s` upload
|
|
1803
1837
|
|
1804
1838
|
below are some tweaks roughly ordered by usefulness:
|
1805
1839
|
|
1840
|
+
* disabling HTTP/2 and HTTP/3 can make uploads 5x faster, depending on server/client software
|
1806
1841
|
* `-q` disables logging and can help a bunch, even when combined with `-lo` to redirect logs to file
|
1807
1842
|
* `--hist` pointing to a fast location (ssd) will make directory listings and searches faster when `-e2d` or `-e2t` is set
|
1808
1843
|
* and also makes thumbnails load faster, regardless of e2d/e2t
|
@@ -1918,7 +1953,7 @@ volflag `dk` generates dirkeys (per-directory accesskeys) for all folders, grant
|
|
1918
1953
|
|
1919
1954
|
volflag `dky` disables the actual key-check, meaning anyone can see the contents of a folder where they have `g` access, but not its subdirectories
|
1920
1955
|
|
1921
|
-
* `dk` + `dky` gives the same behavior as if all users with `g` access have full read-access, but subfolders are hidden files (their names start with a dot), so `dky` is an alternative to renaming all the folders for that purpose, maybe just for some users
|
1956
|
+
* `dk` + `dky` gives the same behavior as if all users with `g` access have full read-access, but subfolders are hidden files (as if their names start with a dot), so `dky` is an alternative to renaming all the folders for that purpose, maybe just for some users
|
1922
1957
|
|
1923
1958
|
volflag `dks` lets people enter subfolders as well, and also enables download-as-zip/tar
|
1924
1959
|
|
@@ -1943,7 +1978,7 @@ the default configs take about 0.4 sec and 256 MiB RAM to process a new password
|
|
1943
1978
|
|
1944
1979
|
both HTTP and HTTPS are accepted by default, but letting a [reverse proxy](#reverse-proxy) handle the https/tls/ssl would be better (probably more secure by default)
|
1945
1980
|
|
1946
|
-
copyparty doesn't speak HTTP/2 or QUIC, so using a reverse proxy would solve that as well
|
1981
|
+
copyparty doesn't speak HTTP/2 or QUIC, so using a reverse proxy would solve that as well -- but note that HTTP/1 is usually faster than both HTTP/2 and HTTP/3
|
1947
1982
|
|
1948
1983
|
if [cfssl](https://github.com/cloudflare/cfssl/releases/latest) is installed, copyparty will automatically create a CA and server-cert on startup
|
1949
1984
|
* the certs are written to `--crt-dir` for distribution, see `--help` for the other `--crt` options
|