diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..a737a24 --- /dev/null +++ b/Makefile @@ -0,0 +1,4 @@ +all: + rm -f selenium_helper.xpi + zip -x "*.xpi" -x "Makefile" -r selenium_helper.zip . + mv selenium_helper.zip selenium_helper.xpi diff --git a/data/content.js b/data/content.js index e7c9387..75fca74 100644 --- a/data/content.js +++ b/data/content.js @@ -68,6 +68,37 @@ function set_proxy(PROXY) { } +function set_headers(HEADERS) { + + function rewriteRequestHeader(requestDetails) { + + for (let key in HEADERS) { + to_modify = {"name": key, "value": HEADERS[key]}; + + is_set = false; + + for (let header of requestDetails.requestHeaders) { + if (header.name.toLowerCase() === to_modify.name.toLowerCase()) { + header.value = to_modify.value; + is_set = true; + } + } + + if (!is_set) { + requestDetails.requestHeaders.push(to_modify) + } + } + + return {requestHeaders: requestDetails.requestHeaders} + } + + const TARGET = ""; + chrome.webRequest.onBeforeSendHeaders.addListener(rewriteRequestHeader, + { urls: [TARGET] }, + ["blocking", "requestHeaders"]); +} + + function main() { function setProxy(result) { @@ -84,10 +115,20 @@ function main() { } } + function setHeaders(result) { + if (result.headers) { + console.log("Setup headers..."); + set_headers(result.headers); + } + } + function onError(error) { console.log(`Error: ${error}`); } + let headers = browser.storage.sync.get("headers"); + headers.then(setHeaders, onError); + let proxy = browser.storage.sync.get("proxy"); proxy.then(setProxy, onError); diff --git a/data/options.html b/data/options.html index 4114894..c4cde9e 100644 --- a/data/options.html +++ b/data/options.html @@ -4,13 +4,14 @@
- - - - - - - + + + + + + + +
diff --git a/data/options.js b/data/options.js index bfbf4a5..ae3cdf0 100644 --- a/data/options.js +++ b/data/options.js @@ -1,9 +1,13 @@ function saveOptions(e) { e.preventDefault(); let cookies = []; + let headers = []; try { cookies = JSON.parse(document.getElementById("cookies").value); } catch {}; + try { + headers = JSON.parse(document.getElementById("headers").value); + } catch {}; console.log(cookies) browser.storage.sync.set({ proxy: { @@ -13,8 +17,21 @@ function saveOptions(e) { "username": document.getElementById("username").value, "password": document.getElementById("password").value }, - cookies: cookies + cookies: cookies, + headers: headers }); + + return false; +} + + +function saveOptionsEx(proxy, cookies, headers) { + browser.storage.sync.set({ + proxy: proxy, + cookies: cookies, + headers: headers + }); + browser.runtime.sendMessage({"update": true}); } @@ -36,10 +53,19 @@ function restoreOptions() { } } + function setCurrentHeaders(result) { + if (result.headers) { + document.getElementById("headers").value = JSON.stringify(result.headers); + } + } + function onError(error) { console.log(`Error: ${error}`); } + let headers = browser.storage.sync.get("headers"); + headers.then(setCurrentHeaders, onError); + let proxy = browser.storage.sync.get("proxy"); proxy.then(setCurrentProxy, onError); diff --git a/manifest.json b/manifest.json index 769646d..054ef3f 100644 --- a/manifest.json +++ b/manifest.json @@ -1,6 +1,6 @@ { "manifest_version": 2, - "version": "0.0.4", + "version": "0.0.6", "minimum_chrome_version": "76.0", "applications": { "gecko": { @@ -29,11 +29,6 @@ "options_ui": { "page": "data/options.html" }, - "browser_specific_settings": { - "gecko": { - "id": "eet1ra8cauDu@AlexandrSokolov" - } - }, "background": { "scripts": ["data/content.js"] }