From e67b695b23ab4fb0e799976b4941bd248515b57d Mon Sep 17 00:00:00 2001 From: ed Date: Thu, 2 Feb 2023 21:22:51 +0000 Subject: [PATCH] show filekeys in recent-uploads ui --- copyparty/up2k.py | 20 +++++++++++++++++++- copyparty/web/browser.js | 10 +++++----- copyparty/web/up2k.js | 26 ++++++++++++++++++-------- 3 files changed, 42 insertions(+), 14 deletions(-) diff --git a/copyparty/up2k.py b/copyparty/up2k.py index 97fcaf52..3eff1ad9 100644 --- a/copyparty/up2k.py +++ b/copyparty/up2k.py @@ -38,6 +38,8 @@ from .util import ( db_ex_chk, djoin, fsenc, + gen_filekey, + gen_filekey_dbg, hidedir, min_ex, quotep, @@ -159,6 +161,7 @@ class Up2k(object): Daemon(self._lastmodder, "up2k-lastmod") self.fstab = Fstab(self.log_func) + self.gen_fk = self._gen_fk if self.args.log_fk else gen_filekey if self.args.hash_mt < 2: self.mth: Optional[MTHash] = None @@ -214,6 +217,9 @@ class Up2k(object): self.log_func("up2k", msg, c) + def _gen_fk(self, salt: str, fspath: str, fsize: int, inode: int) -> str: + return gen_filekey_dbg(salt, fspath, fsize, inode, self.log, self.args.log_fk) + def _block(self, why: str) -> None: self.blocked = why self.log("uploads temporarily blocked due to " + why, 3) @@ -2257,7 +2263,7 @@ class Up2k(object): purl = "{}/{}".format(job["vtop"], job["prel"]).strip("/") purl = "/{}/".format(purl) if purl else "/" - return { + ret = { "name": job["name"], "purl": purl, "size": job["size"], @@ -2267,6 +2273,18 @@ class Up2k(object): "wark": wark, } + if ( + not ret["hash"] + and "fk" in vfs.flags + and (cj["user"] in vfs.axs.uread or cj["user"] in vfs.axs.upget) + ): + ap = absreal(os.path.join(job["ptop"], job["prel"], job["name"])) + ino = 0 if ANYWIN else bos.stat(ap).st_ino + fk = self.gen_fk(self.args.fk_salt, ap, job["size"], ino) + ret["fk"] = fk[: vfs.flags["fk"]] + + return ret + def _untaken(self, fdir: str, job: dict[str, Any], ts: float) -> str: fname = job["name"] ip = job["addr"] diff --git a/copyparty/web/browser.js b/copyparty/web/browser.js index 15b4447e..4fc97813 100644 --- a/copyparty/web/browser.js +++ b/copyparty/web/browser.js @@ -959,16 +959,16 @@ ebi('op_up2k').innerHTML = ( ' \n' + '
' + L.ul_par + '\n' + ' \n' + - ' \n' + - ' \n' + + ' \n' + + ' \n' + ' \n' + ' \n' + ' \n' + ' \n' + ' \n' + ' \n' + - ' \n' + - ' \n' + + ' \n' + + ' \n' + ' \n' + ' \n' + ' \n' + @@ -1077,7 +1077,7 @@ ebi('op_cfg').innerHTML = ( '
\n' + '

' + L.cl_uopts + '

\n' + '
\n' + - ' 🏃\n' + + ' 💭\n' + ' mt\n' + ' turbo\n' + ' date-chk\n' + diff --git a/copyparty/web/up2k.js b/copyparty/web/up2k.js index 6bc24a4f..51c3f029 100644 --- a/copyparty/web/up2k.js +++ b/copyparty/web/up2k.js @@ -1364,8 +1364,7 @@ function up2k_init(subtle) { if (uc.fsearch) entry.srch = 1; - - if (uc.fsearch && uc.rand) + else if (uc.rand) entry.rand = true; if (biggest_file < entry.size) @@ -2217,13 +2216,24 @@ function up2k_init(subtle) { t.sprs = response.sprs; - var rsp_purl = url_enc(response.purl); - if (rsp_purl !== t.purl || response.name !== t.name) { - // server renamed us (file exists / path restrictions) - console.log("server-rename [" + t.purl + "] [" + t.name + "] to [" + rsp_purl + "] [" + response.name + "]"); + var fk = response.fk, + rsp_purl = url_enc(response.purl), + rename = rsp_purl !== t.purl || response.name !== t.name; + + if (rename || fk) { + if (rename) + console.log("server-rename [" + t.purl + "] [" + t.name + "] to [" + rsp_purl + "] [" + response.name + "]"); + t.purl = rsp_purl; t.name = response.name; - pvis.seth(t.n, 0, linksplit(t.purl + uricom_enc(t.name)).join(' ')); + + var url = t.purl + uricom_enc(t.name); + if (fk) { + t.fk = fk; + url += '?k=' + fk; + } + + pvis.seth(t.n, 0, linksplit(url).join(' ')); } var chunksize = get_chunksize(t.size), @@ -2372,7 +2382,7 @@ function up2k_init(subtle) { }; if (t.srch) req.srch = 1; - if (t.rand) + else if (t.rand) req.rand = true; xhr.open('POST', t.purl, true);