fix dumb prisonparty bug

This commit is contained in:
ed 2022-07-22 20:49:35 +02:00
parent e0e3f6ac3e
commit 10430b347f
3 changed files with 13 additions and 7 deletions

View file

@ -11,13 +11,13 @@ sysdirs=( /bin /lib /lib32 /lib64 /sbin /usr )
help() { cat <<'EOF' help() { cat <<'EOF'
usage: usage:
./prisonparty.sh <ROOTDIR> <UID> <GID> [VOLDIR [VOLDIR...]] -- python3 copyparty-sfx.py [...]" ./prisonparty.sh <ROOTDIR> <UID> <GID> [VOLDIR [VOLDIR...]] -- python3 copyparty-sfx.py [...]
example: example:
./prisonparty.sh /var/lib/copyparty-jail 1000 1000 /mnt/nas/music -- python3 copyparty-sfx.py -v /mnt/nas/music::rwmd" ./prisonparty.sh /var/lib/copyparty-jail 1000 1000 /mnt/nas/music -- python3 copyparty-sfx.py -v /mnt/nas/music::rwmd
example for running straight from source (instead of using an sfx): example for running straight from source (instead of using an sfx):
PYTHONPATH=$PWD ./prisonparty.sh /var/lib/copyparty-jail 1000 1000 /mnt/nas/music -- python3 -um copyparty -v /mnt/nas/music::rwmd" PYTHONPATH=$PWD ./prisonparty.sh /var/lib/copyparty-jail 1000 1000 /mnt/nas/music -- python3 -um copyparty -v /mnt/nas/music::rwmd
note that if you have python modules installed as --user (such as bpm/key detectors), note that if you have python modules installed as --user (such as bpm/key detectors),
you should add /home/foo/.local as a VOLDIR you should add /home/foo/.local as a VOLDIR

View file

@ -31,6 +31,7 @@ from .util import (
ProgressPrinter, ProgressPrinter,
absreal, absreal,
atomic_move, atomic_move,
djoin,
fsenc, fsenc,
min_ex, min_ex,
quotep, quotep,
@ -1527,7 +1528,7 @@ class Up2k(object):
wark = self._get_wark(cj) wark = self._get_wark(cj)
now = time.time() now = time.time()
job = None job = None
pdir = os.path.join(cj["ptop"], cj["prel"]) pdir = djoin(cj["ptop"], cj["prel"])
try: try:
dev = bos.stat(pdir).st_dev dev = bos.stat(pdir).st_dev
except: except:
@ -1639,7 +1640,7 @@ class Up2k(object):
for k in ["ptop", "vtop", "prel"]: for k in ["ptop", "vtop", "prel"]:
job[k] = cj[k] job[k] = cj[k]
pdir = os.path.join(cj["ptop"], cj["prel"]) pdir = djoin(cj["ptop"], cj["prel"])
job["name"] = self._untaken(pdir, cj["name"], now, cj["addr"]) job["name"] = self._untaken(pdir, cj["name"], now, cj["addr"])
dst = os.path.join(job["ptop"], job["prel"], job["name"]) dst = os.path.join(job["ptop"], job["prel"], job["name"])
if not self.args.nw: if not self.args.nw:
@ -1655,7 +1656,7 @@ class Up2k(object):
if not job: if not job:
vfs = self.asrv.vfs.all_vols[cj["vtop"]] vfs = self.asrv.vfs.all_vols[cj["vtop"]]
if vfs.lim: if vfs.lim:
ap1 = os.path.join(cj["ptop"], cj["prel"]) ap1 = djoin(cj["ptop"], cj["prel"])
ap2, cj["prel"] = vfs.lim.all( ap2, cj["prel"] = vfs.lim.all(
cj["addr"], cj["prel"], cj["size"], ap1, reg cj["addr"], cj["prel"], cj["size"], ap1, reg
) )
@ -2413,7 +2414,7 @@ class Up2k(object):
return ret return ret
def _new_upload(self, job: dict[str, Any]) -> None: def _new_upload(self, job: dict[str, Any]) -> None:
pdir = os.path.join(job["ptop"], job["prel"]) pdir = djoin(job["ptop"], job["prel"])
if not job["size"] and bos.path.isfile(os.path.join(pdir, job["name"])): if not job["size"] and bos.path.isfile(os.path.join(pdir, job["name"])):
return return

View file

@ -989,6 +989,11 @@ def s2hms(s: float, optional_h: bool = False) -> str:
return "{}:{:02}:{:02}".format(h, m, s) return "{}:{:02}:{:02}".format(h, m, s)
def djoin(*paths: str) -> str:
"""joins without adding a trailing slash on blank args"""
return os.path.join(*[x for x in paths if x])
def uncyg(path: str) -> str: def uncyg(path: str) -> str:
if len(path) < 2 or not path.startswith("/"): if len(path) < 2 or not path.startswith("/"):
return path return path