From d4c5fca15b0f3a260907d3a0c0eebfe5c18969ae Mon Sep 17 00:00:00 2001 From: ed Date: Sat, 28 Jan 2023 21:24:40 +0000 Subject: [PATCH] sandbox readme.md / prologue / epilogue --- README.md | 10 +++-- contrib/plugins/minimal-up2k.html | 4 ++ copyparty/__main__.py | 8 +++- copyparty/authsrv.py | 16 ++++++++ copyparty/httpcli.py | 9 ++++- copyparty/svchub.py | 4 +- copyparty/web/browser.css | 10 +++++ copyparty/web/browser.html | 8 ++-- copyparty/web/browser.js | 63 +++++++++++++++++++++++++++++-- 9 files changed, 117 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index f8212027..62f61ff7 100644 --- a/README.md +++ b/README.md @@ -281,7 +281,7 @@ server-os-specific: upgrade notes -* `1.6.0`: +* `1.6.0` (2023-01-28): * http-api: delete/move is now `POST` instead of `GET` * everything other than `GET` and `HEAD` must pass [cors validation](#cors) * `1.5.0` (2022-12-03): [new chunksize formula](https://github.com/9001/copyparty/commit/54e1c8d261df) for files larger than 128 GiB @@ -1252,7 +1252,6 @@ safety profiles: * `--no-robots` and `--force-js` makes life harder for crawlers, see [hiding from google](#hiding-from-google) * option `-ss` is a shortcut for the above plus: - * `--no-logues` and `--no-readme` disables support for readme's and prologues / epilogues in directory listings, which otherwise lets people upload arbitrary `'; + + var fr = mknod('iframe'); + fr.setAttribute('sandbox', rules ? 'allow-' + rules.replace(/ /g, ' allow-') : ''); + fr.setAttribute('srcdoc', html); + tgt.innerHTML = ''; + tgt.appendChild(fr); + return true; +} +window.addEventListener("message", function (e) { + try { + console.log('msg:' + e.data); + var t = e.data.split(/ /g); + if (t[0] == 'iheight') { + var el = QS(t[1]); + el.style.height = t[2] + 'px'; + el.style.visibility = 'unset'; + } + else if (t[0] == 'iscroll') { + var y1 = QS(t[1]).offsetTop, + y2 = parseInt(t[2]); + console.log(y1, y2); + document.documentElement.scrollTop = y1 + y2; + } + } catch (ex) { + console.log('msg-err: ' + ex); + } +}, false); + + +if (sb_lg && logues.length) { + sandbox(ebi('pro'), sb_lg, '', logues[0]); + sandbox(ebi('epi'), sb_lg, '', logues[1]); +} + + (function () { try { var tr = ebi('files').tBodies[0].rows;