mirror of
https://github.com/9001/copyparty.git
synced 2025-08-17 17:12:13 -06:00
msg-to-log includes xm / ZeroMQ response
This commit is contained in:
parent
28c9de3f6a
commit
cdd3b67a5c
|
@ -775,11 +775,22 @@ def get_sects():
|
||||||
values for --urlform:
|
values for --urlform:
|
||||||
\033[36mstash\033[35m dumps the data to file and returns length + checksum
|
\033[36mstash\033[35m dumps the data to file and returns length + checksum
|
||||||
\033[36msave,get\033[35m dumps to file and returns the page like a GET
|
\033[36msave,get\033[35m dumps to file and returns the page like a GET
|
||||||
\033[36mprint,get\033[35m prints the data in the log and returns GET
|
\033[36mprint \033[35m prints the data to log and returns an error
|
||||||
(leave out the ",get" to return an error instead)\033[0m
|
\033[36mprint,xm \033[35m prints the data to log and returns --xm output
|
||||||
|
\033[36mprint,get\033[35m prints the data to log and returns GET\033[0m
|
||||||
|
|
||||||
note that the \033[35m--xm\033[0m hook will only run if \033[35m--urlform\033[0m
|
note that the \033[35m--xm\033[0m hook will only run if \033[35m--urlform\033[0m is
|
||||||
is either \033[36mprint\033[0m or the default \033[36mprint,get\033[0m
|
either \033[36mprint\033[0m or \033[36mprint,get\033[0m or the default \033[36mprint,xm\033[0m
|
||||||
|
|
||||||
|
if an \033[35m--xm\033[0m hook returns text, then
|
||||||
|
the response code will be HTTP 202;
|
||||||
|
http/get responses will be HTTP 200
|
||||||
|
|
||||||
|
if there are multiple \033[35m--xm\033[0m hooks defined, then
|
||||||
|
the first hook that produced output is returned
|
||||||
|
|
||||||
|
if there are no \033[35m--xm\033[0m hooks defined, then the default
|
||||||
|
\033[36mprint,xm\033[0m behaves like \033[36mprint,get\033[0m (returning html)
|
||||||
"""
|
"""
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
@ -960,7 +971,7 @@ def add_general(ap, nc, srvname):
|
||||||
ap2.add_argument("-v", metavar="VOL", type=u, action="append", help="add volume, \033[33mSRC\033[0m:\033[33mDST\033[0m:\033[33mFLAG\033[0m; examples [\033[32m.::r\033[0m], [\033[32m/mnt/nas/music:/music:r:aed\033[0m], see --help-accounts")
|
ap2.add_argument("-v", metavar="VOL", type=u, action="append", help="add volume, \033[33mSRC\033[0m:\033[33mDST\033[0m:\033[33mFLAG\033[0m; examples [\033[32m.::r\033[0m], [\033[32m/mnt/nas/music:/music:r:aed\033[0m], see --help-accounts")
|
||||||
ap2.add_argument("--grp", metavar="G:N,N", type=u, action="append", help="add group, \033[33mNAME\033[0m:\033[33mUSER1\033[0m,\033[33mUSER2\033[0m,\033[33m...\033[0m; example [\033[32madmins:ed,foo,bar\033[0m]")
|
ap2.add_argument("--grp", metavar="G:N,N", type=u, action="append", help="add group, \033[33mNAME\033[0m:\033[33mUSER1\033[0m,\033[33mUSER2\033[0m,\033[33m...\033[0m; example [\033[32madmins:ed,foo,bar\033[0m]")
|
||||||
ap2.add_argument("-ed", action="store_true", help="enable the ?dots url parameter / client option which allows clients to see dotfiles / hidden files (volflag=dots)")
|
ap2.add_argument("-ed", action="store_true", help="enable the ?dots url parameter / client option which allows clients to see dotfiles / hidden files (volflag=dots)")
|
||||||
ap2.add_argument("--urlform", metavar="MODE", type=u, default="print,get", help="how to handle url-form POSTs; see \033[33m--help-urlform\033[0m")
|
ap2.add_argument("--urlform", metavar="MODE", type=u, default="print,xm", help="how to handle url-form POSTs; see \033[33m--help-urlform\033[0m")
|
||||||
ap2.add_argument("--wintitle", metavar="TXT", type=u, default="cpp @ $pub", help="server terminal title, for example [\033[32m$ip-10.1.2.\033[0m] or [\033[32m$ip-]")
|
ap2.add_argument("--wintitle", metavar="TXT", type=u, default="cpp @ $pub", help="server terminal title, for example [\033[32m$ip-10.1.2.\033[0m] or [\033[32m$ip-]")
|
||||||
ap2.add_argument("--name", metavar="TXT", type=u, default=srvname, help="server name (displayed topleft in browser and in mDNS)")
|
ap2.add_argument("--name", metavar="TXT", type=u, default=srvname, help="server name (displayed topleft in browser and in mDNS)")
|
||||||
ap2.add_argument("--mime", metavar="EXT=MIME", type=u, action="append", help="map file \033[33mEXT\033[0mension to \033[33mMIME\033[0mtype, for example [\033[32mjpg=image/jpeg\033[0m]")
|
ap2.add_argument("--mime", metavar="EXT=MIME", type=u, action="append", help="map file \033[33mEXT\033[0mension to \033[33mMIME\033[0mtype, for example [\033[32mjpg=image/jpeg\033[0m]")
|
||||||
|
|
|
@ -1899,6 +1899,9 @@ class HttpCli(object):
|
||||||
if "stash" in opt:
|
if "stash" in opt:
|
||||||
return self.handle_stash(False)
|
return self.handle_stash(False)
|
||||||
|
|
||||||
|
xm = []
|
||||||
|
xm_rsp = {}
|
||||||
|
|
||||||
if "save" in opt:
|
if "save" in opt:
|
||||||
post_sz, _, _, _, _, path, _ = self.dump_to_file(False)
|
post_sz, _, _, _, _, path, _ = self.dump_to_file(False)
|
||||||
self.log("urlform: %d bytes, %r" % (post_sz, path))
|
self.log("urlform: %d bytes, %r" % (post_sz, path))
|
||||||
|
@ -1921,7 +1924,7 @@ class HttpCli(object):
|
||||||
plain = plain[4:]
|
plain = plain[4:]
|
||||||
xm = self.vn.flags.get("xm")
|
xm = self.vn.flags.get("xm")
|
||||||
if xm:
|
if xm:
|
||||||
runhook(
|
xm_rsp = runhook(
|
||||||
self.log,
|
self.log,
|
||||||
self.conn.hsrv.broker,
|
self.conn.hsrv.broker,
|
||||||
None,
|
None,
|
||||||
|
@ -1945,6 +1948,13 @@ class HttpCli(object):
|
||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
self.log(repr(ex))
|
self.log(repr(ex))
|
||||||
|
|
||||||
|
if "xm" in opt:
|
||||||
|
if xm:
|
||||||
|
self.loud_reply(xm_rsp.get("stdout") or "", status=202)
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
return self.handle_get()
|
||||||
|
|
||||||
if "get" in opt:
|
if "get" in opt:
|
||||||
return self.handle_get()
|
return self.handle_get()
|
||||||
|
|
||||||
|
|
|
@ -243,6 +243,7 @@ URL_BUG = URL_PRJ + "/issues/new?labels=bug&template=bug_report.md"
|
||||||
HTTPCODE = {
|
HTTPCODE = {
|
||||||
200: "OK",
|
200: "OK",
|
||||||
201: "Created",
|
201: "Created",
|
||||||
|
202: "Accepted",
|
||||||
204: "No Content",
|
204: "No Content",
|
||||||
206: "Partial Content",
|
206: "Partial Content",
|
||||||
207: "Multi-Status",
|
207: "Multi-Status",
|
||||||
|
@ -3697,6 +3698,8 @@ def runhook(
|
||||||
elif k in ret:
|
elif k in ret:
|
||||||
if k == "rc" and v:
|
if k == "rc" and v:
|
||||||
ret[k] = v
|
ret[k] = v
|
||||||
|
elif k == "stdout" and v and not ret[k]:
|
||||||
|
ret[k] = v
|
||||||
else:
|
else:
|
||||||
ret[k] = v
|
ret[k] = v
|
||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
|
|
|
@ -9127,14 +9127,18 @@ var msel = (function () {
|
||||||
function cb() {
|
function cb() {
|
||||||
xhrchk(this, L.fsm_xe1, L.fsm_xe2);
|
xhrchk(this, L.fsm_xe1, L.fsm_xe2);
|
||||||
|
|
||||||
if (this.status < 200 || this.status > 201) {
|
if (this.status < 200 || this.status > 202) {
|
||||||
sf.textContent = 'error: ' + hunpre(this.responseText);
|
sf.textContent = 'error: ' + hunpre(this.responseText);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
tb.value = '';
|
tb.value = '';
|
||||||
clmod(sf, 'vis');
|
clmod(sf, 'vis');
|
||||||
sf.textContent = 'sent: "' + this.msg + '"';
|
var txt = 'sent: <code>' + esc(this.msg) + '</code>';
|
||||||
|
if (this.status == 202)
|
||||||
|
txt += '<br /> got: <code>' + esc(this.responseText) + '</code>';
|
||||||
|
|
||||||
|
sf.innerHTML = txt;
|
||||||
setTimeout(function () {
|
setTimeout(function () {
|
||||||
treectl.goto();
|
treectl.goto();
|
||||||
}, 100);
|
}, 100);
|
||||||
|
|
Loading…
Reference in a new issue