diff --git a/copyparty/ftpd.py b/copyparty/ftpd.py index cc7dde25..a88a2757 100644 --- a/copyparty/ftpd.py +++ b/copyparty/ftpd.py @@ -511,7 +511,7 @@ class FtpHandler(FTPHandler): 0, self.cli_ip, time.time(), - "", + None, ) t = hr.get("rejectmsg") or "" if t or not hr: diff --git a/copyparty/httpcli.py b/copyparty/httpcli.py index 9020db3a..3f5b1c31 100644 --- a/copyparty/httpcli.py +++ b/copyparty/httpcli.py @@ -2144,7 +2144,7 @@ class HttpCli(object): t = "urlform_raw %d @ %r\n %r\n" self.log(t % (len(orig), "/" + self.vpath, orig)) try: - zb = unquote(buf.replace(b"+", b" ")) + zb = unquote(buf.replace(b"+", b" ").replace(b"&", b"\n")) plain = zb.decode("utf-8", "replace") if buf.startswith(b"msg="): plain = plain[4:] @@ -2165,7 +2165,7 @@ class HttpCli(object): len(buf), self.ip, time.time(), - plain, + [plain, orig], ) t = "urlform_dec %d @ %r\n %r\n" @@ -2326,7 +2326,7 @@ class HttpCli(object): remains, self.ip, at, - "", + None, ) t = hr.get("rejectmsg") or "" if t or not hr: @@ -2461,7 +2461,7 @@ class HttpCli(object): post_sz, self.ip, at, - "", + None, ) t = hr.get("rejectmsg") or "" if t or not hr: @@ -3299,7 +3299,7 @@ class HttpCli(object): 0, self.ip, time.time(), - "", + None, ) t = hr.get("rejectmsg") or "" if t or not hr: @@ -3471,7 +3471,7 @@ class HttpCli(object): 0, self.ip, at, - "", + None, ) t = hr.get("rejectmsg") or "" if t or not hr: @@ -3578,7 +3578,7 @@ class HttpCli(object): sz, self.ip, at, - "", + None, ) t = hr.get("rejectmsg") or "" if t or not hr: @@ -3891,7 +3891,7 @@ class HttpCli(object): 0, self.ip, time.time(), - "", + None, ) t = hr.get("rejectmsg") or "" if t or not hr: @@ -3939,7 +3939,7 @@ class HttpCli(object): sz, self.ip, new_lastmod, - "", + None, ) t = hr.get("rejectmsg") or "" if t or not hr: diff --git a/copyparty/smbd.py b/copyparty/smbd.py index 0d03ac4e..40e4f088 100644 --- a/copyparty/smbd.py +++ b/copyparty/smbd.py @@ -262,7 +262,7 @@ class SMB(object): 0, "1.7.6.2", time.time(), - "", + None, ) t = hr.get("rejectmsg") or "" if t or not hr: diff --git a/copyparty/tftpd.py b/copyparty/tftpd.py index 4b95a2b6..88fd7782 100644 --- a/copyparty/tftpd.py +++ b/copyparty/tftpd.py @@ -379,7 +379,7 @@ class Tftpd(object): 0, "8.3.8.7", time.time(), - "", + None, ) t = hr.get("rejectmsg") or "" if t or not hr: diff --git a/copyparty/up2k.py b/copyparty/up2k.py index 58bfb445..a85e379d 100644 --- a/copyparty/up2k.py +++ b/copyparty/up2k.py @@ -3304,7 +3304,7 @@ class Up2k(object): job["size"], job["addr"], job["at"], - "", + None, ) t = hr.get("rejectmsg") or "" if t or not hr: @@ -4000,7 +4000,7 @@ class Up2k(object): sz, ip, at or time.time(), - "", + None, ) t = hr.get("rejectmsg") or "" if t or not hr: @@ -4236,7 +4236,7 @@ class Up2k(object): st.st_size, ip, time.time(), - "", + None, ): t = "delete blocked by xbd server config: %r" self.log(t % (abspath,), 1) @@ -4276,7 +4276,7 @@ class Up2k(object): st.st_size, ip, time.time(), - "", + None, ) if is_dir: @@ -4404,7 +4404,7 @@ class Up2k(object): fsize, ip, time.time(), - "", + None, ): t = "copy blocked by xbr server config: %r" % (svp,) self.log(t, 1) @@ -4505,7 +4505,7 @@ class Up2k(object): fsize, ip, time.time(), - "", + None, ) return "k" @@ -4656,7 +4656,7 @@ class Up2k(object): fsize, ip, time.time(), - "", + None, ): t = "move blocked by xbr server config: %r" % (svp,) self.log(t, 1) @@ -4696,7 +4696,7 @@ class Up2k(object): fsize, ip, time.time(), - "", + None, ) return "k" @@ -4816,7 +4816,7 @@ class Up2k(object): fsize, ip, time.time(), - "", + None, ) return "k" @@ -5154,7 +5154,7 @@ class Up2k(object): job["size"], job["addr"], job["t0"], - "", + None, ) t = hr.get("rejectmsg") or "" if t or not hr: diff --git a/copyparty/util.py b/copyparty/util.py index 4f026a56..0b7cbd07 100644 --- a/copyparty/util.py +++ b/copyparty/util.py @@ -3885,7 +3885,7 @@ def _runhook( sz: int, ip: str, at: float, - txt: str, + txt: Optional[list[str]], ) -> dict[str, Any]: ret = {"rc": 0} areq, chk, imp, fork, sin, jtxt, wait, sp_ka, acmd = _parsehook(log, cmd) @@ -3908,15 +3908,17 @@ def _runhook( "user": uname, "perms": perms, "src": src, - "txt": txt, } + if txt: + ja["txt"] = txt[0] + ja["body"] = txt[1] if imp: ja["log"] = log mod = loadpy(acmd[0], False) return mod.main(ja) arg = json.dumps(ja) else: - arg = txt or ap + arg = txt[0] if txt else ap if acmd[0].startswith("zmq:"): zi, zs = _zmq_hook(log, verbose, src, acmd[0][4:].lower(), arg, wait, sp_ka) @@ -3979,7 +3981,7 @@ def runhook( sz: int, ip: str, at: float, - txt: str, + txt: Optional[list[str]], ) -> dict[str, Any]: assert broker or up2k # !rm args = (broker or up2k).args # type: ignore diff --git a/copyparty/web/browser.js b/copyparty/web/browser.js index 74fcdac5..51db4f9d 100644 --- a/copyparty/web/browser.js +++ b/copyparty/web/browser.js @@ -8613,9 +8613,14 @@ var msel = (function () { sf.textContent = 'sending...'; var xhr = new XHR(), + sel = msel.getsel(), + msg = uricom_enc(tb.value), ct = 'application/x-www-form-urlencoded;charset=UTF-8'; - xhr.msg = tb.value; + for (var a = 0; a < sel.length; a++) + msg += "&sel=" + sel[a].vp.split('/').pop(); + + xhr.msg = msg; xhr.open('POST', get_evpath(), true); xhr.responseType = 'text'; xhr.onload = xhr.onerror = cb; @@ -8623,7 +8628,7 @@ var msel = (function () { if (xhr.overrideMimeType) xhr.overrideMimeType('Content-Type', ct); - xhr.send('msg=' + uricom_enc(xhr.msg)); + xhr.send('msg=' + xhr.msg); return false; };