From f16c2ceeda27989f40379f2993fa8eac896637d1 Mon Sep 17 00:00:00 2001 From: crupest Date: Wed, 21 Oct 2020 16:28:59 +0800 Subject: import(ProxyChanger): Init. --- works/ProxyChanger/icons/black_circle.png | Bin 0 -> 16533 bytes works/ProxyChanger/manifest.json | 12 ++++++++ works/ProxyChanger/popup/popup.css | 28 ++++++++++++++++++ works/ProxyChanger/popup/popup.html | 15 ++++++++++ works/ProxyChanger/popup/popup.js | 47 ++++++++++++++++++++++++++++++ 5 files changed, 102 insertions(+) create mode 100644 works/ProxyChanger/icons/black_circle.png create mode 100644 works/ProxyChanger/manifest.json create mode 100644 works/ProxyChanger/popup/popup.css create mode 100644 works/ProxyChanger/popup/popup.html create mode 100644 works/ProxyChanger/popup/popup.js (limited to 'works') diff --git a/works/ProxyChanger/icons/black_circle.png b/works/ProxyChanger/icons/black_circle.png new file mode 100644 index 0000000..311762a Binary files /dev/null and b/works/ProxyChanger/icons/black_circle.png differ diff --git a/works/ProxyChanger/manifest.json b/works/ProxyChanger/manifest.json new file mode 100644 index 0000000..b2f1be5 --- /dev/null +++ b/works/ProxyChanger/manifest.json @@ -0,0 +1,12 @@ +{ + "manifest_version": 2, + "name": "Proxy Changer", + "version": "1.0", + "description": "A proxy changer.", + "permissions": ["proxy"], + "browser_action": { + "default_icon": "icons/black_circle.png", + "default_title": "Change proxy.", + "default_popup": "popup/popup.html" + } +} diff --git a/works/ProxyChanger/popup/popup.css b/works/ProxyChanger/popup/popup.css new file mode 100644 index 0000000..97601c2 --- /dev/null +++ b/works/ProxyChanger/popup/popup.css @@ -0,0 +1,28 @@ +html, +body { + width: 200px; +} + +body { + margin: 0; +} + +.button { + margin: 0; + padding: 4px 20px; + text-align: center; + font-size: 1.5em; + cursor: pointer; +} + +.button:hover { + background: #97c4ff; +} + +.selected { + background: #4294ff; +} + +.selected:hover { + background: #4294ff; +} diff --git a/works/ProxyChanger/popup/popup.html b/works/ProxyChanger/popup/popup.html new file mode 100644 index 0000000..8f082df --- /dev/null +++ b/works/ProxyChanger/popup/popup.html @@ -0,0 +1,15 @@ + + + + + + + + + +
Direct
+
System
+
Proxy
+ + + diff --git a/works/ProxyChanger/popup/popup.js b/works/ProxyChanger/popup/popup.js new file mode 100644 index 0000000..31c1384 --- /dev/null +++ b/works/ProxyChanger/popup/popup.js @@ -0,0 +1,47 @@ +const buttons = { + direct: document.getElementById("direct_button"), + system: document.getElementById("system_button"), + proxy: document.getElementById("proxy_button"), +}; + +function setSelectedButton(button) { + for (const key in buttons) { + buttons[key].classList.remove("selected"); + } + buttons[button].classList.add("selected"); +} + +browser.proxy.settings.get({}).then(({ value }) => { + console.log("current proxy settings: ", value); + if (value.proxyType === "none") { + setSelectedButton("direct"); + } else if (value.proxyType === "system") { + setSelectedButton("system"); + } else if (value.proxyType === "manual") { + setSelectedButton("proxy"); + } +}); + +const proxyConfigs = { + direct: { + proxyType: "none", + }, + system: { + proxyType: "system", + }, + proxy: { + proxyType: "manual", + http: "http://localhost:8888", + httpProxyAll: true, + }, +}; + +for (const key in buttons) { + buttons[key].addEventListener("click", () => { + browser.proxy.settings.set({ value: proxyConfigs[key] }).then((success) => { + if (success) { + setSelectedButton(key); + } + }); + }); +} -- cgit v1.2.3