From 99e2e923d0c77b02f3fb4ff648ea916954868606 Mon Sep 17 00:00:00 2001 From: Yuqian Yang Date: Fri, 28 Feb 2025 23:13:39 +0800 Subject: chore(store): move everything to store. --- store/works/ProxyChanger/.gitignore | 1 + store/works/ProxyChanger/README.md | 5 ++ store/works/ProxyChanger/art/circle.kra | Bin 0 -> 456167 bytes store/works/ProxyChanger/icons/black_circle.png | Bin 0 -> 16533 bytes store/works/ProxyChanger/manifest.json | 21 +++++++++ store/works/ProxyChanger/popup/popup.css | 28 ++++++++++++ store/works/ProxyChanger/popup/popup.html | 17 +++++++ store/works/ProxyChanger/popup/popup.js | 58 ++++++++++++++++++++++++ store/works/ProxyChanger/settings/settings.css | 9 ++++ store/works/ProxyChanger/settings/settings.html | 30 ++++++++++++ store/works/ProxyChanger/settings/settings.js | 14 ++++++ 11 files changed, 183 insertions(+) create mode 100644 store/works/ProxyChanger/.gitignore create mode 100644 store/works/ProxyChanger/README.md create mode 100644 store/works/ProxyChanger/art/circle.kra create mode 100644 store/works/ProxyChanger/icons/black_circle.png create mode 100644 store/works/ProxyChanger/manifest.json create mode 100644 store/works/ProxyChanger/popup/popup.css create mode 100644 store/works/ProxyChanger/popup/popup.html create mode 100644 store/works/ProxyChanger/popup/popup.js create mode 100644 store/works/ProxyChanger/settings/settings.css create mode 100644 store/works/ProxyChanger/settings/settings.html create mode 100644 store/works/ProxyChanger/settings/settings.js (limited to 'store/works/ProxyChanger') diff --git a/store/works/ProxyChanger/.gitignore b/store/works/ProxyChanger/.gitignore new file mode 100644 index 0000000..db63815 --- /dev/null +++ b/store/works/ProxyChanger/.gitignore @@ -0,0 +1 @@ +web-ext-artifacts diff --git a/store/works/ProxyChanger/README.md b/store/works/ProxyChanger/README.md new file mode 100644 index 0000000..939f079 --- /dev/null +++ b/store/works/ProxyChanger/README.md @@ -0,0 +1,5 @@ +Finally I create an extension of Firefox to change proxy. + +It is **extremely dumb and stupid**! + +No webpack, no node, no npm. What you write is what you finally use! diff --git a/store/works/ProxyChanger/art/circle.kra b/store/works/ProxyChanger/art/circle.kra new file mode 100644 index 0000000..d7632a8 Binary files /dev/null and b/store/works/ProxyChanger/art/circle.kra differ diff --git a/store/works/ProxyChanger/icons/black_circle.png b/store/works/ProxyChanger/icons/black_circle.png new file mode 100644 index 0000000..311762a Binary files /dev/null and b/store/works/ProxyChanger/icons/black_circle.png differ diff --git a/store/works/ProxyChanger/manifest.json b/store/works/ProxyChanger/manifest.json new file mode 100644 index 0000000..878cf8e --- /dev/null +++ b/store/works/ProxyChanger/manifest.json @@ -0,0 +1,21 @@ +{ + "manifest_version": 2, + "name": "Proxy Changer", + "version": "1.0", + "description": "A proxy changer.", + "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 + }, + "browser_specific_settings": { + "gecko": { + "id": "proxy-changer@crupest.life" + } + } +} diff --git a/store/works/ProxyChanger/popup/popup.css b/store/works/ProxyChanger/popup/popup.css new file mode 100644 index 0000000..97601c2 --- /dev/null +++ b/store/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/store/works/ProxyChanger/popup/popup.html b/store/works/ProxyChanger/popup/popup.html new file mode 100644 index 0000000..16e4bd0 --- /dev/null +++ b/store/works/ProxyChanger/popup/popup.html @@ -0,0 +1,17 @@ + + + + + + + + + +
Direct
+
System
+
Proxy
+
+
Settings
+ + + diff --git a/store/works/ProxyChanger/popup/popup.js b/store/works/ProxyChanger/popup/popup.js new file mode 100644 index 0000000..0615035 --- /dev/null +++ b/store/works/ProxyChanger/popup/popup.js @@ -0,0 +1,58 @@ +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"); + } +}); + +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", () => { + 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/store/works/ProxyChanger/settings/settings.css b/store/works/ProxyChanger/settings/settings.css new file mode 100644 index 0000000..50ee923 --- /dev/null +++ b/store/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/store/works/ProxyChanger/settings/settings.html b/store/works/ProxyChanger/settings/settings.html new file mode 100644 index 0000000..1883a2a --- /dev/null +++ b/store/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/store/works/ProxyChanger/settings/settings.js b/store/works/ProxyChanger/settings/settings.js new file mode 100644 index 0000000..ec10c0c --- /dev/null +++ b/store/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