copyparty 1.18.10__tar.gz → 1.19.1__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.18.10 → copyparty-1.19.1}/PKG-INFO +22 -8
- {copyparty-1.18.10 → copyparty-1.19.1}/README.md +21 -7
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/__main__.py +82 -68
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/__version__.py +3 -3
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/authsrv.py +23 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/cfg.py +2 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/ftpd.py +7 -2
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/httpcli.py +76 -23
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/mdns.py +2 -1
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/multicast.py +1 -5
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/pwhash.py +4 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/svchub.py +2 -11
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/tcpsrv.py +14 -3
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/tftpd.py +1 -1
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/up2k.py +3 -2
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/util.py +11 -0
- copyparty-1.19.1/copyparty/web/browser.css.gz +0 -0
- copyparty-1.19.1/copyparty/web/browser.js.gz +0 -0
- copyparty-1.19.1/copyparty/web/md2.js.gz +0 -0
- copyparty-1.19.1/copyparty/web/mde.js.gz +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/web/rups.html +1 -8
- copyparty-1.19.1/copyparty/web/rups.js.gz +0 -0
- copyparty-1.19.1/copyparty/web/shares.js.gz +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/web/splash.html +6 -1
- copyparty-1.19.1/copyparty/web/splash.js.gz +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/web/svcs.html +1 -0
- copyparty-1.19.1/copyparty/web/svcs.js.gz +0 -0
- copyparty-1.19.1/copyparty/web/up2k.js.gz +0 -0
- copyparty-1.19.1/copyparty/web/util.js.gz +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty.egg-info/PKG-INFO +22 -8
- copyparty-1.18.10/copyparty/web/browser.css.gz +0 -0
- copyparty-1.18.10/copyparty/web/browser.js.gz +0 -0
- copyparty-1.18.10/copyparty/web/md2.js.gz +0 -0
- copyparty-1.18.10/copyparty/web/mde.js.gz +0 -0
- copyparty-1.18.10/copyparty/web/rups.js.gz +0 -0
- copyparty-1.18.10/copyparty/web/shares.js.gz +0 -0
- copyparty-1.18.10/copyparty/web/splash.js.gz +0 -0
- copyparty-1.18.10/copyparty/web/svcs.js.gz +0 -0
- copyparty-1.18.10/copyparty/web/up2k.js.gz +0 -0
- copyparty-1.18.10/copyparty/web/util.js.gz +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/LICENSE +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/__init__.py +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/bos/__init__.py +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/bos/bos.py +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/bos/path.py +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/broker_mp.py +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/broker_mpw.py +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/broker_thr.py +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/broker_util.py +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/cert.py +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/dxml.py +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/fsutil.py +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/httpconn.py +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/httpsrv.py +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/ico.py +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/metrics.py +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/mtag.py +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/res/COPYING.txt +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/res/__init__.py +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/res/insecure.pem +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/smbd.py +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/ssdp.py +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/star.py +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/stolen/__init__.py +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/stolen/dnslib/__init__.py +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/stolen/dnslib/bimap.py +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/stolen/dnslib/bit.py +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/stolen/dnslib/buffer.py +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/stolen/dnslib/dns.py +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/stolen/dnslib/label.py +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/stolen/dnslib/lex.py +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/stolen/dnslib/ranges.py +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/stolen/ifaddr/__init__.py +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/stolen/ifaddr/_posix.py +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/stolen/ifaddr/_shared.py +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/stolen/ifaddr/_win32.py +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/stolen/qrcodegen.py +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/stolen/surrogateescape.py +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/sutil.py +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/szip.py +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/th_cli.py +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/th_srv.py +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/u2idx.py +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/web/a/__init__.py +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/web/a/partyfuse.py +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/web/a/u2c.py +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/web/a/webdav-cfg.bat +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/web/baguettebox.js.gz +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/web/browser.html +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/web/browser2.html +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/web/cf.html +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/web/dbg-audio.js.gz +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/web/deps/__init__.py +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/web/deps/busy.mp3.gz +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/web/deps/easymde.css.gz +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/web/deps/easymde.js.gz +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/web/deps/fuse.py +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/web/deps/marked.js.gz +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/web/deps/mini-fa.css.gz +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/web/deps/mini-fa.woff +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/web/deps/prism.css.gz +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/web/deps/prism.js.gz +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/web/deps/prismd.css.gz +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/web/deps/scp.woff2 +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/web/deps/sha512.ac.js.gz +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/web/deps/sha512.hw.js.gz +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/web/idp.html +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/web/md.css.gz +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/web/md.html +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/web/md.js.gz +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/web/md2.css.gz +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/web/mde.css.gz +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/web/mde.html +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/web/msg.css.gz +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/web/msg.html +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/web/rups.css.gz +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/web/shares.css.gz +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/web/shares.html +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/web/splash.css.gz +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/web/ui.css.gz +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty/web/w.hash.js.gz +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty.egg-info/SOURCES.txt +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty.egg-info/dependency_links.txt +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty.egg-info/entry_points.txt +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty.egg-info/requires.txt +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/copyparty.egg-info/top_level.txt +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/pyproject.toml +0 -0
- {copyparty-1.18.10 → copyparty-1.19.1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: copyparty
|
3
|
-
Version: 1.
|
3
|
+
Version: 1.19.1
|
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
|
@@ -502,6 +502,7 @@ upgrade notes
|
|
502
502
|
|
503
503
|
* can I link someone to a password-protected volume/file by including the password in the URL?
|
504
504
|
* yes, by adding `?pw=hunter2` to the end; replace `?` with `&` if there are parameters in the URL already, meaning it contains a `?` near the end
|
505
|
+
* if you have enabled `--usernames` then do `?pw=username:password` instead
|
505
506
|
|
506
507
|
* how do I stop `.hist` folders from appearing everywhere on my HDD?
|
507
508
|
* by default, a `.hist` folder is created inside each volume for the filesystem index, thumbnails, audio transcodes, and markdown document history. Use the `--hist` global-option or the `hist` volflag to move it somewhere else; see [database location](#database-location)
|
@@ -1081,6 +1082,7 @@ a feed example: https://cd.ocv.me/a/d2/d22/?rss&fext=mp3
|
|
1081
1082
|
url parameters:
|
1082
1083
|
|
1083
1084
|
* `pw=hunter2` for password auth
|
1085
|
+
* if you enabled `--usernames` then do `pw=username:password` instead
|
1084
1086
|
* `recursive` to also include subfolders
|
1085
1087
|
* `title=foo` changes the feed title (default: folder name)
|
1086
1088
|
* `fext=mp3,opus` only include mp3 and opus files (default: all)
|
@@ -1294,7 +1296,7 @@ using arguments or config files, or a mix of both:
|
|
1294
1296
|
|
1295
1297
|
**NB:** as humongous as this readme is, there is also a lot of undocumented features. Run copyparty with `--help` to see all available global options; all of those can be used in the `[global]` section of config files, and everything listed in `--help-flags` can be used in volumes as volflags.
|
1296
1298
|
* if running in docker/podman, try this: `docker run --rm -it copyparty/ac --help`
|
1297
|
-
* or see this
|
1299
|
+
* or see this: https://ocv.me/copyparty/helptext.html
|
1298
1300
|
* or if you prefer plaintext, https://ocv.me/copyparty/helptext.txt
|
1299
1301
|
|
1300
1302
|
|
@@ -1366,6 +1368,7 @@ an FTP server can be started using `--ftp 3921`, and/or `--ftps` for explicit T
|
|
1366
1368
|
* if you enable both `ftp` and `ftps`, the port-range will be divided in half
|
1367
1369
|
* some older software (filezilla on debian-stable) cannot passive-mode with TLS
|
1368
1370
|
* login with any username + your password, or put your password in the username field
|
1371
|
+
* unless you enabled `--usernames`
|
1369
1372
|
|
1370
1373
|
some recommended FTP / FTPS clients; `wark` = example password:
|
1371
1374
|
* https://winscp.net/eng/download.php
|
@@ -1383,6 +1386,7 @@ click the [connect](http://127.0.0.1:3923/?hc) button in the control-panel to se
|
|
1383
1386
|
|
1384
1387
|
general usage:
|
1385
1388
|
* login with any username + your password, or put your password in the username field (password field can be empty/whatever)
|
1389
|
+
* unless you enabled `--usernames`
|
1386
1390
|
|
1387
1391
|
on macos, connect from finder:
|
1388
1392
|
* [Go] -> [Connect to Server...] -> http://192.168.123.1:3923/
|
@@ -1398,6 +1402,7 @@ using the GUI (winXP or later):
|
|
1398
1402
|
* rightclick [my computer] -> [map network drive] -> Folder: `http://192.168.123.1:3923/`
|
1399
1403
|
* on winXP only, click the `Sign up for online storage` hyperlink instead and put the URL there
|
1400
1404
|
* providing your password as the username is recommended; the password field can be anything or empty
|
1405
|
+
* unless you enabled `--usernames`
|
1401
1406
|
|
1402
1407
|
the webdav client that's built into windows has the following list of bugs; you can avoid all of these by connecting with rclone instead:
|
1403
1408
|
* 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
|
@@ -1455,6 +1460,7 @@ some **BIG WARNINGS** specific to SMB/CIFS, in decreasing importance:
|
|
1455
1460
|
* the smb backend is not fully integrated with vfs, meaning there could be security issues (path traversal). Please use `--smb-port` (see below) and [prisonparty](./bin/prisonparty.sh) or [bubbleparty](./bin/bubbleparty.sh)
|
1456
1461
|
* account passwords work per-volume as expected, and so does account permissions (read/write/move/delete), but `--smbw` must be given to allow write-access from smb
|
1457
1462
|
* [shadowing](#shadowing) probably works as expected but no guarantees
|
1463
|
+
* not compatible with pw-hashing or `--usernames`
|
1458
1464
|
|
1459
1465
|
and some minor issues,
|
1460
1466
|
* clients only see the first ~400 files in big folders;
|
@@ -2123,7 +2129,11 @@ you can either:
|
|
2123
2129
|
* 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
|
2124
2130
|
* 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
|
2125
2131
|
|
2126
|
-
when running behind a reverse-proxy (this includes services like cloudflare), it is important to configure real-ip correctly, as many features rely on knowing the client's IP.
|
2132
|
+
when running behind a reverse-proxy (this includes services like cloudflare), it is important to configure real-ip correctly, as many features rely on knowing the client's IP. The best/safest approach is to configure your reverse-proxy so it gives copyparty a header which only contains the client's true/real IP-address, and then setting `--xff-hdr theHeaderName --rproxy 1` but alternatively, if you want/need to let copyparty handle this, look out for red and yellow log messages which explain how to do that. Basically, the log will say this:
|
2133
|
+
|
2134
|
+
> set `--xff-hdr` to the name of the http-header to read the IP from (usually `x-forwarded-for`, but cloudflare uses `cf-connecting-ip`), and then `--xff-src` to the IP of the reverse-proxy so copyparty will trust the xff-hdr. You will also need to configure `--rproxy` to `1` if the header only contains one IP (the correct one) or to a *negative value* if it contains multiple; `-1` being the rightmost and most trusted IP (the nearest proxy, so usually not the correct one), `-2` being the second-closest hop, and so on
|
2135
|
+
|
2136
|
+
Note that `--rp-loc` in particular will not work at all unless you configure the above correctly
|
2127
2137
|
|
2128
2138
|
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
|
2129
2139
|
* **warning:** nginx-QUIC (HTTP/3) is still experimental and can make uploads much slower, so HTTP/1.1 is recommended for now
|
@@ -2342,11 +2352,9 @@ if your distro/OS is not mentioned below, there might be some hints in the [«on
|
|
2342
2352
|
|
2343
2353
|
`pacman -S copyparty` (in [arch linux extra](https://archlinux.org/packages/extra/any/copyparty/))
|
2344
2354
|
|
2345
|
-
it comes with a [systemd service](./contrib/
|
2346
|
-
|
2347
|
-
after installing it, you may want to `cp /usr/lib/systemd/system/copyparty.service /etc/systemd/system/` and then `vim /etc/systemd/system/copyparty.service` to change what user/group it is running as (you only need to do this once)
|
2355
|
+
it comes with a [systemd service](./contrib/systemd/copyparty@.service) as well as a [user service](./contrib/systemd/copyparty-user.service), and expects to find a [config file](./contrib/systemd/copyparty.example.conf) in `/etc/copyparty/copyparty.conf` or `~/.config/copyparty/copyparty.conf`
|
2348
2356
|
|
2349
|
-
|
2357
|
+
after installing, start either the system service or the user service and navigate to http://127.0.0.1:3923 for further instructions (unless you already edited the config files, in which case you are good to go, probably)
|
2350
2358
|
|
2351
2359
|
|
2352
2360
|
## fedora package
|
@@ -2569,6 +2577,8 @@ you can provide passwords using header `PW: hunter2`, cookie `cppwd=hunter2`, ur
|
|
2569
2577
|
|
2570
2578
|
> for basic-authentication, all of the following are accepted: `password` / `whatever:password` / `password:whatever` (the username is ignored)
|
2571
2579
|
|
2580
|
+
* unless you've enabled `--usernames`, then it's `PW: usr:pwd`, cookie `cppwd=usr:pwd`, url-param `?pw=usr:pwd`
|
2581
|
+
|
2572
2582
|
NOTE: curl will not send the original filename if you use `-T` combined with url-params! Also, make sure to always leave a trailing slash in URLs unless you want to override the filename
|
2573
2583
|
|
2574
2584
|
|
@@ -2680,7 +2690,7 @@ there is a [discord server](https://discord.gg/25J8CdTT6G) with an `@everyone`
|
|
2680
2690
|
|
2681
2691
|
some notes on hardening
|
2682
2692
|
|
2683
|
-
* set `--rproxy 0` if your copyparty is directly facing the internet (not through a reverse-proxy)
|
2693
|
+
* set `--rproxy 0` *if and only if* your copyparty is directly facing the internet (not through a reverse-proxy)
|
2684
2694
|
* cors doesn't work right otherwise
|
2685
2695
|
* if you allow anonymous uploads or otherwise don't trust the contents of a volume, you can prevent XSS with volflag `nohtml`
|
2686
2696
|
* this returns html documents as plaintext, and also disables markdown rendering
|
@@ -2784,6 +2794,8 @@ when generating hashes using `--ah-cli` for docker or systemd services, make sur
|
|
2784
2794
|
* inspecting the generated salt using `--show-ah-salt` in copyparty service configuration
|
2785
2795
|
* setting the same `--ah-salt` in both environments
|
2786
2796
|
|
2797
|
+
> ⚠️ if you have enabled `--usernames` then provide the password as `username:password` when hashing it, for example `ed:hunter2`
|
2798
|
+
|
2787
2799
|
|
2788
2800
|
## https
|
2789
2801
|
|
@@ -2901,6 +2913,8 @@ these are standalone programs and will never be imported / evaluated by copypart
|
|
2901
2913
|
|
2902
2914
|
the self-contained "binary" (recommended!) [copyparty-sfx.py](https://github.com/9001/copyparty/releases/latest/download/copyparty-sfx.py) will unpack itself and run copyparty, assuming you have python installed of course
|
2903
2915
|
|
2916
|
+
if you only need english, [copyparty-en.py](https://github.com/9001/copyparty/releases/latest/download/copyparty-en.py) is the same thing but smaller
|
2917
|
+
|
2904
2918
|
you can reduce the sfx size by repacking it; see [./docs/devnotes.md#sfx-repack](./docs/devnotes.md#sfx-repack)
|
2905
2919
|
|
2906
2920
|
|
@@ -437,6 +437,7 @@ upgrade notes
|
|
437
437
|
|
438
438
|
* can I link someone to a password-protected volume/file by including the password in the URL?
|
439
439
|
* yes, by adding `?pw=hunter2` to the end; replace `?` with `&` if there are parameters in the URL already, meaning it contains a `?` near the end
|
440
|
+
* if you have enabled `--usernames` then do `?pw=username:password` instead
|
440
441
|
|
441
442
|
* how do I stop `.hist` folders from appearing everywhere on my HDD?
|
442
443
|
* by default, a `.hist` folder is created inside each volume for the filesystem index, thumbnails, audio transcodes, and markdown document history. Use the `--hist` global-option or the `hist` volflag to move it somewhere else; see [database location](#database-location)
|
@@ -1016,6 +1017,7 @@ a feed example: https://cd.ocv.me/a/d2/d22/?rss&fext=mp3
|
|
1016
1017
|
url parameters:
|
1017
1018
|
|
1018
1019
|
* `pw=hunter2` for password auth
|
1020
|
+
* if you enabled `--usernames` then do `pw=username:password` instead
|
1019
1021
|
* `recursive` to also include subfolders
|
1020
1022
|
* `title=foo` changes the feed title (default: folder name)
|
1021
1023
|
* `fext=mp3,opus` only include mp3 and opus files (default: all)
|
@@ -1229,7 +1231,7 @@ using arguments or config files, or a mix of both:
|
|
1229
1231
|
|
1230
1232
|
**NB:** as humongous as this readme is, there is also a lot of undocumented features. Run copyparty with `--help` to see all available global options; all of those can be used in the `[global]` section of config files, and everything listed in `--help-flags` can be used in volumes as volflags.
|
1231
1233
|
* if running in docker/podman, try this: `docker run --rm -it copyparty/ac --help`
|
1232
|
-
* or see this
|
1234
|
+
* or see this: https://ocv.me/copyparty/helptext.html
|
1233
1235
|
* or if you prefer plaintext, https://ocv.me/copyparty/helptext.txt
|
1234
1236
|
|
1235
1237
|
|
@@ -1301,6 +1303,7 @@ an FTP server can be started using `--ftp 3921`, and/or `--ftps` for explicit T
|
|
1301
1303
|
* if you enable both `ftp` and `ftps`, the port-range will be divided in half
|
1302
1304
|
* some older software (filezilla on debian-stable) cannot passive-mode with TLS
|
1303
1305
|
* login with any username + your password, or put your password in the username field
|
1306
|
+
* unless you enabled `--usernames`
|
1304
1307
|
|
1305
1308
|
some recommended FTP / FTPS clients; `wark` = example password:
|
1306
1309
|
* https://winscp.net/eng/download.php
|
@@ -1318,6 +1321,7 @@ click the [connect](http://127.0.0.1:3923/?hc) button in the control-panel to se
|
|
1318
1321
|
|
1319
1322
|
general usage:
|
1320
1323
|
* login with any username + your password, or put your password in the username field (password field can be empty/whatever)
|
1324
|
+
* unless you enabled `--usernames`
|
1321
1325
|
|
1322
1326
|
on macos, connect from finder:
|
1323
1327
|
* [Go] -> [Connect to Server...] -> http://192.168.123.1:3923/
|
@@ -1333,6 +1337,7 @@ using the GUI (winXP or later):
|
|
1333
1337
|
* rightclick [my computer] -> [map network drive] -> Folder: `http://192.168.123.1:3923/`
|
1334
1338
|
* on winXP only, click the `Sign up for online storage` hyperlink instead and put the URL there
|
1335
1339
|
* providing your password as the username is recommended; the password field can be anything or empty
|
1340
|
+
* unless you enabled `--usernames`
|
1336
1341
|
|
1337
1342
|
the webdav client that's built into windows has the following list of bugs; you can avoid all of these by connecting with rclone instead:
|
1338
1343
|
* 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
|
@@ -1390,6 +1395,7 @@ some **BIG WARNINGS** specific to SMB/CIFS, in decreasing importance:
|
|
1390
1395
|
* the smb backend is not fully integrated with vfs, meaning there could be security issues (path traversal). Please use `--smb-port` (see below) and [prisonparty](./bin/prisonparty.sh) or [bubbleparty](./bin/bubbleparty.sh)
|
1391
1396
|
* account passwords work per-volume as expected, and so does account permissions (read/write/move/delete), but `--smbw` must be given to allow write-access from smb
|
1392
1397
|
* [shadowing](#shadowing) probably works as expected but no guarantees
|
1398
|
+
* not compatible with pw-hashing or `--usernames`
|
1393
1399
|
|
1394
1400
|
and some minor issues,
|
1395
1401
|
* clients only see the first ~400 files in big folders;
|
@@ -2058,7 +2064,11 @@ you can either:
|
|
2058
2064
|
* 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
|
2059
2065
|
* 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
|
2060
2066
|
|
2061
|
-
when running behind a reverse-proxy (this includes services like cloudflare), it is important to configure real-ip correctly, as many features rely on knowing the client's IP.
|
2067
|
+
when running behind a reverse-proxy (this includes services like cloudflare), it is important to configure real-ip correctly, as many features rely on knowing the client's IP. The best/safest approach is to configure your reverse-proxy so it gives copyparty a header which only contains the client's true/real IP-address, and then setting `--xff-hdr theHeaderName --rproxy 1` but alternatively, if you want/need to let copyparty handle this, look out for red and yellow log messages which explain how to do that. Basically, the log will say this:
|
2068
|
+
|
2069
|
+
> set `--xff-hdr` to the name of the http-header to read the IP from (usually `x-forwarded-for`, but cloudflare uses `cf-connecting-ip`), and then `--xff-src` to the IP of the reverse-proxy so copyparty will trust the xff-hdr. You will also need to configure `--rproxy` to `1` if the header only contains one IP (the correct one) or to a *negative value* if it contains multiple; `-1` being the rightmost and most trusted IP (the nearest proxy, so usually not the correct one), `-2` being the second-closest hop, and so on
|
2070
|
+
|
2071
|
+
Note that `--rp-loc` in particular will not work at all unless you configure the above correctly
|
2062
2072
|
|
2063
2073
|
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
|
2064
2074
|
* **warning:** nginx-QUIC (HTTP/3) is still experimental and can make uploads much slower, so HTTP/1.1 is recommended for now
|
@@ -2277,11 +2287,9 @@ if your distro/OS is not mentioned below, there might be some hints in the [«on
|
|
2277
2287
|
|
2278
2288
|
`pacman -S copyparty` (in [arch linux extra](https://archlinux.org/packages/extra/any/copyparty/))
|
2279
2289
|
|
2280
|
-
it comes with a [systemd service](./contrib/
|
2281
|
-
|
2282
|
-
after installing it, you may want to `cp /usr/lib/systemd/system/copyparty.service /etc/systemd/system/` and then `vim /etc/systemd/system/copyparty.service` to change what user/group it is running as (you only need to do this once)
|
2290
|
+
it comes with a [systemd service](./contrib/systemd/copyparty@.service) as well as a [user service](./contrib/systemd/copyparty-user.service), and expects to find a [config file](./contrib/systemd/copyparty.example.conf) in `/etc/copyparty/copyparty.conf` or `~/.config/copyparty/copyparty.conf`
|
2283
2291
|
|
2284
|
-
|
2292
|
+
after installing, start either the system service or the user service and navigate to http://127.0.0.1:3923 for further instructions (unless you already edited the config files, in which case you are good to go, probably)
|
2285
2293
|
|
2286
2294
|
|
2287
2295
|
## fedora package
|
@@ -2504,6 +2512,8 @@ you can provide passwords using header `PW: hunter2`, cookie `cppwd=hunter2`, ur
|
|
2504
2512
|
|
2505
2513
|
> for basic-authentication, all of the following are accepted: `password` / `whatever:password` / `password:whatever` (the username is ignored)
|
2506
2514
|
|
2515
|
+
* unless you've enabled `--usernames`, then it's `PW: usr:pwd`, cookie `cppwd=usr:pwd`, url-param `?pw=usr:pwd`
|
2516
|
+
|
2507
2517
|
NOTE: curl will not send the original filename if you use `-T` combined with url-params! Also, make sure to always leave a trailing slash in URLs unless you want to override the filename
|
2508
2518
|
|
2509
2519
|
|
@@ -2615,7 +2625,7 @@ there is a [discord server](https://discord.gg/25J8CdTT6G) with an `@everyone`
|
|
2615
2625
|
|
2616
2626
|
some notes on hardening
|
2617
2627
|
|
2618
|
-
* set `--rproxy 0` if your copyparty is directly facing the internet (not through a reverse-proxy)
|
2628
|
+
* set `--rproxy 0` *if and only if* your copyparty is directly facing the internet (not through a reverse-proxy)
|
2619
2629
|
* cors doesn't work right otherwise
|
2620
2630
|
* if you allow anonymous uploads or otherwise don't trust the contents of a volume, you can prevent XSS with volflag `nohtml`
|
2621
2631
|
* this returns html documents as plaintext, and also disables markdown rendering
|
@@ -2719,6 +2729,8 @@ when generating hashes using `--ah-cli` for docker or systemd services, make sur
|
|
2719
2729
|
* inspecting the generated salt using `--show-ah-salt` in copyparty service configuration
|
2720
2730
|
* setting the same `--ah-salt` in both environments
|
2721
2731
|
|
2732
|
+
> ⚠️ if you have enabled `--usernames` then provide the password as `username:password` when hashing it, for example `ed:hunter2`
|
2733
|
+
|
2722
2734
|
|
2723
2735
|
## https
|
2724
2736
|
|
@@ -2836,6 +2848,8 @@ these are standalone programs and will never be imported / evaluated by copypart
|
|
2836
2848
|
|
2837
2849
|
the self-contained "binary" (recommended!) [copyparty-sfx.py](https://github.com/9001/copyparty/releases/latest/download/copyparty-sfx.py) will unpack itself and run copyparty, assuming you have python installed of course
|
2838
2850
|
|
2851
|
+
if you only need english, [copyparty-en.py](https://github.com/9001/copyparty/releases/latest/download/copyparty-en.py) is the same thing but smaller
|
2852
|
+
|
2839
2853
|
you can reduce the sfx size by repacking it; see [./docs/devnotes.md#sfx-repack](./docs/devnotes.md#sfx-repack)
|
2840
2854
|
|
2841
2855
|
|