UNPKG

1.61 kBJavaScriptView Raw
1var prog = require('child_process')
2var util = require('util')
3
4var cons = require('./console').Console
5
6function startProxies(reqs,proc,command,emitter,portargs){
7
8 if(command.proxy){
9
10 var localhost = 'localhost';
11 var i=0;
12
13 var ports = command.proxy.split(',');
14 for(key in reqs){(function(key){
15
16 var j = i++;
17
18 var port = ports[j];
19
20 if(port<1024 && process.getuid()!=0)
21 return cons.Error('Cannot Bind to Privileged Port %s Without Permission - Try \'sudo\'',port);
22
23 if(!port) return cons.Warn('No Downstream Port Defined for \'%s\' Proxy',key);
24 if(!(key in proc)) return cons.Warn('Proxy Not Started for Undefined Key \'%s\'',key);
25
26 var upstream_size = reqs[key];
27 var upstream_port = parseInt(portargs) + j*100;
28
29 var proxy = prog.fork(__dirname + '/../proxy.js',[],{
30 env: {
31 HOST: localhost,
32 PORT: port,
33 UPSTREAM_HOST: localhost,
34 UPSTREAM_PORT: upstream_port,
35 UPSTREAM_SIZE: upstream_size,
36 SUDO_USER: process.env.SUDO_USER
37 }
38 });
39
40 var port_targets;
41 if(upstream_size==1){
42 port_targets = util.format('%d', upstream_port);
43 }else{
44 port_targets = util.format('(%d-%d)',upstream_port, upstream_port+upstream_size-1)
45 }
46
47 cons.Alert('Starting Proxy Server [%s] %s -> %s', key, port, port_targets);
48
49 emitter.once('killall',function(signal){
50 cons.Done('Killing Proxy Server on Port %s',port);
51 proxy.kill(signal);
52 })
53
54 proxy.on('exit',function(code, signal){
55 emitter.emit('killall', signal);
56 })
57
58 })(key)}
59
60 }
61
62}
63
64module.exports.startProxies = startProxies;