mirror of
https://github.com/9001/copyparty.git
synced 2025-08-17 09:02:15 -06:00
v1.8.6
This commit is contained in:
parent
0778da6c4d
commit
9eaa9904e0
|
@ -1,8 +1,8 @@
|
||||||
# coding: utf-8
|
# coding: utf-8
|
||||||
|
|
||||||
VERSION = (1, 8, 4)
|
VERSION = (1, 8, 6)
|
||||||
CODENAME = "argon"
|
CODENAME = "argon"
|
||||||
BUILD_DT = (2023, 7, 18)
|
BUILD_DT = (2023, 7, 21)
|
||||||
|
|
||||||
S_VERSION = ".".join(map(str, VERSION))
|
S_VERSION = ".".join(map(str, VERSION))
|
||||||
S_BUILD_DT = "{0:04d}-{1:02d}-{2:02d}".format(*BUILD_DT)
|
S_BUILD_DT = "{0:04d}-{1:02d}-{2:02d}".format(*BUILD_DT)
|
||||||
|
|
|
@ -439,7 +439,7 @@ class HttpCli(object):
|
||||||
self.can_upget,
|
self.can_upget,
|
||||||
self.can_admin,
|
self.can_admin,
|
||||||
) = (
|
) = (
|
||||||
avn.can_access("", self.uname) if avn else [False] * 6
|
avn.can_access("", self.uname) if avn else [False] * 7
|
||||||
)
|
)
|
||||||
self.avn = avn
|
self.avn = avn
|
||||||
self.vn = vn
|
self.vn = vn
|
||||||
|
|
|
@ -1,3 +1,38 @@
|
||||||
|
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
|
||||||
|
# 2023-0718-0746 `v1.8.4` range-select v2
|
||||||
|
|
||||||
|
**IMPORTANT:** `v1.8.2` (previous release) fixed [CVE-2023-37474](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-37474) ; please see the [1.8.2 release notes](https://github.com/9001/copyparty/releases/tag/v1.8.2) (all serverlogs reviewed so far showed no signs of exploitation)
|
||||||
|
|
||||||
|
* read-only demo server at https://a.ocv.me/pub/demo/
|
||||||
|
* [docker image](https://github.com/9001/copyparty/tree/hovudstraum/scripts/docker) ╱ [similar software](https://github.com/9001/copyparty/blob/hovudstraum/docs/versus.md) ╱ [client testbed](https://cd.ocv.me/b/)
|
||||||
|
|
||||||
|
## new features
|
||||||
|
* #47 file selection by shift-clicking
|
||||||
|
* in list-view: click a table row to select it, then shift-click another to select all files in-between
|
||||||
|
* in grid-view: either enable the `multiselect` button (mainly for phones/tablets), or the new `sel` button in the `[⚙️] settings` tab (better for mouse+keyboard), then shift-click two files
|
||||||
|
* volflag `fat32` avoids a bug in android's sdcardfs causing excessive reindexing on startup if any files were modified on the sdcard since last reboot
|
||||||
|
|
||||||
|
## bugfixes
|
||||||
|
* minor corrections to the new features from #45
|
||||||
|
* uploader IPs are now visible for `a`dmin accounts in `d2t` volumes as well
|
||||||
|
|
||||||
|
## other changes
|
||||||
|
* the admin-panel is only accessible for accounts which have the `a` (admin) permission-level in one or more volumes; so instead of giving your user `rwmd` access, you'll want `rwmda` instead:
|
||||||
|
```bash
|
||||||
|
python3 copyparty-sfx.py -a joe:hunter2 -v /mnt/nas/pub:pub:rwmda,joe
|
||||||
|
```
|
||||||
|
or in a settings file,
|
||||||
|
```yaml
|
||||||
|
[/pub]
|
||||||
|
/mnt/nas/pub
|
||||||
|
accs:
|
||||||
|
rwmda: joe
|
||||||
|
```
|
||||||
|
* until now, `rw` was enough, however most readwrite users don't need access to those features
|
||||||
|
* grabbing a stacktrace with `?stack` is permitted for both `rw` and `a`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
|
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
|
||||||
# 2023-0714-1558 `v1.8.2` URGENT: fix path traversal vulnerability
|
# 2023-0714-1558 `v1.8.2` URGENT: fix path traversal vulnerability
|
||||||
|
|
||||||
|
|
|
@ -392,9 +392,9 @@ find -name '*.pyc' -delete
|
||||||
find -name __pycache__ -delete
|
find -name __pycache__ -delete
|
||||||
find -name py.typed -delete
|
find -name py.typed -delete
|
||||||
|
|
||||||
# especially prevent osx from leaking your lan ip (wtf apple)
|
# especially prevent macos/osx from leaking your lan ip (wtf apple)
|
||||||
find -type f \( -name .DS_Store -or -name ._.DS_Store \) -delete
|
find -type f \( -name .DS_Store -or -name ._.DS_Store \) -delete
|
||||||
find -type f -name ._\* | while IFS= read -r f; do cmp <(printf '\x00\x05\x16') <(head -c 3 -- "$f") && rm -f -- "$f"; done
|
find -type f -name ._\* | while IFS= read -r f; do cmp <(printf '\x00\x05\x16') <(head -c 3 -- "$f") && rm -fv -- "$f"; done
|
||||||
|
|
||||||
rm -f copyparty/web/deps/*.full.* copyparty/web/dbg-* copyparty/web/Makefile
|
rm -f copyparty/web/deps/*.full.* copyparty/web/dbg-* copyparty/web/Makefile
|
||||||
|
|
||||||
|
|
|
@ -69,8 +69,13 @@ def uncomment(fpath):
|
||||||
def main():
|
def main():
|
||||||
print("uncommenting", end="", flush=True)
|
print("uncommenting", end="", flush=True)
|
||||||
try:
|
try:
|
||||||
|
if sys.argv[1] == "1":
|
||||||
|
sys.argv.remove("1")
|
||||||
|
raise Exception("disabled")
|
||||||
|
|
||||||
import multiprocessing as mp
|
import multiprocessing as mp
|
||||||
|
|
||||||
|
mp.set_start_method("spawn", True)
|
||||||
with mp.Pool(os.cpu_count()) as pool:
|
with mp.Pool(os.cpu_count()) as pool:
|
||||||
pool.map(uncomment, sys.argv[1:])
|
pool.map(uncomment, sys.argv[1:])
|
||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
|
|
Loading…
Reference in a new issue