From fff04614a802ca0ad5a154b4c1108f0c5a3a9b58 Mon Sep 17 00:00:00 2001
From: dev-AshishRanjan <94990764+dev-AshishRanjan@users.noreply.github.com>
Date: Sun, 21 Jan 2024 12:04:16 +0530
Subject: [PATCH] feat: add macos all proxy system
---
src/app/css/index.css | 20 +++-
src/app/notice.html | 2 +-
src/index.js | 208 +++++++++++++++++++++++++++---------------
3 files changed, 151 insertions(+), 79 deletions(-)
diff --git a/src/app/css/index.css b/src/app/css/index.css
index fea55a6..8874de4 100644
--- a/src/app/css/index.css
+++ b/src/app/css/index.css
@@ -19,11 +19,12 @@
}
:root {
- --primary-1: #03001c;
+ --primary-1: #0d121c;
--primary-2: #301e67;
--card: #301e678d;
--primary-3: #5b8fb9;
- --primary-3: #9c83ea;
+ --primary-3: #0c34d6;
+ --primary-3-light: #9c83ea;
--primary-4: #b6eada;
--sidenav: #03001cce;
--gradient: #1c2f4b;
@@ -35,7 +36,8 @@
--primary-1: #f2f1ef;
--primary-2: #d9b18e;
--card: #d9b18e8d;
- --primary-3: #a67564;
+ --primary-3: #8b6254;
+ --primary-3-light: #68493f;
--primary-4: #723e31;
--sidenav: #bce3ffce;
--gradient: #d9d2cc;
@@ -218,7 +220,7 @@ textarea,
outline: none;
border: 1px solid var(--primary-2);
background: var(--primary-2);
- color: var(--primary-3);
+ color: var(--primary-3-light);
resize: none;
width: 15rem;
}
@@ -311,12 +313,14 @@ input[type=number] {
border-radius: 0.5rem;
position: absolute;
top: 0;
+ background: var(--primary-2);
+ color: var(--primary-3-light);
/* background: var(--primary-2); */
transform: translateY(-100%);
text-align: center;
span {
- color: var(--primary-1);
+ color: var(--primary-4);
font-weight: 400;
}
}
@@ -330,6 +334,7 @@ input[type=number] {
justify-content: center;
z-index: 5;
background: var(--primary-2);
+ color: var(--primary-3-light);
cursor: pointer;
/* animation: 1.5s pulse infinite ease-in-out; */
}
@@ -346,6 +351,10 @@ input[type=number] {
}
/* notice */
+.noticeHead {
+ color: var(--primary-3-light) !important;
+}
+
.noticeList {
display: flex;
justify-content: center;
@@ -353,6 +362,7 @@ input[type=number] {
flex-direction: column;
gap: 1rem;
width: 100%;
+ color: var(--primary-3-light) !important;
.notice {
width: 100%;
diff --git a/src/app/notice.html b/src/app/notice.html
index e89ad2d..fd7e9c2 100644
--- a/src/app/notice.html
+++ b/src/app/notice.html
@@ -15,7 +15,7 @@
Proxy Manager | Notice
- Notice
+ Notice
diff --git a/src/index.js b/src/index.js
index 6f0c34e..b7b80a4 100644
--- a/src/index.js
+++ b/src/index.js
@@ -125,7 +125,7 @@ const menu = [
{
label: "About",
click: () => createDynamicWindow("about.html"),
- accelerator: "CmdOrCtrl+A",
+ accelerator: "CmdOrCtrl+B",
},
{
label: "Notice",
@@ -135,7 +135,7 @@ const menu = [
{
label: "Contact Us",
click: () => createDynamicWindow("contact.html"),
- accelerator: "CmdOrCtrl+C",
+ accelerator: "CmdOrCtrl+M",
},
{
type: "separator",
@@ -186,7 +186,7 @@ const menu = [
{
label: "About",
click: () => createDynamicWindow("about.html"),
- accelerator: "CmdOrCtrl+A",
+ accelerator: "CmdOrCtrl+B",
},
{
label: "Notice",
@@ -196,7 +196,7 @@ const menu = [
{
label: "Contact Us",
click: () => createDynamicWindow("contact.html"),
- accelerator: "CmdOrCtrl+C",
+ accelerator: "CmdOrCtrl+M",
},
{
type: "separator",
@@ -229,7 +229,7 @@ const menu = [
},
]
: []),
- ...(isLinux || isMac
+ ...(isLinux
? [
{
label: "More",
@@ -434,7 +434,11 @@ ipcMain.on("proxy:set", (e, options) => {
);
// setProxyForVSCode(`https://${options.ipAddress}:${options.port}`);
setProxyForPip(`https://${options.ipAddress}:${options.port}`);
- setSystemEnvironmentVariables(`http://${options.ipAddress}:${options.port}`);
+ if (!isLinux && !isMac) {
+ setSystemEnvironmentVariables(
+ `http://${options.ipAddress}:${options.port}`
+ );
+ }
// for linux manage all proxy with sudo
mainWindow.webContents
.executeJavaScript('localStorage.getItem("proxyManagerSudo");', true)
@@ -444,17 +448,24 @@ ipcMain.on("proxy:set", (e, options) => {
result !== null && isLinux
? await setLinuxAllProxyPrompt(options.ipAddress, options.port)
: null;
- result !== null && isMac
- ? await setMacAllProxyPrompt(options.ipAddress, options.port)
- : null;
});
+
+ if (isMac) {
+ setMacAllProxy(
+ `http://${options.ipAddress}:${options.port}`,
+ options.ipAddress,
+ options.port
+ );
+ }
});
ipcMain.on("proxy:unset", (e, options) => {
console.log(options);
unsetProxy();
// unsetProxyForVSCode();
unsetProxyForPip();
- unsetSystemEnvironmentVariables();
+ if (!isLinux && !isMac) {
+ unsetSystemEnvironmentVariables();
+ }
// for linux manage all proxy with sudo
mainWindow.webContents
.executeJavaScript('localStorage.getItem("proxyManagerSudo");', true)
@@ -462,8 +473,10 @@ ipcMain.on("proxy:unset", (e, options) => {
console.log({ result });
proxyManagerSudo = result;
result !== null && isLinux ? await unsetLinuxAllProxyPrompt() : null;
- result !== null && isMac ? await unsetMacAllProxyPrompt() : null;
});
+ if (isMac) {
+ unsetMacAllProxy();
+ }
});
ipcMain.on("proxy:check", (e, options) => {
console.log(options);
@@ -550,8 +563,8 @@ async function setProxy(proxyServer, host, port) {
allCommands.push(`gsettings set org.gnome.system.proxy.https port ${port}`);
} else if (process.platform === "darwin") {
// macOS
- allCommands.push(`networksetup -setwebproxy Wi-Fi ${host} ${port}`);
- allCommands.push(`networksetup -setsecurewebproxy Wi-Fi ${host} ${port}`);
+ allCommands.push(`networksetup -setwebproxy "Wi-Fi" ${host} ${port}`);
+ allCommands.push(`networksetup -setsecurewebproxy "Wi-Fi" ${host} ${port}`);
} else {
console.error("Unsupported operating system");
return;
@@ -631,8 +644,8 @@ async function unsetProxy() {
allCommands.push('gsettings set org.gnome.system.proxy mode "none"');
} else if (process.platform === "darwin") {
// macOS
- allCommands.push('networksetup -setwebproxy Wi-Fi "" 0');
- allCommands.push('networksetup -setsecurewebproxy Wi-Fi "" 0');
+ allCommands.push('networksetup -setwebproxy "Wi-Fi" "" ""');
+ allCommands.push('networksetup -setsecurewebproxy "Wi-Fi" "" ""');
} else {
console.error("Unsupported operating system");
return;
@@ -1042,66 +1055,115 @@ ${commandsApt}`,
// });
}
-async function setMacAllProxyPrompt(host, port) {
- const proxyserver = `http://${host}:${port}`;
- const commandsEnv = `
- http_proxy=${proxyserver}
- https_proxy=${proxyserver}
- ftp_proxy=${proxyserver}
- no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com,127.0.0.0/8,::1"
- HTTP_PROXY=${proxyserver}
- HTTPS_PROXY=${proxyserver}
- FTP_PROXY=${proxyserver}
- NO_PROXY="localhost,127.0.0.1,localaddress,.localdomain.com,127.0.0.0/8,::1"
- ALL_PROXY=${proxyserver}
- all_proxy=${proxyserver}
- `;
- const cmd = `tee -a /etc/environment << EOF
- ${commandsEnv}
-EOF`;
- MacEnvCmd =
- '/usr/bin/osascript -e \'do shell script "bash -c \\"' +
- cmd +
- '\\"" with administrator privileges\'';
-
- exec(MacEnvCmd, (error, stdout, stderr) => {
- if (error) {
- console.error("Got an Error:", stderr);
- // alert(stderr);
- mainWindow.webContents.send("proxy:warning", {
- msg: "Sudo implementation failed",
- });
- return;
- }
- console.log({ stdout });
- console.log("Command executed successfully for environment variables.");
- mainWindow.webContents.send("proxy:success", {
- msg: "Success: Set env using sudo",
- });
+async function setMacAllProxy(proxyServer, host, port) {
+ console.log(proxyServer);
+ const allCommands = [
+ `npm set proxy ${proxyServer}`,
+ `npm set https-proxy ${proxyServer}`,
+ `networksetup -setmanual "USB 10/100/1000 LAN" 192.168.212.82 255.255.240.0 192.168.208.1`,
+ `networksetup -setwebproxy "USB 10/100/1000 LAN" ${host} ${port}`,
+ `networksetup -setsecurewebproxy "USB 10/100/1000 LAN" ${host} ${port}`,
+ ];
+ allCommands.map((command) =>
+ exec(command, (error, stdout, stderr) => {
+ if (error) {
+ console.error("Got an Error : ", stderr);
+ return;
+ }
+ console.log({ stdout });
+ console.log(`command executed successfully: ${command}`);
+ })
+ );
+ mainWindow.webContents.send("proxy:success", {
+ msg: `success : set system env, npm`,
});
}
-async function unsetMacAllProxyPrompt() {
- const commandsEnv = `sed -i '/http_proxy=/d; /https_proxy=/d; /ftp_proxy=/d; /no_proxy=/d; /HTTP_PROXY=/d; /HTTPS_PROXY=/d; /FTP_PROXY=/d; /ALL_PROXY=/d; /all_proxy=/d; /NO_PROXY=/d' /etc/environment
- `;
- const MacEnvCmd =
- '/usr/bin/osascript -e \'do shell script "bash -c \\"' +
- commandsEnv +
- '\\"" with administrator privileges\'';
-
- exec(`${MacEnvCmd}`, (error, stdout, stderr) => {
- if (error) {
- console.error("Got an Error:", stderr);
- // alert(stderr);
- mainWindow.webContents.send("proxy:warning", {
- msg: "Sudo implementation failed",
- });
- return;
- }
- console.log({ stdout });
- console.log("Command executed successfully for environment variables.");
- mainWindow.webContents.send("proxy:success", {
- msg: "Success: Unset env using sudo",
- });
+async function unsetMacAllProxy() {
+ console.log(proxyServer);
+ // const allCommands = [
+ // `npm config delete proxy`,
+ // `npm config delete https-proxy`,
+ // `networksetup -setmanual "USB 10/100/1000 LAN" 192.168.212.82 255.255.240.0 192.168.208.1`,
+ // `networksetup -setwebproxy "USB 10/100/1000 LAN" "" ""`,
+ // `networksetup -setsecurewebproxy "USB 10/100/1000 LAN" "" ""`,
+ // ];
+ const allCommands = [
+ `npm config delete proxy`,
+ `npm config delete https-proxy`,
+ ];
+ allCommands.map((command) =>
+ exec(command, (error, stdout, stderr) => {
+ if (error) {
+ console.error("Got an Error : ", stderr);
+ return;
+ }
+ console.log({ stdout });
+ console.log(`command executed successfully: ${command}`);
+ })
+ );
+ mainWindow.webContents.send("proxy:success", {
+ msg: `success : unset system env, npm`,
});
}
+
+// async function setMacAllProxyPrompt(host, port) {
+// const proxyserver = `http://${host}:${port}`;
+// const commandsEnv = `
+// http_proxy=${proxyserver}
+// https_proxy=${proxyserver}
+// ftp_proxy=${proxyserver}
+// no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com,127.0.0.0/8,::1"
+// HTTP_PROXY=${proxyserver}
+// HTTPS_PROXY=${proxyserver}
+// FTP_PROXY=${proxyserver}
+// NO_PROXY="localhost,127.0.0.1,localaddress,.localdomain.com,127.0.0.0/8,::1"
+// ALL_PROXY=${proxyserver}
+// all_proxy=${proxyserver}
+// `;
+// const cmd = `tee -a /etc/environment << EOF
+// ${commandsEnv}
+// EOF`;
+// MacEnvCmd = `osascript -e "do shell script \"${cmd}\" with administrator privileges"`;
+
+// exec(MacEnvCmd, (error, stdout, stderr) => {
+// if (error) {
+// console.error("Got an Error:", stderr);
+// // alert(stderr);
+// mainWindow.webContents.send("proxy:warning", {
+// msg: "Sudo implementation failed",
+// });
+// return;
+// }
+// console.log({ stdout });
+// console.log("Command executed successfully for environment variables.");
+// mainWindow.webContents.send("proxy:success", {
+// msg: "Success: Set env using sudo",
+// });
+// });
+// }
+
+// async function unsetMacAllProxyPrompt() {
+// const commandsEnv = `sed -i '/http_proxy=/d; /https_proxy=/d; /ftp_proxy=/d; /no_proxy=/d; /HTTP_PROXY=/d; /HTTPS_PROXY=/d; /FTP_PROXY=/d; /ALL_PROXY=/d; /all_proxy=/d; /NO_PROXY=/d' /etc/environment
+// `;
+// const MacEnvCmd =
+// '/usr/bin/osascript -e \'do shell script "bash -c \\"' +
+// commandsEnv +
+// '\\"" with administrator privileges\'';
+
+// exec(`${MacEnvCmd}`, (error, stdout, stderr) => {
+// if (error) {
+// console.error("Got an Error:", stderr);
+// // alert(stderr);
+// mainWindow.webContents.send("proxy:warning", {
+// msg: "Sudo implementation failed",
+// });
+// return;
+// }
+// console.log({ stdout });
+// console.log("Command executed successfully for environment variables.");
+// mainWindow.webContents.send("proxy:success", {
+// msg: "Success: Unset env using sudo",
+// });
+// });
+// }