41 lines
1.3 KiB
JavaScript
41 lines
1.3 KiB
JavaScript
'use strict';
|
|
|
|
var config;
|
|
|
|
// Everything that uses the config should be reading it when relevant rather than
|
|
// just at the beginning, so we keep the reference for the main object and just
|
|
// change all of its properties to match the new config.
|
|
function update(conf) {
|
|
var newKeys = Object.keys(conf);
|
|
|
|
Object.keys(config).forEach(function (key) {
|
|
if (newKeys.indexOf(key) < 0) {
|
|
delete config[key];
|
|
} else {
|
|
config[key] = conf[key];
|
|
}
|
|
});
|
|
console.log('config', JSON.stringify(config));
|
|
}
|
|
|
|
function create(conf) {
|
|
config = conf;
|
|
var deps = {
|
|
messenger: process
|
|
// Note that if a custom createConnections is used it will be called with different
|
|
// sets of custom options based on what is actually being proxied. Most notably the
|
|
// HTTP proxying connection creation is not something we currently control.
|
|
, net: require('net')
|
|
};
|
|
deps.storage = require('./storage').create(deps, conf);
|
|
deps.proxy = require('./proxy-conn').create(deps, conf);
|
|
deps.socks5 = require('./socks5-server').create(deps, conf);
|
|
deps.loopback = require('./loopback').create(deps, conf);
|
|
|
|
require('./goldilocks.js').create(deps, conf);
|
|
process.removeListener('message', create);
|
|
process.on('message', update);
|
|
}
|
|
|
|
process.on('message', create);
|