diff --git a/lib/socks5-server.js b/lib/socks5-server.js index b717f8f..33edaf7 100644 --- a/lib/socks5-server.js +++ b/lib/socks5-server.js @@ -63,15 +63,28 @@ module.exports.create = function (deps, config) { }); } - if (config.socks5 && config.socks5.enabled) { - start(config.socks5.port).catch(function (err) { - console.error('failed to start Socks5 proxy', err); - }); + var configEnabled = false; + function updateConf() { + var wanted = config.socks5 && config.socks5.enabled; + + if (configEnabled && !wanted) { + stop().catch(function (err) { + console.error('failed to stop socks5 proxy on config change', err); + }); + configEnabled = false; + } + if (wanted && !configEnabled) { + start(config.socks5.port).catch(function (err) { + console.error('failed to start Socks5 proxy', err); + }); + configEnabled = true; + } } return { - curState: curState - , start: start - , stop: stop + curState + , start + , stop + , updateConf }; };