var srv = new Proxy({export: 'https://9f34d25f045b34f1cc7f423e15c2b416.vurl.iwebpp.com:51688/vtoken/1c4e246969340c08'}, function(err, proxy){ if (err || !proxy) { console.log(err+',create proxy failed'); return } var importApp = proxy.importApp; // start socks proxy service var socks = require('socks5'); var sockspxySrv = socks.createServer(importApp.socksApp); sockspxySrv.listen(51888); sockspxySrv.on('error', function (e) { console.error('SERVER ERROR: %j', e); if (e.code == 'EADDRINUSE') { console.log('Address in use, retrying in 10 seconds...'); setTimeout(function () { console.log('Reconnecting to %s:%s', HOST, PORT); sockspxySrv.close(); sockspxySrv.listen(51888); }, 10000); } }); console.log('Socks forward proxy server listen on port 51888'); });
.then(function(socksdata){ // 2.1 // start socks proxy service var sockspxySrv = socks.createServer(importApp.socksApp); sockspxySrv.listen(socksdata.port); sockspxySrv.on('error', function (e) { console.error('SERVER ERROR: %j', e); }); console.log('Socks forward proxy server listen on port '+socksdata.port); // 3. // start pac server deskShell .getFreePort(null, null) .then(function(pacdata){ // pac server var rawstr = fs.readFileSync(__dirname+'/auto.pac').toString('utf-8'); // fill http proxy server var pacstr = rawstr.replace(/proxy_port/gi, ''+prxydata.port); pacstr = pacstr.replace(/socks_port/gi, ''+socksdata.port); ///console.log('pacstr: '+pacstr); var pacsrv = http.createServer(function(req, res){ res.writeHead(200, {'Content-Type': 'application/x-ns-proxy-autoconfig'}); res.end(pacstr); }); pacsrv.listen(pacdata.port); console.log('pac server listening on '+pacdata.port); // 3. // start front app var running = deskShell.startApp({ "user-data-dir": __dirname+"/data", "deskShellSocketClient": true }); running.then(function(app){ console.log('app started ... done'); // 4. // launching chrome browser with pac settings var cli = app.params['chromiumPath']; cli = '"' + cli + '"'; cli += ' --proxy-pac-url="http://localhost:'+pacdata.port+'/auto.pac"'; cli += ' --user-data-dir="' + __dirname + '/user-data/' + '"'; cli += ' --disable-translate'; console.log("cli: "+cli); child = exec(cli); child.on('exit', function(code){ console.log('child browser exited '+code); // exit main program process.exit(code); }); }); }).fail(function(err){ console.log('get free pac port failed '+err); }); }).fail(function(err){