Ejemplo n.º 1
0
/**
 * Enable the debugger
 * @param ui
 * @param bs
 * @returns {{url: string, port: number}}
 */
function enableWeinre (ui, bs) {

    if (weinreApp) {
        weinreApp.close();
        weinreApp = false;
    }

    var port     = ui.getOptionIn([WEINRE_NAME, "port"]);

    var logger   = require(path.resolve(__dirname, "../../../node_modules", "weinre", "lib", "utils.js"));

    logger.log = function (message) {
        ui.logger.debug("[weinre]: %s", message);
    };

    var weinre   = require("weinre");
    var external = getHostUrl(ui, bs);

    weinreApp = weinre.run({
        httpPort: port,
        boundHost: external.hostname,
        verbose: false,
        debug: false,
        readTimeout: 5,
        deathTimeout: 15 });

    return ui.options.get(WEINRE_NAME).toJS();
}
Ejemplo n.º 2
0
function startWeinreServer (port) {
    let weinreServer = weinre.run({
        httpPort: port,
        boundHost: '-all-',
        verbose: false,
        debug: false,
        readTimeout: 5,
        deathTimeout: 15
    });
    weinreServer.on('listening', () => {

        fs.readFile(path.resolve(__dirname, '../../template/inject.js.template.html'), 'utf8', function (err,tpl) {
            if (err) {
                return console.log(err);
            }
            var injectScriptTag = htmlUtil.createScriptTag(tpl, showIframe, config.SPY_WEINRE_DOMAIN, port);
            new SpyProxy({
                port: spyProxyPort,
                injectScriptTag: injectScriptTag
            });
            // auto open debugger page
            if (process.platform === 'win32' || process.platform === 'win64') {
                child_process.exec(`start http://127.0.0.1:${port}/client`);
            } else {
                child_process.exec(`open http://127.0.0.1:${port}/client`);            }
                console.log(`${logColor.FgGreen}%s${logColor.Reset}`,`浏览器打开 ---> http://127.0.0.1:${port}/client`);
            });

        });
        weinreServer.on('error', (e) => {
            console.error(e);
        })
    }
Ejemplo n.º 3
0
  }, function(error, port) {
    if (error) {
      fis.log.warn('The port %s for weinre is already in use!', basePort);
      return callback(error);
    }

    weinrePort = port;

    weinreServer = weinre.run({
      httpPort: weinrePort,
      boundHost: defaultHostname,
      verbose: false,
      debug: false,
      readTimeout: 5,
      deathTimeout: 15
    });

    openUrl('http://' + defaultHostname + ':' + weinrePort + '/client/#' + weinreUsername);

    process.on('uncaughtException', function(err) {
      if (err.message !== 'read ECONNRESET') throw err;
    });

    callback(null, weinreServer, weinrePort);
  });
Ejemplo n.º 4
0
    d.run(function () {

        var weinreServer = weinre.run({
            httpPort: port,
            boundHost: '-all-',
            verbose: false,
            debug: false,
            readTimeout: 5,
            deathTimeout: 15
        });
        weinreServer.on('listening', function () {

            fs.readFile(path.resolve(__dirname, '../../template/inject.js.template.html'), 'utf8', function (err, tpl) {
                if (err) {
                    return console.log(err);
                }
                var injectScriptTag = htmlUtil.createScriptTag(tpl, showIframe, config.SPY_WEINRE_DOMAIN);
                spyProxy.createProxy({
                    port: spyProxyPort,
                    injectScriptTag: injectScriptTag,
                    weinrePort: port,
                    autoDetectBrowser: autoDetectBrowser
                });
                // auto open debugger page
                if (process.platform === 'win32' || process.platform === 'win64') {
                    child_process.exec('start http://127.0.0.1:' + port + '/client');
                } else {
                    child_process.exec('open http://127.0.0.1:' + port + '/client');
                    console.log(colors.green('浏览器打开 ---> http://127.0.0.1:' + port + '/client'));
                }
            });
            weinreServer.on('error', function (e) {
                console.error(e);
            });
        });
    });
Ejemplo n.º 5
0
var fileServer = require("./lib/file-server_bird/index");
var HttpTranspondBird = require("./lib/http-transpond_bird/index");
var serverSettings = require("./config.js").Server;
var child = require('child_process');
var config = require('./config');
var getIP = require("./lib/file-server_bird/getIP");

if (config.weinre && config.weinre.open) {
    var weinre = require('weinre');
    var weinrePort = config.weinre.port || 8080;
    weinre.run({
        httpPort: weinrePort,
        boundHost: getIP,
        verbose: false,
        debug: false,
        readTimeout: 5,
        deathTimeout: 15
    });
}

var httpTranspond = new HttpTranspondBird();

fileServer.start(serverSettings, httpTranspond.transpond);
Ejemplo n.º 6
0
var puer = module.exports = function ( options ){

  options = options || {}
  var app = express();
  var server = http.createServer( app );

  helper.extend(options, {
    views: 'views',
    engine: { },
    port: 8000,
    app: app,
    dir: process.cwd(),
    injector: []
  })

  var base = options.config? path.resolve( options.dir , path.dirname(options.config)): options.dir;

  options.views = path.resolve(base, options.views);

  if( typeof options.rules === 'string') {
    options.rules = path.resolve( options.rules )
  } 


  app.set('views', options.views);
  
  // engine
  var engine = options.engine;
  engine.vm = velocity({root: [options.views]});

  for(var i in engine) if (engine.hasOwnProperty(i)){
    app.engine(i, engine[i])
  }

  app.use( injector(options) );

  // app.use( bodyParser.json() );
  // app.use( bodyParser.urlencoded({ extended: false }))

  if(options.inspect === true) options.inspect = 9000;
  var inspect = options.inspect;
  if( inspect ){

    app.use(function(req, res, next){
      res.injector.push('<script type="text/javascript" src="http://' + 
          req.get('host').replace(/:\d+/,'') + ':' + 
          inspect + '/target/target-script-min.js#anonymous"></script>');
      next();
    })

    // Thx for browsyer-sync for solving the headache with weinre
    // https://github.com/BrowserSync/UI/blob/baa9407ee2ace8dd575dc464c46e6d6ab547219e/lib/plugins/remote-debug/weinre.js#L166
    var logger   = require(path.resolve(__dirname, "../node_modules/weinre/lib/utils.js"));

    logger.log = function (message) {
        helper.log( "【weinre】-" + message);
    };

    weinre.run({
      httpPort:  inspect,
      boundHost: '-all-',
      verbose: false,
      debug: false,
      readTimeout: 20,
      deathTimeout: 50
    });
  }

  if(options.reload){
    options.server = server;
    app.use( livereload (options))
  }

  if (options.allowCORS) {
    // Allow Cross Origin Resource Sharing
    // https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
    app.use(function (req, res, next) {
      res.setHeader("Access-Control-Allow-Origin", "*");
      return next();
    });
  }

  if(options.rules){ app.use( rewrite( options ) ); }
  app.use( folder( options ) );
  app.use( express.static( options.dir )  );
  app.use(function(err, req, res, next) {
    helper.log(err.message || err, 'error');
    res.status(500).send('Something is broken!');
  });
  server.on('error', function (e) {
    // if listen port is in using
    if (e.code == 'EADDRINUSE') {
      // server.close();
      helper.log('port ' + chalk.bold(options.port)+ ' is in use, retrying port ... ' + chalk.bold("" + (++options.port) ), 'warn');
      setTimeout( start, 1000);
    }else{
      helper.log(e.message, 'error');
    }
  });




  server.on('listening', function(){
    var url = 'http://localhost:' + options.port;
    helper.log("puer successfully started at " + chalk.underline.magenta.bold( url ), 'success')
    if(options.launch) helper.openBrowser( url );
  })


  var tries = 1;
  function start(){
    if( tries++ >= 10 ) {
      helper.log("Too many attempts, please try other ports", 'error') 
      return process.exit( 0 );
    }
    server.listen( options.port );
  }

  start();

}
Ejemplo n.º 7
0
    d.run(function () {

        var weinreServer = weinre.run({
            httpPort: port,
            boundHost: '-all-',
            verbose: false,
            debug: false,
            readTimeout: 5,
            deathTimeout: 15
        });
        weinreServer.on('listening', function () {

            fs.readFile(path.resolve(__dirname, '../../template/inject.js.template.html'), 'utf8', function (err, tpl) {
                if (err) {
                    return console.log(err);
                }
                var injectScriptTag = htmlUtil.createScriptTag(tpl, showIframe, config.SPY_WEINRE_DOMAIN);
                spyProxy.createProxy({
                    port: spyProxyPort,
                    injectScriptTag: injectScriptTag,
                    weinrePort: port,
                    autoDetectBrowser: autoDetectBrowser,
                    externalProxy: externalProxy,
                    cache: cache,
                    successCB: function successCB(externalProxyPorts) {
                        if (!externalProxy) {
                            var webPort = externalProxyPorts.webPort;
                            var guiServer = new http.Server();
                            guiServer.listen(function () {
                                var guiPort = guiServer.address().port;
                                if (process.platform === 'win32' || process.platform === 'win64') {
                                    child_process.exec('start http://127.0.0.1:' + guiPort);
                                    console.log(colors.green('浏览器打开 ---> http://127.0.0.1:' + guiPort));
                                } else {
                                    child_process.exec('open http://127.0.0.1:' + guiPort);
                                    console.log(colors.green('浏览器打开 ---> http://127.0.0.1:' + guiPort));
                                }
                            });
                            guiServer.on('error', function (e) {
                                console.log(e);
                            });
                            var fp = path.join(__dirname, '../../template/wrap.html');
                            var fileTemp = fs.readFileSync(fp).toString();
                            var fileString = _.template(fileTemp)({
                                weinreUrl: 'http://127.0.0.1:' + port + '/client',
                                anyProxyUrl: 'http://127.0.0.1:' + webPort
                            });
                            guiServer.on('request', function (req, res) {
                                res.setHeader('Content-Type', 'text/html;charset=utf-8');
                                res.end(fileString);
                            });
                        } else {
                            // auto open debugger page
                            if (process.platform === 'win32' || process.platform === 'win64') {
                                child_process.exec('start http://127.0.0.1:' + port + '/client');
                                console.log(colors.green('浏览器打开 ---> http://127.0.0.1:' + port + '/client'));
                            } else {
                                child_process.exec('open http://127.0.0.1:' + port + '/client');
                                console.log(colors.green('浏览器打开 ---> http://127.0.0.1:' + port + '/client'));
                            }
                        }
                    }
                });
            });
            weinreServer.on('error', function (e) {
                console.error(e);
            });
        });
    });