You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flagon.apache.org by jk...@apache.org on 2024/02/08 16:21:58 UTC
(flagon-useralejs) 01/03: Adds url whitelist regex to ext options
This is an automated email from the ASF dual-hosted git repository.
jky pushed a commit to branch test
in repository https://gitbox.apache.org/repos/asf/flagon-useralejs.git
commit 92e8a5d7fed56aa296588ab03bb561f4e905fad0
Author: Jason Young <ja...@protonmail.com>
AuthorDate: Wed Feb 7 17:51:37 2024 -0500
Adds url whitelist regex to ext options
---
build/UserALEWebExtension/background.js | 90 ++++++++++++++++++++++--------
build/UserALEWebExtension/options.js | 15 +++--
build/UserALEWebExtension/optionsPage.html | 4 ++
src/UserALEWebExtension/background.js | 63 ++++++++++++++++-----
src/UserALEWebExtension/options.js | 12 +++-
src/UserALEWebExtension/optionsPage.html | 4 ++
6 files changed, 145 insertions(+), 43 deletions(-)
diff --git a/build/UserALEWebExtension/background.js b/build/UserALEWebExtension/background.js
index 82a41c0..42a3550 100644
--- a/build/UserALEWebExtension/background.js
+++ b/build/UserALEWebExtension/background.js
@@ -428,6 +428,30 @@ var intervalCounter;
var intervalLog;
var cbHandlers = {};
+/**
+ * Adds named callbacks to be executed when logging.
+ * @param {Object } newCallbacks An object containing named callback functions.
+ */
+function addCallbacks() {
+ for (var _len = arguments.length, newCallbacks = new Array(_len), _key = 0; _key < _len; _key++) {
+ newCallbacks[_key] = arguments[_key];
+ }
+ newCallbacks.forEach(function (source) {
+ var descriptors = Object.keys(source).reduce(function (descriptors, key) {
+ descriptors[key] = Object.getOwnPropertyDescriptor(source, key);
+ return descriptors;
+ }, {});
+ Object.getOwnPropertySymbols(source).forEach(function (sym) {
+ var descriptor = Object.getOwnPropertyDescriptor(source, sym);
+ if (descriptor.enumerable) {
+ descriptors[sym] = descriptor;
+ }
+ });
+ Object.defineProperties(cbHandlers, descriptors);
+ });
+ return cbHandlers;
+}
+
/**
* Assigns the config and log container to be used by the logging functions.
* @param {Array} newLogs Log container.
@@ -1082,21 +1106,21 @@ function log(customLog) {
}
}
-/*
-* Licensed to the Apache Software Foundation (ASF) under one or more
-* contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
-* The ASF licenses this file to You under the Apache License, Version 2.0
-* (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You under the Apache License, Version 2.0
+* (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
*/
@@ -1131,11 +1155,18 @@ var defaultConfig = {
authHeader: null,
toolName: 'useralePlugin',
version: version
+ },
+ pluginConfig: {
+ // Default to a regex that will match no string
+ urlWhitelist: '(?!x)x'
}
};
-browser.storage.local.get(defaultConfig, function (res) {
- options(res.useraleConfig);
-});
+var urlWhitelist;
+function updateConfig(config) {
+ urlWhitelist = new RegExp(config.pluginConfig.urlWhitelist);
+ options(config.useraleConfig);
+ dispatchTabMessage(config.useraleConfig);
+}
function dispatchTabMessage(message) {
browser.tabs.query({}, function (tabs) {
tabs.forEach(function (tab) {
@@ -1143,20 +1174,33 @@ function dispatchTabMessage(message) {
});
});
}
-browser.runtime.onMessage.addListener(function (message, sender, sendResponse) {
+function filterUrl(log) {
+ if (urlWhitelist.test(log.pageUrl)) {
+ return log;
+ }
+ return false;
+}
+browser.storage.local.get(defaultConfig, function (res) {
+ addCallbacks({
+ filterUrl: filterUrl
+ });
+ updateConfig(res);
+});
+browser.runtime.onMessage.addListener(function (message) {
switch (message.type) {
// Handles logs rerouted from content and option scripts
case ADD_LOG:
- var log$1 = message.payload;
+ var var log$1 = filterUrl$1 = message.payload;
if ("tab" in sender && "id" in sender.tab) {
log$1["tabId"] = sender.tab.id;
}
log(log$1);
+ if (log$1) {
+ log(log$1);
+ }
break;
case CONFIG_CHANGE:
- console.log(message);
- options(message.payload);
- dispatchTabMessage(message);
+ updateConfig(message.payload);
break;
default:
console.log('got unknown message type ', message);
diff --git a/build/UserALEWebExtension/options.js b/build/UserALEWebExtension/options.js
index 8528ad8..628b79e 100644
--- a/build/UserALEWebExtension/options.js
+++ b/build/UserALEWebExtension/options.js
@@ -1142,13 +1142,17 @@ function setConfig() {
if (config.userId && password) {
config.authHeader = "Basic " + btoa("".concat(config.userId, ":").concat(password));
}
- browser.storage.local.set({
- useraleConfig: config
- }, function () {
+ var payload = {
+ useraleConfig: config,
+ pluginConfig: {
+ urlWhitelist: document.getElementById("filter").value
+ }
+ };
+ browser.storage.local.set(payload, function () {
options(config);
browser.runtime.sendMessage({
type: CONFIG_CHANGE,
- payload: config
+ payload: payload
});
});
}
@@ -1161,6 +1165,9 @@ function getConfig() {
document.getElementById("tool").value = config.toolName;
document.getElementById("version").value = config.version;
});
+ browser.storage.local.get("pluginConfig", function (res) {
+ document.getElementById("filter").value = res.pluginConfig.urlWhitelist;
+ });
}
document.addEventListener("DOMContentLoaded", getConfig);
document.addEventListener("submit", setConfig);
diff --git a/build/UserALEWebExtension/optionsPage.html b/build/UserALEWebExtension/optionsPage.html
index ff92cf0..9a3f363 100644
--- a/build/UserALEWebExtension/optionsPage.html
+++ b/build/UserALEWebExtension/optionsPage.html
@@ -45,6 +45,10 @@
<input id="version"/>
<br/>
+ <label>URL whitelist regex:</label>
+ <input id="filter"/>
+ <br/>
+
<div align="right">
<button type="submit">Save</button>
</div>
diff --git a/src/UserALEWebExtension/background.js b/src/UserALEWebExtension/background.js
index 9e70d06..8c33b3f 100644
--- a/src/UserALEWebExtension/background.js
+++ b/src/UserALEWebExtension/background.js
@@ -24,17 +24,27 @@ import * as userale from '../main.js';
import { browser } from './globals.js';
// Initalize userale plugin options
-const defaultConfig = {useraleConfig: {
- url: 'http://localhost:8000',
- userId: 'pluginUser',
- authHeader: null,
- toolName: 'useralePlugin',
- version: userale.version,
-}};
+const defaultConfig = {
+ useraleConfig: {
+ url: 'http://localhost:8000',
+ userId: 'pluginUser',
+ authHeader: null,
+ toolName: 'useralePlugin',
+ version: userale.version,
+ },
+ pluginConfig: {
+ // Default to a regex that will match no string
+ urlWhitelist: '(?!x)x'
+ }
+};
-browser.storage.local.get(defaultConfig, (res) => {
- userale.options(res.useraleConfig);
-});
+var urlWhitelist;
+
+function updateConfig(config) {
+ urlWhitelist = new RegExp(config.pluginConfig.urlWhitelist);
+ userale.options(config.useraleConfig);
+ dispatchTabMessage(config.useraleConfig);
+}
function dispatchTabMessage(message) {
browser.tabs.query({}, function (tabs) {
@@ -44,6 +54,30 @@ function dispatchTabMessage(message) {
});
}
+function filterUrl(log) {
+ if(urlWhitelist.test(log.pageUrl)) {
+ return log
+ }
+ return false;
+}
+
+browser.storage.local.get(defaultConfig, (res) => {
+ userale.addCallbacks({filterUrl:filterUrl});
+ updateConfig(res);
+});
+
+function filterUrl(log) {
+ if(urlWhitelist.test(log.pageUrl)) {
+ return log
+ }
+ return false;
+}
+
+browser.storage.local.get(defaultConfig, (res) => {
+ userale.addCallbacks({filterUrl:filterUrl});
+ updateConfig(res);
+});
+
browser.runtime.onMessage.addListener(function (message, sender, sendResponse) {
switch (message.type) {
// Handles logs rerouted from content and option scripts
@@ -52,13 +86,14 @@ browser.runtime.onMessage.addListener(function (message, sender, sendResponse) {
if("tab" in sender && "id" in sender.tab) {
log["tabId"] = sender.tab.id;
}
- userale.log(log);
+ log = filterUrl(log);
+ if(log) {
+ userale.log(log);
+ }
break;
case MessageTypes.CONFIG_CHANGE:
- console.log(message);
- userale.options(message.payload);
- dispatchTabMessage(message);
+ updateConfig(message.payload);
break;
default:
diff --git a/src/UserALEWebExtension/options.js b/src/UserALEWebExtension/options.js
index b2ecbdb..53b5765 100644
--- a/src/UserALEWebExtension/options.js
+++ b/src/UserALEWebExtension/options.js
@@ -39,9 +39,14 @@ function setConfig() {
config.authHeader = "Basic " + btoa(`${config.userId}:${password}`);
}
- browser.storage.local.set({useraleConfig: config}, () => {
+ let payload = {
+ useraleConfig: config,
+ pluginConfig: {urlWhitelist: document.getElementById("filter").value}
+ };
+
+ browser.storage.local.set(payload, () => {
userale.options(config);
- browser.runtime.sendMessage({ type: MessageTypes.CONFIG_CHANGE, payload: config });
+ browser.runtime.sendMessage({ type: MessageTypes.CONFIG_CHANGE, payload: payload });
});
}
@@ -55,6 +60,9 @@ function getConfig() {
document.getElementById("tool").value = config.toolName;
document.getElementById("version").value = config.version;
});
+ browser.storage.local.get("pluginConfig", (res) => {
+ document.getElementById("filter").value = res.pluginConfig.urlWhitelist;
+ });
}
document.addEventListener("DOMContentLoaded", getConfig);
diff --git a/src/UserALEWebExtension/optionsPage.html b/src/UserALEWebExtension/optionsPage.html
index ff92cf0..9a3f363 100644
--- a/src/UserALEWebExtension/optionsPage.html
+++ b/src/UserALEWebExtension/optionsPage.html
@@ -45,6 +45,10 @@
<input id="version"/>
<br/>
+ <label>URL whitelist regex:</label>
+ <input id="filter"/>
+ <br/>
+
<div align="right">
<button type="submit">Save</button>
</div>