mirror of
https://github.com/9001/copyparty.git
synced 2026-02-26 05:23:10 -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"
|
||||
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()
|
||||
|
||||
zsl1 = [x for x in vol.flags["preadmes"].split(",") if x]
|
||||
|
|
|
|||
|
|
@ -3534,10 +3534,10 @@ class HttpCli(object):
|
|||
|
||||
if not self.can_delete and (
|
||||
"." 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"
|
||||
raise Pebkac(400, t % (self.args.rw_edit.replace(",", "/")))
|
||||
raise Pebkac(400, t % (vfs.flags["rw_edit"].replace(",", "/")))
|
||||
|
||||
sanitized = sanitize_fn(new_file)
|
||||
fdir = vfs.canonical(rem)
|
||||
|
|
@ -4055,10 +4055,11 @@ class HttpCli(object):
|
|||
dbv, vrem = vfs.get_dbv(rem)
|
||||
|
||||
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"
|
||||
raise Pebkac(400, t % (self.args.rw_edit.replace(",", "/")))
|
||||
raise Pebkac(400, t % (vfs.flags["rw_edit"].replace(",", "/")))
|
||||
|
||||
if nullwrite:
|
||||
response = json.dumps({"ok": True, "lastmod": 0})
|
||||
|
|
@ -6881,13 +6882,20 @@ class HttpCli(object):
|
|||
vpnodes.pop()
|
||||
|
||||
if (
|
||||
(is_md or self.can_delete)
|
||||
and "nohtml" not in vn.flags
|
||||
and (
|
||||
(
|
||||
(is_md and "v" in self.uparam)
|
||||
or "edit" 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)
|
||||
|
||||
|
|
|
|||
|
|
@ -1122,7 +1122,7 @@ class SvcHub(object):
|
|||
vs = os.path.expandvars(os.path.expanduser(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)
|
||||
vsa = [x.strip() for x in vs.split(",")]
|
||||
vsa = [x.lower() for x in vsa if x]
|
||||
|
|
|
|||
|
|
@ -1152,7 +1152,7 @@ class Up2k(object):
|
|||
ft = "\033[0;32m{}{:.0}"
|
||||
ff = "\033[0;35m{}{:.0}"
|
||||
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())
|
||||
fd = vf_bmap()
|
||||
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() {
|
||||
toast.inf(30, L.fp_abrt);
|
||||
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('dldoc').setAttribute('href', url);
|
||||
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'),
|
||||
nrend = r.nrend,
|
||||
|
|
@ -7981,7 +7987,7 @@ function apply_perms(res) {
|
|||
|
||||
if (res.cfg)
|
||||
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, '/'));
|
||||
|
||||
widget.setvis();
|
||||
|
|
@ -8790,7 +8796,7 @@ var msel = (function () {
|
|||
form.onsubmit = function (e) {
|
||||
if (!has(perms, "delete") && !re_rw_edit.test(tb.value)) {
|
||||
ev(e);
|
||||
toast.err(10, L.nmd_i2);
|
||||
toast.err(10, L.nmd_i2.format(rw_edit.replace(/,/g, '/')));
|
||||
return false;
|
||||
}
|
||||
if (tb.value) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue