From 2d3e843d64baa0990094f77c6a051fe5b2cd6343 Mon Sep 17 00:00:00 2001 From: zzz Date: Mon, 11 May 2020 07:50:36 -0400 Subject: [PATCH] Plugin headers and CSP (Gitlab issue #44) Prep for stricter script-src: Add headers, remove js onload, move init call to the js Add nonces to all scripts, can't use yet due to innerHTML (see Gitlab issue #45) --- webui/src/main/js/advancedSharing.js | 6 +++++- webui/src/main/js/browse.js | 4 ++++ webui/src/main/js/certificates.js | 4 ++++ webui/src/main/js/conncount.js | 4 ++++ webui/src/main/js/download.js | 4 ++++ webui/src/main/js/feeds.js | 6 +++++- webui/src/main/js/fileDetails.js | 4 ++++ webui/src/main/js/files.js | 6 +++++- webui/src/main/js/filesTable.js | 6 +++++- webui/src/main/js/search.js | 8 ++++++++ webui/src/main/js/status.js | 4 ++++ webui/src/main/js/translate.js | 4 ++++ webui/src/main/js/trustLists.js | 4 ++++ webui/src/main/js/trustUsers.js | 4 ++++ webui/src/main/js/upload.js | 4 ++++ webui/src/main/webapp/AboutMe.jsp | 8 ++++---- webui/src/main/webapp/AdvancedSharing.jsp | 8 ++++---- webui/src/main/webapp/BrowseHost.jsp | 12 ++++++------ webui/src/main/webapp/ConfigurationPage.jsp | 2 +- webui/src/main/webapp/Downloads.jsp | 6 +++--- webui/src/main/webapp/Feeds.jsp | 10 +++++----- webui/src/main/webapp/FileDetails.jsp | 10 +++++----- webui/src/main/webapp/Home.jsp | 21 ++++++++++++--------- webui/src/main/webapp/MuStatus.jsp | 6 +++--- webui/src/main/webapp/SharedFiles.jsp | 10 +++++----- webui/src/main/webapp/TrustLists.jsp | 8 ++++---- webui/src/main/webapp/TrustUsers.jsp | 8 ++++---- webui/src/main/webapp/Uploads.jsp | 6 +++--- webui/src/main/webapp/css.jsi | 20 ++++++++++++++++---- 29 files changed, 143 insertions(+), 64 deletions(-) diff --git a/webui/src/main/js/advancedSharing.js b/webui/src/main/js/advancedSharing.js index 1ed688b2..445503ba 100644 --- a/webui/src/main/js/advancedSharing.js +++ b/webui/src/main/js/advancedSharing.js @@ -150,4 +150,8 @@ var revision = -1 var pathToDir = new Map() var sortKey = "Directory" -var sortOrder = "descending" \ No newline at end of file +var sortOrder = "descending" + +document.addEventListener("DOMContentLoaded", function() { + initAdvancedSharing(); +}, true); diff --git a/webui/src/main/js/browse.js b/webui/src/main/js/browse.js index ca83cc04..fbe84cdd 100644 --- a/webui/src/main/js/browse.js +++ b/webui/src/main/js/browse.js @@ -318,3 +318,7 @@ function hideComment(infoHash) { var commentSpan = document.getElementById("comment-"+infoHash) commentSpan.innerHTML = "" } + +document.addEventListener("DOMContentLoaded", function() { + initBrowse(); +}, true); diff --git a/webui/src/main/js/certificates.js b/webui/src/main/js/certificates.js index cd5d6c04..dac6f42b 100644 --- a/webui/src/main/js/certificates.js +++ b/webui/src/main/js/certificates.js @@ -208,3 +208,7 @@ function initCertificates() { setInterval(refreshCertificates, 3000) setTimeout(refreshCertificates, 1) } + +document.addEventListener("DOMContentLoaded", function() { + initCertificates(); +}, true); diff --git a/webui/src/main/js/conncount.js b/webui/src/main/js/conncount.js index f0f3ffe8..0a263cb9 100644 --- a/webui/src/main/js/conncount.js +++ b/webui/src/main/js/conncount.js @@ -29,3 +29,7 @@ function initConnectionsCount() { setInterval(refreshConnectionsCount, 3000); setTimeout(refreshConnectionsCount, 1); } + +document.addEventListener("DOMContentLoaded", function() { + initConnectionsCount(); +}, true); diff --git a/webui/src/main/js/download.js b/webui/src/main/js/download.js index e2c8f03b..a1a4f442 100644 --- a/webui/src/main/js/download.js +++ b/webui/src/main/js/download.js @@ -219,3 +219,7 @@ function initDownloads() { setInterval(refreshDownloader, 3000) setTimeout(refreshDownloader,1); } + +document.addEventListener("DOMContentLoaded", function() { + initDownloads(); +}, true); diff --git a/webui/src/main/js/feeds.js b/webui/src/main/js/feeds.js index 6a126ff0..ba7c4d52 100644 --- a/webui/src/main/js/feeds.js +++ b/webui/src/main/js/feeds.js @@ -400,4 +400,8 @@ var feedsSortOrder = "descending" var itemsSortKey = "Name" var itemsSortOrder = "descending" -var expandedComments = new Map() \ No newline at end of file +var expandedComments = new Map() + +document.addEventListener("DOMContentLoaded", function() { + initFeeds(); +}, true); diff --git a/webui/src/main/js/fileDetails.js b/webui/src/main/js/fileDetails.js index 1857c9fe..6f2575a8 100644 --- a/webui/src/main/js/fileDetails.js +++ b/webui/src/main/js/fileDetails.js @@ -237,3 +237,7 @@ var downloadersSortKey = "Downloader" var downloadersSortOrder = "descending" var certificatesSortKey = "Name" var certificatesSortOrder = "descending" + +document.addEventListener("DOMContentLoaded", function() { + initFileDetails(); +}, true); diff --git a/webui/src/main/js/files.js b/webui/src/main/js/files.js index 67df08e1..17f9579f 100644 --- a/webui/src/main/js/files.js +++ b/webui/src/main/js/files.js @@ -347,4 +347,8 @@ function unpublish(nodeId) { xmlhttp.open("POST", "/MuWire/Feed", true) xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); xmlhttp.send("action=unpublish&file=" + encodedPath) -} \ No newline at end of file +} + +document.addEventListener("DOMContentLoaded", function() { + initFiles(); +}, true); diff --git a/webui/src/main/js/filesTable.js b/webui/src/main/js/filesTable.js index 52451c52..b853c3d9 100644 --- a/webui/src/main/js/filesTable.js +++ b/webui/src/main/js/filesTable.js @@ -141,7 +141,7 @@ function refreshTable() { xmlhttp.send() } -function initFiles() { +function initFilesTable() { setInterval(refreshStatus, 3000) setTimeout(refreshStatus, 1) @@ -239,3 +239,7 @@ function unpublish(path) { xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); xmlhttp.send("action=unpublish&file=" + path) } + +document.addEventListener("DOMContentLoaded", function() { + initFilesTable(); +}, true); diff --git a/webui/src/main/js/search.js b/webui/src/main/js/search.js index 000e539a..48d95831 100644 --- a/webui/src/main/js/search.js +++ b/webui/src/main/js/search.js @@ -908,3 +908,11 @@ function initGroupByFile() { setInterval ( refreshStatus, 3000); setTimeout ( refreshStatus, 1); } + +document.addEventListener("DOMContentLoaded", function() { + if (bySender) { + initGroupBySender(); + } else { + initGroupByFile(); + } +}, true); diff --git a/webui/src/main/js/status.js b/webui/src/main/js/status.js index 8e5ba2a9..df7d46f4 100644 --- a/webui/src/main/js/status.js +++ b/webui/src/main/js/status.js @@ -25,3 +25,7 @@ function initStatus() { setInterval(refreshStatus, 3000); setTimeout(refreshStatus, 1); } + +document.addEventListener("DOMContentLoaded", function() { + initStatus(); +}, true); diff --git a/webui/src/main/js/translate.js b/webui/src/main/js/translate.js index a8d0345a..3929f54b 100644 --- a/webui/src/main/js/translate.js +++ b/webui/src/main/js/translate.js @@ -27,3 +27,7 @@ function _t(s, p) { rv = rv.replace("{0}", p); return rv; } + +document.addEventListener("DOMContentLoaded", function() { + initTranslate(jsTranslations); +}, true); diff --git a/webui/src/main/js/trustLists.js b/webui/src/main/js/trustLists.js index 08fdb5dd..0d500288 100644 --- a/webui/src/main/js/trustLists.js +++ b/webui/src/main/js/trustLists.js @@ -371,3 +371,7 @@ function initTrustLists() { setTimeout(fetchRevision, 1) setInterval(fetchRevision, 3000) } + +document.addEventListener("DOMContentLoaded", function() { + initTrustLists(); +}, true); diff --git a/webui/src/main/js/trustUsers.js b/webui/src/main/js/trustUsers.js index 0a440fa3..cd62b568 100644 --- a/webui/src/main/js/trustUsers.js +++ b/webui/src/main/js/trustUsers.js @@ -273,3 +273,7 @@ function initTrustUsers() { setTimeout(fetchRevision, 1) setInterval(fetchRevision, 3000) } + +document.addEventListener("DOMContentLoaded", function() { + initTrustUsers(); +}, true); diff --git a/webui/src/main/js/upload.js b/webui/src/main/js/upload.js index 8d1e1d30..84c5d3ba 100644 --- a/webui/src/main/js/upload.js +++ b/webui/src/main/js/upload.js @@ -85,3 +85,7 @@ function initUploads() { setInterval(refreshUploads, 3000) setTimeout(refreshUploads,1); } + +document.addEventListener("DOMContentLoaded", function() { + initUploads(); +}, true); diff --git a/webui/src/main/webapp/AboutMe.jsp b/webui/src/main/webapp/AboutMe.jsp index b2292473..8f9e8a5b 100644 --- a/webui/src/main/webapp/AboutMe.jsp +++ b/webui/src/main/webapp/AboutMe.jsp @@ -19,9 +19,9 @@ Core core = (Core) application.getAttribute("core"); <%@include file="css.jsi"%> - - - + + - + <%@include file="header.jsi"%>