diff --git a/popup.html b/popup.html
index fb1e535..b90b89e 100644
--- a/popup.html
+++ b/popup.html
@@ -1,5 +1,7 @@
-
+
+
+
+
+
Extension: set proxy by socket!
-
diff --git a/scripts/background.js b/scripts/background.js
index 6bc8795..2b382c8 100644
--- a/scripts/background.js
+++ b/scripts/background.js
@@ -6,31 +6,117 @@ const credential = {
password: "",
};
+const colors = {
+ Green: [0, 128, 0, 255],
+ Red: [255, 0, 0, 255],
+ Orange: [255, 165, 0, 255],
+};
+
+function setProxy(proxy) {
+ const requestProxy = {
+ type: proxy.type,
+ host: proxy.host,
+ port: proxy.port,
+ proxyDNS: ["socks", "socks4"].includes(proxy.type),
+ };
+
+ // delete sendAuth old
+ if (typeof sendAuth === "function") {
+ browser.webRequest.onAuthRequired.removeListener(sendAuth);
+ }
+
+ if (requestProxy.username) {
+ requestProxy.username = credential.username = proxy.username;
+ requestProxy.password = credential.password = proxy.password;
+ sendAuth = async () => {
+ return {
+ authCredentials: credential,
+ };
+ };
+ browser.webRequest.onAuthRequired.addListener(
+ sendAuth,
+ {urls: ["
"]},
+ ["blocking"]
+ );
+ }
+
+ // final handle
+ browser.proxy.onRequest.addListener(
+ (requestInfo) => {
+ return requestProxy;
+ },
+ {urls: [""]}
+ );
+}
+
+function setStorage(proxy) {
+ chrome.storage.sync.set({proxy: proxy}, function () {
+ console.log("Settings saved");
+ });
+}
+
+async function getStorage() {
+ const promise = new Promise((res, rej) => {
+ chrome.storage.sync.get(["proxy"], function (values) {
+ res(values);
+ });
+ });
+ return promise;
+}
+
+function switchBadge(first, second) {
+ chrome.browserAction.getBadgeText({}, function (color) {
+ if (color === first) {
+ browser.browserAction.setBadgeText({text: second});
+ } else {
+ browser.browserAction.setBadgeText({text: first});
+ }
+ });
+}
+
+function intervalSetProxy(interval = 10000) {
+ if (!interval) {
+ interval = 10000;
+ }
+
+ if (typeof _intervalSetProxy === "number") {
+ clearInterval(_intervalSetProxy);
+ }
+
+ var _intervalSetProxy = setInterval(() => {
+ getStorage().then((values) => {
+ if (values?.proxy) {
+ console.count(values?.proxy.password);
+ switchBadge('P1', 'P2');
+ setProxy(values?.proxy);
+ } else {
+ clearInterval(_intervalSetProxy);
+ }
+ });
+ }, interval);
+}
+
document.addEventListener("DOMContentLoaded", function () {
+ browser.browserAction.setBadgeTextColor({color: "#fff"});
+
const socket = io("https://seotool.nswteam.net");
socket.on("connect", function () {
browser.browserAction.setBadgeText({text: "IO"});
- browser.browserAction.setBadgeTextColor({color: "#fff"});
- browser.browserAction.setBadgeBackgroundColor({color: "green"});
+ browser.browserAction.setBadgeBackgroundColor({color: colors.Green});
+ intervalSetProxy();
console.log("socket.io connected");
});
socket.on("disconnect", function () {
browser.browserAction.setBadgeText({text: "IO"});
- browser.browserAction.setBadgeTextColor({color: "#fff"});
- browser.browserAction.setBadgeBackgroundColor({color: "red"});
+ browser.browserAction.setBadgeBackgroundColor({color: colors.Red});
+
console.log("socket.io disconnected");
});
socket.emit("join", {join: "set_proxy"});
+ // TODO get message set proxy
socket.on("message", function (message) {
- console.log({message});
- chrome.runtime.sendMessage({
- to: "content",
- data: {
- socket_message: message,
- },
- });
/**
* {
* browser_name: ...
@@ -42,40 +128,8 @@ document.addEventListener("DOMContentLoaded", function () {
* proxyDNS: ['socks', 'socks4'].includes(message.type)
* }
*/
- const proxyDNS = ["socks", "socks4"].includes(message.type);
- const proxy = {
- type: message.type,
- host: message.host,
- port: message.port,
- proxyDNS: proxyDNS,
- };
-
- // delete sendAuth old
- if (typeof sendAuth === "function") {
- browser.webRequest.onAuthRequired.removeListener(sendAuth);
- }
-
- if (message.username) {
- proxy.username = credential.username = message.username;
- proxy.password = credential.password = message.password;
- sendAuth = async () => {
- return {
- authCredentials: credential,
- };
- };
- browser.webRequest.onAuthRequired.addListener(
- sendAuth,
- {urls: [""]},
- ["blocking"]
- );
- }
-
- // final handle
- browser.proxy.onRequest.addListener(
- (requestInfo) => {
- return proxy;
- },
- {urls: [""]}
- );
+ console.log({message});
+ setStorage(message);
+ intervalSetProxy();
});
}); // end ready