diff --git a/server/proxy.js b/server/proxy.js index 392a0af7f..af72402d1 100644 --- a/server/proxy.js +++ b/server/proxy.js @@ -3,6 +3,7 @@ const HttpProxyAgent = require("http-proxy-agent"); const HttpsProxyAgent = require("https-proxy-agent"); const SocksProxyAgent = require("socks-proxy-agent"); const { debug } = require("../src/util"); +const server = require("./server"); class Proxy { @@ -144,6 +145,22 @@ class Proxy { httpsAgent }; } + + /** + * Reload proxy settings for current monitors + * @returns {Promise} + */ + static async reloadProxy() { + let updatedList = await R.getAssoc("SELECT id, proxy_id FROM monitor"); + + for (let monitorID in server.monitorList) { + let monitor = server.monitorList[monitorID]; + + if (updatedList[monitorID]) { + monitor.proxy_id = updatedList[monitorID].proxy_id; + } + } + } } /** diff --git a/server/socket-handlers/proxy-socket-handler.js b/server/socket-handlers/proxy-socket-handler.js index a05a00b93..817bdd49e 100644 --- a/server/socket-handlers/proxy-socket-handler.js +++ b/server/socket-handlers/proxy-socket-handler.js @@ -1,6 +1,7 @@ const { checkLogin } = require("../util-server"); const { Proxy } = require("../proxy"); const { sendProxyList } = require("../client"); +const server = require("../server"); module.exports.proxySocketHandler = (socket) => { socket.on("addProxy", async (proxy, proxyID, callback) => { @@ -11,7 +12,8 @@ module.exports.proxySocketHandler = (socket) => { await sendProxyList(socket); if (proxy.applyExisting) { - // TODO: await restartMonitors(socket.userID); + await Proxy.reloadProxy(); + await server.sendMonitorList(socket); } callback({ @@ -34,7 +36,7 @@ module.exports.proxySocketHandler = (socket) => { await Proxy.delete(proxyID, socket.userID); await sendProxyList(socket); - // TODO: await restartMonitors(socket.userID); + await Proxy.reloadProxy(); callback({ ok: true,