up2k: add option to replace existing file

This commit is contained in:
ed 2022-12-10 19:22:16 +00:00
parent 7704b9c8a2
commit 56b73dcc8a
3 changed files with 17 additions and 10 deletions

View file

@ -1540,11 +1540,6 @@ class HttpCli(object):
if "delete" in self.uparam: if "delete" in self.uparam:
return self.handle_rm(body) return self.handle_rm(body)
# up2k-php compat
for k in "chunkpit.php", "handshake.php":
if self.vpath.endswith(k):
self.vpath = self.vpath[: -len(k)]
name = undot(body["name"]) name = undot(body["name"])
if "/" in name: if "/" in name:
raise Pebkac(400, "your client is old; press CTRL-SHIFT-R and try again") raise Pebkac(400, "your client is old; press CTRL-SHIFT-R and try again")
@ -1558,6 +1553,9 @@ class HttpCli(object):
body["addr"] = self.ip body["addr"] = self.ip
body["vcfg"] = dbv.flags body["vcfg"] = dbv.flags
if not self.can_delete:
body.pop("replace")
if rem: if rem:
dst = vfs.canonical(rem) dst = vfs.canonical(rem)
try: try:

View file

@ -2116,7 +2116,7 @@ class Up2k(object):
job[k] = cj[k] job[k] = cj[k]
pdir = djoin(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, now)
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:
bos.unlink(dst) # TODO ed pls bos.unlink(dst) # TODO ed pls
@ -2163,7 +2163,7 @@ class Up2k(object):
]: ]:
job[k] = cj[k] job[k] = cj[k]
for k in ["life"]: for k in ["life", "replace"]:
if k in cj: if k in cj:
job[k] = cj[k] job[k] = cj[k]
@ -2195,10 +2195,18 @@ class Up2k(object):
"wark": wark, "wark": wark,
} }
def _untaken(self, fdir: str, fname: str, ts: float, ip: str) -> str: def _untaken(self, fdir: str, job: dict[str, Any], ts: float) -> str:
fname = job["name"]
ip = job["addr"]
if self.args.nw: if self.args.nw:
return fname return fname
fp = os.path.join(fdir, fname)
if job.get("replace") and bos.path.exists(fp):
self.log("replacing existing file at {}".format(fp))
bos.unlink(fp)
if self.args.plain_ip: if self.args.plain_ip:
dip = ip.replace(":", ".") dip = ip.replace(":", ".")
else: else:
@ -2973,7 +2981,7 @@ class Up2k(object):
return return
self.registry[job["ptop"]][job["wark"]] = job self.registry[job["ptop"]][job["wark"]] = job
job["name"] = self._untaken(pdir, job["name"], job["t0"], job["addr"]) job["name"] = self._untaken(pdir, job, job["t0"])
# if len(job["name"].split(".")) > 8: # if len(job["name"].split(".")) > 8:
# raise Exception("aaa") # raise Exception("aaa")

View file

@ -98,7 +98,7 @@ class Cfg(Namespace):
def __init__(self, a=None, v=None, c=None): def __init__(self, a=None, v=None, c=None):
ka = {} ka = {}
ex = "daw dav_inf dav_mac e2d e2ds e2dsa e2t e2ts e2tsr e2v e2vu e2vp ed emp force_js ihead magic nid nih no_acode no_athumb no_dav no_del no_dupe no_logues no_mv no_readme no_robots no_scandir no_sync no_thumb no_vthumb no_wal no_zip nw xdev xlink xvol" ex = "daw dav_inf dav_mac e2d e2ds e2dsa e2t e2ts e2tsr e2v e2vu e2vp ed emp force_js ihead magic nid nih no_acode no_athumb no_dav no_del no_dupe no_logues no_mv no_readme no_robots no_scandir no_thumb no_vthumb no_zip nw xdev xlink xvol"
ka.update(**{k: False for k in ex.split()}) ka.update(**{k: False for k in ex.split()})
ex = "dotpart no_rescan no_sendfile no_voldump plain_ip" ex = "dotpart no_rescan no_sendfile no_voldump plain_ip"
@ -118,6 +118,7 @@ class Cfg(Namespace):
v=v or [], v=v or [],
c=c, c=c,
E=E, E=E,
dbd="wal",
s_wr_sz=512 * 1024, s_wr_sz=512 * 1024,
unpost=600, unpost=600,
u2sort="s", u2sort="s",