From 4e24defd1b658dbfb85320e23b09dc1c0b6ad87b Mon Sep 17 00:00:00 2001 From: crupest Date: Wed, 21 Oct 2020 17:14:56 +0800 Subject: import(ProxyChanger): Allow to set proxy url. --- works/ProxyChanger/manifest.json | 6 +++- works/ProxyChanger/popup/popup.html | 2 ++ works/ProxyChanger/popup/popup.js | 53 +++++++++++++++++++------------ works/ProxyChanger/settings/settings.css | 9 ++++++ works/ProxyChanger/settings/settings.html | 30 +++++++++++++++++ works/ProxyChanger/settings/settings.js | 14 ++++++++ 6 files changed, 92 insertions(+), 22 deletions(-) create mode 100644 works/ProxyChanger/settings/settings.css create mode 100644 works/ProxyChanger/settings/settings.html create mode 100644 works/ProxyChanger/settings/settings.js (limited to 'works') diff --git a/works/ProxyChanger/manifest.json b/works/ProxyChanger/manifest.json index b2f1be5..d37af97 100644 --- a/works/ProxyChanger/manifest.json +++ b/works/ProxyChanger/manifest.json @@ -3,10 +3,14 @@ "name": "Proxy Changer", "version": "1.0", "description": "A proxy changer.", - "permissions": ["proxy"], + "permissions": ["proxy", "storage"], "browser_action": { "default_icon": "icons/black_circle.png", "default_title": "Change proxy.", "default_popup": "popup/popup.html" + }, + "options_ui": { + "page": "settings/settings.html", + "browser_style": true } } diff --git a/works/ProxyChanger/popup/popup.html b/works/ProxyChanger/popup/popup.html index 8f082df..16e4bd0 100644 --- a/works/ProxyChanger/popup/popup.html +++ b/works/ProxyChanger/popup/popup.html @@ -10,6 +10,8 @@
Direct
System
Proxy
+
+
Settings
diff --git a/works/ProxyChanger/popup/popup.js b/works/ProxyChanger/popup/popup.js index 31c1384..0615035 100644 --- a/works/ProxyChanger/popup/popup.js +++ b/works/ProxyChanger/popup/popup.js @@ -22,26 +22,37 @@ browser.proxy.settings.get({}).then(({ value }) => { } }); -const proxyConfigs = { - direct: { - proxyType: "none", - }, - system: { - proxyType: "system", - }, - proxy: { - proxyType: "manual", - http: "http://localhost:8888", - httpProxyAll: true, - }, -}; +browser.storage.local.get("proxyUrl").then(({ proxyUrl }) => { + console.log("Saved proxy url is ", proxyUrl); + + const proxyConfigs = { + direct: { + proxyType: "none", + }, + system: { + proxyType: "system", + }, + proxy: { + proxyType: "manual", + http: proxyUrl, + httpProxyAll: true, + }, + }; -for (const key in buttons) { - buttons[key].addEventListener("click", () => { - browser.proxy.settings.set({ value: proxyConfigs[key] }).then((success) => { - if (success) { - setSelectedButton(key); - } + for (const key in buttons) { + buttons[key].addEventListener("click", () => { + console.log("Try to set proxy to ", proxyConfigs[key]); + browser.proxy.settings + .set({ value: proxyConfigs[key] }) + .then((success) => { + if (success) { + setSelectedButton(key); + } + }); }); - }); -} + } +}); + +document.getElementById("settings_button").addEventListener("click", () => { + browser.runtime.openOptionsPage(); +}); diff --git a/works/ProxyChanger/settings/settings.css b/works/ProxyChanger/settings/settings.css new file mode 100644 index 0000000..50ee923 --- /dev/null +++ b/works/ProxyChanger/settings/settings.css @@ -0,0 +1,9 @@ +.proxy-url-div { + display: flex; + align-items: center; +} + +.proxy-url-div input { + margin-left: 1em; + flex: 1 1 auto; +} diff --git a/works/ProxyChanger/settings/settings.html b/works/ProxyChanger/settings/settings.html new file mode 100644 index 0000000..1883a2a --- /dev/null +++ b/works/ProxyChanger/settings/settings.html @@ -0,0 +1,30 @@ + + + + + + + + + + +

+ If this proxy does not work, go to settings page and allow it to access + private windows. That is a must for setting proxy for extensions. +

+

+ Input your custom manual proxy server. Feel free to make a XSS attack. If + you succeed to do that, report a bug to me, or maybe mozilla! +

+

+ After input, re-click the button in popup in toolbar to activate it! I bet + you don't change this frequently so it's not a pain. +

+

Do at your own risk if you input an invalid url!

+
+ + +
+ + + diff --git a/works/ProxyChanger/settings/settings.js b/works/ProxyChanger/settings/settings.js new file mode 100644 index 0000000..ec10c0c --- /dev/null +++ b/works/ProxyChanger/settings/settings.js @@ -0,0 +1,14 @@ +browser.storage.local.get("proxyUrl").then(({ proxyUrl }) => { + console.log("Saved proxy url is", proxyUrl); + document.getElementById("proxy_url").value = proxyUrl; + document.getElementById("proxy_url").addEventListener("input", (e) => { + const { value } = e.currentTarget; + browser.storage.local + .set({ + proxyUrl: value, + }) + .then(() => { + console.log("New proxy url saved!", value); + }); + }); +}); -- cgit v1.2.3