mirror of
https://github.com/9001/copyparty.git
synced 2025-08-18 09:22:31 -06:00
filekeys in search results
This commit is contained in:
parent
6ddd952e04
commit
06bbf0d656
|
@ -1084,7 +1084,7 @@ class HttpCli(object):
|
||||||
errmsg = "ERROR: " + errmsg
|
errmsg = "ERROR: " + errmsg
|
||||||
|
|
||||||
for sz, sha512, ofn, lfn in files:
|
for sz, sha512, ofn, lfn in files:
|
||||||
vsuf = ''
|
vsuf = ""
|
||||||
if self.can_read and "fk" in vfs.flags:
|
if self.can_read and "fk" in vfs.flags:
|
||||||
vsuf = "?k=" + gen_filekey(
|
vsuf = "?k=" + gen_filekey(
|
||||||
self.args.fk_salt,
|
self.args.fk_salt,
|
||||||
|
@ -1094,8 +1094,8 @@ class HttpCli(object):
|
||||||
)[: vfs.flags["fk"]]
|
)[: vfs.flags["fk"]]
|
||||||
|
|
||||||
vpath = "{}/{}".format(upload_vpath, lfn).strip("/")
|
vpath = "{}/{}".format(upload_vpath, lfn).strip("/")
|
||||||
msg += 'sha512: {} // {} bytes // <a href="/{}">{}</a>\n'.format(
|
msg += 'sha512: {} // {} bytes // <a href="/{}">{}</a> {}\n'.format(
|
||||||
sha512[:56], sz, quotep(vpath) + vsuf, html_escape(ofn, crlf=True)
|
sha512[:56], sz, quotep(vpath) + vsuf, html_escape(ofn, crlf=True), vsuf
|
||||||
)
|
)
|
||||||
# truncated SHA-512 prevents length extension attacks;
|
# truncated SHA-512 prevents length extension attacks;
|
||||||
# using SHA-512/224, optionally SHA-512/256 = :64
|
# using SHA-512/224, optionally SHA-512/256 = :64
|
||||||
|
@ -1103,7 +1103,7 @@ class HttpCli(object):
|
||||||
"url": "{}://{}/{}".format(
|
"url": "{}://{}/{}".format(
|
||||||
"https" if self.tls else "http",
|
"https" if self.tls else "http",
|
||||||
self.headers.get("host", "copyparty"),
|
self.headers.get("host", "copyparty"),
|
||||||
vpath + vsuf
|
vpath + vsuf,
|
||||||
),
|
),
|
||||||
"sha512": sha512[:56],
|
"sha512": sha512[:56],
|
||||||
"sz": sz,
|
"sz": sz,
|
||||||
|
|
|
@ -7,8 +7,8 @@ import time
|
||||||
import threading
|
import threading
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
from .__init__ import unicode
|
from .__init__ import ANYWIN, unicode
|
||||||
from .util import s3dec, Pebkac, min_ex
|
from .util import absreal, s3dec, Pebkac, min_ex, gen_filekey
|
||||||
from .bos import bos
|
from .bos import bos
|
||||||
from .up2k import up2k_wark_from_hashlist
|
from .up2k import up2k_wark_from_hashlist
|
||||||
|
|
||||||
|
@ -242,6 +242,7 @@ class U2idx(object):
|
||||||
self.active_cur = cur
|
self.active_cur = cur
|
||||||
|
|
||||||
sret = []
|
sret = []
|
||||||
|
fk = flags.get("fk")
|
||||||
c = cur.execute(q, v)
|
c = cur.execute(q, v)
|
||||||
for hit in c:
|
for hit in c:
|
||||||
w, ts, sz, rd, fn, ip, at = hit
|
w, ts, sz, rd, fn, ip, at = hit
|
||||||
|
@ -252,6 +253,20 @@ class U2idx(object):
|
||||||
if rd.startswith("//") or fn.startswith("//"):
|
if rd.startswith("//") or fn.startswith("//"):
|
||||||
rd, fn = s3dec(rd, fn)
|
rd, fn = s3dec(rd, fn)
|
||||||
|
|
||||||
|
if fk:
|
||||||
|
try:
|
||||||
|
ap = absreal(os.path.join(ptop, rd, fn))
|
||||||
|
inf = bos.stat(ap)
|
||||||
|
except:
|
||||||
|
continue
|
||||||
|
|
||||||
|
fn += (
|
||||||
|
"?k="
|
||||||
|
+ gen_filekey(
|
||||||
|
self.args.fk_salt, ap, sz, 0 if ANYWIN else inf.st_ino
|
||||||
|
)[:fk]
|
||||||
|
)
|
||||||
|
|
||||||
rp = "/".join([x for x in [vtop, rd, fn] if x])
|
rp = "/".join([x for x in [vtop, rd, fn] if x])
|
||||||
sret.append({"ts": int(ts), "sz": sz, "rp": rp, "w": w[:16]})
|
sret.append({"ts": int(ts), "sz": sz, "rp": rp, "w": w[:16]})
|
||||||
|
|
||||||
|
|
|
@ -1658,7 +1658,7 @@ function up2k_init(subtle) {
|
||||||
err = rsp;
|
err = rsp;
|
||||||
ofs = err.indexOf('\n/');
|
ofs = err.indexOf('\n/');
|
||||||
if (ofs !== -1) {
|
if (ofs !== -1) {
|
||||||
err = err.slice(0, ofs + 1) + linksplit(err.slice(ofs + 2)).join(' ');
|
err = err.slice(0, ofs + 1) + linksplit(err.slice(ofs + 2).trimEnd()).join(' ');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (err != "") {
|
if (err != "") {
|
||||||
|
|
|
@ -377,8 +377,16 @@ function makeSortable(table, cb) {
|
||||||
|
|
||||||
|
|
||||||
function linksplit(rp) {
|
function linksplit(rp) {
|
||||||
var ret = [];
|
var ret = [],
|
||||||
var apath = '/';
|
apath = '/',
|
||||||
|
q = null;
|
||||||
|
|
||||||
|
if (rp && rp.indexOf('?') + 1) {
|
||||||
|
q = rp.split('?', 2);
|
||||||
|
rp = q[0];
|
||||||
|
q = '?' + q[1];
|
||||||
|
}
|
||||||
|
|
||||||
if (rp && rp.charAt(0) == '/')
|
if (rp && rp.charAt(0) == '/')
|
||||||
rp = rp.slice(1);
|
rp = rp.slice(1);
|
||||||
|
|
||||||
|
@ -400,6 +408,9 @@ function linksplit(rp) {
|
||||||
elink = elink.slice(0, -3) + '/';
|
elink = elink.slice(0, -3) + '/';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!rp && q)
|
||||||
|
elink += q;
|
||||||
|
|
||||||
ret.push('<a href="' + apath + elink + '">' + vlink + '</a>');
|
ret.push('<a href="' + apath + elink + '">' + vlink + '</a>');
|
||||||
apath += elink;
|
apath += elink;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue