mirror of
https://github.com/9001/copyparty.git
synced 2026-02-26 13:33:09 -07:00
rw_edit fixes
This commit is contained in:
parent
fd09638567
commit
d692838095
|
|
@ -2589,6 +2589,11 @@ class AuthSrv(object):
|
||||||
t = "WARNING: volume [/%s]: invalid value specified for ext-th: %s"
|
t = "WARNING: volume [/%s]: invalid value specified for ext-th: %s"
|
||||||
self.log(t % (vol.vpath, etv), 3)
|
self.log(t % (vol.vpath, etv), 3)
|
||||||
|
|
||||||
|
zsl = [x.strip() for x in vol.flags["rw_edit"].split(",")]
|
||||||
|
zsl = [x for x in zsl if x]
|
||||||
|
vol.flags["rw_edit"] = ",".join(zsl)
|
||||||
|
vol.flags["rw_edit_set"] = set(x for x in zsl if x)
|
||||||
|
|
||||||
emb_all = vol.flags["emb_all"] = set()
|
emb_all = vol.flags["emb_all"] = set()
|
||||||
|
|
||||||
zsl1 = [x for x in vol.flags["preadmes"].split(",") if x]
|
zsl1 = [x for x in vol.flags["preadmes"].split(",") if x]
|
||||||
|
|
|
||||||
|
|
@ -3534,10 +3534,10 @@ class HttpCli(object):
|
||||||
|
|
||||||
if not self.can_delete and (
|
if not self.can_delete and (
|
||||||
"." not in new_file
|
"." not in new_file
|
||||||
or new_file.rsplit(".", 1)[1].lower() not in self.args.rw_edit_set
|
or new_file.rsplit(".", 1)[1].lower() not in vfs.flags["rw_edit_set"]
|
||||||
):
|
):
|
||||||
t = "you can only create %s files because you don't have the delete-permission"
|
t = "you can only create %s files because you don't have the delete-permission"
|
||||||
raise Pebkac(400, t % (self.args.rw_edit.replace(",", "/")))
|
raise Pebkac(400, t % (vfs.flags["rw_edit"].replace(",", "/")))
|
||||||
|
|
||||||
sanitized = sanitize_fn(new_file)
|
sanitized = sanitize_fn(new_file)
|
||||||
fdir = vfs.canonical(rem)
|
fdir = vfs.canonical(rem)
|
||||||
|
|
@ -4055,10 +4055,11 @@ class HttpCli(object):
|
||||||
dbv, vrem = vfs.get_dbv(rem)
|
dbv, vrem = vfs.get_dbv(rem)
|
||||||
|
|
||||||
if not self.can_delete and (
|
if not self.can_delete and (
|
||||||
"." not in rem or rem.rsplit(".", 1)[1].lower() not in self.args.rw_edit_set
|
"." not in rem
|
||||||
|
or rem.rsplit(".", 1)[1].lower() not in vfs.flags["rw_edit_set"]
|
||||||
):
|
):
|
||||||
t = "you can only edit %s files because you don't have the delete-permission"
|
t = "you can only edit %s files because you don't have the delete-permission"
|
||||||
raise Pebkac(400, t % (self.args.rw_edit.replace(",", "/")))
|
raise Pebkac(400, t % (vfs.flags["rw_edit"].replace(",", "/")))
|
||||||
|
|
||||||
if nullwrite:
|
if nullwrite:
|
||||||
response = json.dumps({"ok": True, "lastmod": 0})
|
response = json.dumps({"ok": True, "lastmod": 0})
|
||||||
|
|
@ -6881,13 +6882,20 @@ class HttpCli(object):
|
||||||
vpnodes.pop()
|
vpnodes.pop()
|
||||||
|
|
||||||
if (
|
if (
|
||||||
(is_md or self.can_delete)
|
(
|
||||||
and "nohtml" not in vn.flags
|
|
||||||
and (
|
|
||||||
(is_md and "v" in self.uparam)
|
(is_md and "v" in self.uparam)
|
||||||
or "edit" in self.uparam
|
or "edit" in self.uparam
|
||||||
or "edit2" in self.uparam
|
or "edit2" in self.uparam
|
||||||
)
|
)
|
||||||
|
and "nohtml" not in vn.flags
|
||||||
|
and (
|
||||||
|
is_md
|
||||||
|
or self.can_delete
|
||||||
|
or (
|
||||||
|
"." in abspath
|
||||||
|
and abspath.rsplit(".", 1)[1].lower() in vn.flags["rw_edit_set"]
|
||||||
|
)
|
||||||
|
)
|
||||||
):
|
):
|
||||||
return self.tx_md(vn, abspath)
|
return self.tx_md(vn, abspath)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1122,7 +1122,7 @@ class SvcHub(object):
|
||||||
vs = os.path.expandvars(os.path.expanduser(vs))
|
vs = os.path.expandvars(os.path.expanduser(vs))
|
||||||
setattr(al, k, vs)
|
setattr(al, k, vs)
|
||||||
|
|
||||||
for k in "idp_adm rw_edit stats_u".split(" "):
|
for k in "idp_adm stats_u".split(" "):
|
||||||
vs = getattr(al, k)
|
vs = getattr(al, k)
|
||||||
vsa = [x.strip() for x in vs.split(",")]
|
vsa = [x.strip() for x in vs.split(",")]
|
||||||
vsa = [x.lower() for x in vsa if x]
|
vsa = [x.lower() for x in vsa if x]
|
||||||
|
|
|
||||||
|
|
@ -1152,7 +1152,7 @@ class Up2k(object):
|
||||||
ft = "\033[0;32m{}{:.0}"
|
ft = "\033[0;32m{}{:.0}"
|
||||||
ff = "\033[0;35m{}{:.0}"
|
ff = "\033[0;35m{}{:.0}"
|
||||||
fv = "\033[0;36m{}:\033[90m{}"
|
fv = "\033[0;36m{}:\033[90m{}"
|
||||||
zs = "bcasechk du_iwho emb_all emb_lgs emb_mds ext_th_d html_head html_head_d html_head_s ls_q_m put_name2 mv_re_r mv_re_t rm_re_r rm_re_t srch_re_dots srch_re_nodot zipmax zipmaxn_v zipmaxs_v"
|
zs = "bcasechk du_iwho emb_all emb_lgs emb_mds ext_th_d html_head html_head_d html_head_s ls_q_m put_name2 mv_re_r mv_re_t rm_re_r rm_re_t rw_edit_set srch_re_dots srch_re_nodot zipmax zipmaxn_v zipmaxs_v"
|
||||||
fx = set(zs.split())
|
fx = set(zs.split())
|
||||||
fd = vf_bmap()
|
fd = vf_bmap()
|
||||||
fd.update(vf_cmap())
|
fd.update(vf_cmap())
|
||||||
|
|
|
||||||
|
|
@ -3818,6 +3818,12 @@ function fmt_ren(re, md, fmt) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function enre_rw_edit() {
|
||||||
|
window.re_rw_edit = new RegExp('\.(' + rw_edit.replace(/,/g, '|') + ')$', 'i');
|
||||||
|
}
|
||||||
|
enre_rw_edit();
|
||||||
|
|
||||||
|
|
||||||
function fs_abrt() {
|
function fs_abrt() {
|
||||||
toast.inf(30, L.fp_abrt);
|
toast.inf(30, L.fp_abrt);
|
||||||
fileman.sn++;
|
fileman.sn++;
|
||||||
|
|
@ -5161,7 +5167,7 @@ var showfile = (function () {
|
||||||
ebi('files').style.display = ebi('gfiles').style.display = ebi('lazy').style.display = ebi('pro').style.display = ebi('epi').style.display = 'none';
|
ebi('files').style.display = ebi('gfiles').style.display = ebi('lazy').style.display = ebi('pro').style.display = ebi('epi').style.display = 'none';
|
||||||
ebi('dldoc').setAttribute('href', url);
|
ebi('dldoc').setAttribute('href', url);
|
||||||
ebi('editdoc').setAttribute('href', addq(url, 'edit'));
|
ebi('editdoc').setAttribute('href', addq(url, 'edit'));
|
||||||
ebi('editdoc').style.display = (has(perms, 'write') && (is_md || has(perms, 'delete'))) ? '' : 'none';
|
ebi('editdoc').style.display = (has(perms, 'write') && (re_rw_edit.test(name) || has(perms, 'delete'))) ? '' : 'none';
|
||||||
|
|
||||||
var wr = ebi('bdoc'),
|
var wr = ebi('bdoc'),
|
||||||
nrend = r.nrend,
|
nrend = r.nrend,
|
||||||
|
|
@ -7981,7 +7987,7 @@ function apply_perms(res) {
|
||||||
|
|
||||||
if (res.cfg)
|
if (res.cfg)
|
||||||
rw_edit = res.rw_edit;
|
rw_edit = res.rw_edit;
|
||||||
window.re_rw_edit = new RegExp('\.(' + rw_edit.replace(/,/g, '|') + ')$', 'i');
|
enre_rw_edit();
|
||||||
ebi('new_mdi').innerHTML = has(perms, "delete") ? L.nmd_i1 : L.nmd_i2.format(rw_edit.replace(/,/g, '/'));
|
ebi('new_mdi').innerHTML = has(perms, "delete") ? L.nmd_i1 : L.nmd_i2.format(rw_edit.replace(/,/g, '/'));
|
||||||
|
|
||||||
widget.setvis();
|
widget.setvis();
|
||||||
|
|
@ -8790,7 +8796,7 @@ var msel = (function () {
|
||||||
form.onsubmit = function (e) {
|
form.onsubmit = function (e) {
|
||||||
if (!has(perms, "delete") && !re_rw_edit.test(tb.value)) {
|
if (!has(perms, "delete") && !re_rw_edit.test(tb.value)) {
|
||||||
ev(e);
|
ev(e);
|
||||||
toast.err(10, L.nmd_i2);
|
toast.err(10, L.nmd_i2.format(rw_edit.replace(/,/g, '/')));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (tb.value) {
|
if (tb.value) {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue