Example #1
0
var connect = require('connect');
var serveStatic = require('serve-static');
var port = 9001;
console.log('Setting up server on http://localhost:' + port + '/');
connect().use(serveStatic(__dirname)).listen(port);
Example #2
0
var MessageServer = function(container) {

    var serverPort = 0;

    this.container = container;
    this.app = connect();
    this.app.use(bodyParser.urlencoded({ extended: true }));
    this.app.use(bodyParser.json({ limit : 10240000 }));
    this.server = null;

    var self = this;
    var log = this.container.log;

    this.start = function(port) {

        serverPort = port;
        self.server = http.createServer(self.app);

        log.info('server.listen : ' + port);
        self.server.listen(port);
    };

    this.stop = function(callback) {

        if(self.server) {

            log.info('server.stop : ' + serverPort);
            self.server.close(function() {

                log.info('server.stoped : ' + serverPort);
                callback();
            });
        } else {

            callback(null);
        }
    };

    this.on = function(name, callback) {

        function parseResponse(req, res, next) {

            req.data = {};

            if(req.body)
                req.data = req.body;

            if(req.params)
                req.data = req.params;

            res.send = function(jsonDataOrCode, jsonData) {

                if(jsonData === undefined)
                    res.end(JSON.stringify(jsonDataOrCode));
                else {

                    res.writeHead(jsonDataOrCode, { 'Content-Type': 'application/json' });
                    res.end(JSON.stringify(jsonData));
                }
            };

            res.error = function(errOrCode, err) {

                if(err === undefined) {

                    var code = 500;

                    if(errOrCode && errOrCode.responseCode)
                        code = errOrCode.responseCode;

                    res.writeHead(code, { 'Content-Type': 'application/json' });
                    res.end(JSON.stringify({code : code, message : errOrCode.message}));
                } else {

                    res.writeHead(errOrCode, { 'Content-Type': 'application/json' });
                    res.end(JSON.stringify({code : errOrCode, message : err.message}));
                }

            };

            res.writeHead(200, { 'Content-Type': 'application/json' });

            try {

                callback(req, res);
            } catch(e) {

                self.container.log.error('uncaughtException', e.stack);
                res.error(500, e);
            }

            next();
        }

        self.app.use('/' + name, parseResponse);
    };
};
Example #3
0
var connect = require("connect");
var http    = require("http");
var app     = connect();

function profile(request, response) {
  console.log("User requested profile")
  response.writeHead(200, {"Content-Type": "text/plain"});
  response.write("Hello World");
  response.end();
}

app.use("/profile", profile);

http.createServer(app); //listen(???)
console.log("Server is running...");
Example #4
0
var connect = require('connect');
var serveStatic = require('serve-static');

var port = process.env.PORT || 8080
var publicDir = __dirname + '/../../public'

connect().use("/", serveStatic(publicDir)).listen(port, function(){
    console.log('Server running on %s...', port);
});
Example #5
0
/*jshint asi:true, nodejs:true, laxbreak:true*/

var connect = require('connect')

module.exports = connect(
    connect.logger(':remote-addr :method :url - :referrer')
    ,
    // connect.router(function(app){
    //     app.get('/user/:id', function(req, res, next){
    //         // populates req.params.id
    //     });
    //     app.put('/user/:id', function(req, res, next){
    //         // populates req.params.id
    //     });
    // })
    // ,
    connect.static(__dirname + '/public')
    ,
    connect.directory(__dirname + '/public')
)
Example #6
0
gulp.task('server', function(next) {
  var connect = require('connect'),
      server = connect();
  server.use(connect.static(dest)).listen(process.env.PORT || 8080, next);
});
Example #7
0
module.exports = (function () {
  'use strict';
  var connect = require('connect')
    , valid = require('./valid')
    , extract = require('./extract');

  var app = connect()
            .use(connect.logger('dev'))
            .use('/snapshot/campaign', connect.static('./snapshot/campaign'))
            .use('/snapshot/campaign', require('./unkonw')())
            .use('/snapshot/template', connect.static('./snapshot/template'))
            .use(connect.query())
            .use(connect.bodyParser())
            .use('/campaign/snapshot', require('./snapshot'))
            .use('/urls', function (req, res, next) {
              if (req.method !== 'POST') return next();
              var listId = req.body.listId
                , campaignId = req.body.campaignId
                , urls = req.body.urls;
              if (listId && campaignId && urls) {
                valid(listId, campaignId, urls, function (results) {
                  var data = {
                    code: 0,
                    urls: results
                  };
                  res.writeHead(200, {
                    'Content-Type': 'application/json; charset=UTF-8',
                    'Access-Control-Allow-Origin': '*'
                  });
                  res.statusCode = 200;
                  return res.end(JSON.stringify(data));
                });
              } else {
                next();
              }
            })
            .use('/getExtract', function (req, res, next) {
              if (req.query.url) {
                var url = req.query.url;
                extract.getExtract(url, function (err, data) {
                  if (err) {
                    data = {
                      code: 1
                    };
                  }
                  res.writeHead(200, {
                    'Content-Type': 'application/json; charset=UTF-8',
                    'Access-Control-Allow-Origin': '*'
                  });
                  res.statusCode = 200;
                  return res.end(JSON.stringify(data));
                });
              } else {
                next();
              }
            })
            .use('/extract', function (req, res, next) {
              if (req.query.url) {
                extract.one(req.query.url, function (data) {
                  res.writeHead(200, {
                    'Content-Type': 'application/json; charset=UTF-8',
                    'Access-Control-Allow-Origin': '*'
                  });
                  res.statusCode = 200;
                  return res.end(JSON.stringify(data));
                });
              } else {
                next();
              } 
            })
            .use('/check', function (req, res, next) {
              if (req.query.url) {
                valid.uv(req.query.url, function (err, v) {
                  if (err) console.log(err);
                  res.writeHead(200, {
                    'Content-Type': 'application/json; charset=UTF-8',
                    'Access-Control-Allow-Origin': '*'
                  });
                  res.statusCode = 200;
                  console.log('v === ' + v);
                  return res.end(JSON.stringify({
                    status: v ? 1 : 0
                  }));
                })
              } else {
                next();
              }
            })
            .use('/saveUrl', require('./saveUrl'))
            .listen(80);
})();
Example #8
0
    }, function (reg) {
        _self.registry = reg;
        _self.log = core.getLogger(_self.serviceName, _self.registry.serviceConfig.logger);
        if (fetchedHostIp) {
            if (!fetchedHostIp.result) {
                _self.log.warn("Unable to find the service host ip. The service will NOT be registered for awareness.");
                _self.log.info("IPs found: ", fetchedHostIp.ips);
                if (serviceIpNotDetected) {
                    _self.log.warn("The default service IP has been used [" + _self.serviceIp + "]");
                }
            }
            else {
                _self.log.info("The IP registered for service [" + _self.serviceName + "] awareness : ", fetchedHostIp.ip);
            }
        }

        var app = connect();
        app.use(favicon_mw());
        app.use(soajs_mw({
            "serviceName": _self.serviceName,
            "log": _self.log
        }));
        app.use(cors_mw());
        app.use(response_mw({"controllerResponse": true}));
        app.use(awareness_mw({
            "awareness": _self.awareness,
            "serviceName": _self.serviceName,
            "log": _self.log,
            "serviceIp": _self.serviceIp
        }));
        app.use(controller_mw());
        app.use(function (req, res, next) {

            setImmediate(function () {
                req.soajs.controller.gotoservice(req, res, null);
            });

            req.on("error", function (error) {
                req.soajs.log.error("Error @ controller:", error);
                if (req.soajs.controller.redirectedRequest) {
                    req.soajs.controller.redirectedRequest.abort();
                }
            });

            req.on("close", function () {
                if (req.soajs.controller.redirectedRequest) {
                    req.soajs.log.info("Request aborted:", req.url);
                    req.soajs.controller.redirectedRequest.abort();
                }
            });
        });

        _self.server = http.createServer(app);
        _self.serverMaintenance = http.createServer(function (req, res) {
            if (req.url === '/favicon.ico') {
                res.writeHead(200, {'Content-Type': 'image/x-icon'});
                return res.end();
            }
            var parsedUrl = url.parse(req.url, true);
            var response;
            var maintenanceResponse = function (req, route) {
                var response = {
                    'result': false,
                    'ts': Date.now(),
                    'service': {
                        'service': _self.serviceName.toUpperCase(),
                        'type': 'rest',
                        'route': route || parsedUrl.pathname
                    }
                };
                return response;
            };
            if (parsedUrl.pathname === '/reloadRegistry') {
                core.registry.reload({
                    "serviceName": _self.serviceName,
                    "serviceVersion": null,
                    "apiList": null,
                    "awareness": _self.awareness,
                    "serviceIp": _self.serviceIp
                }, function (err, reg) {
                    res.writeHead(200, {'Content-Type': 'application/json'});
                    response = maintenanceResponse(req);
                    if (err) {
                        _self.log.warn("Failed to load registry. reusing from previous load. Reason: " + err.message);
                    } else {
                        response['result'] = true;
                        response['data'] = reg;
                    }
                    return res.end(JSON.stringify(response));
                });
            }
            else if (parsedUrl.pathname === '/awarenessStat') {
                res.writeHead(200, {'Content-Type': 'application/json'});
                var tmp = core.registry.get();
                response = maintenanceResponse(req);
                if (tmp && (tmp.services || tmp.daemons)) {
                    response['result'] = true;
                    response['data'] = {"services" : tmp.services, "daemons" : tmp.daemons};
                }
                return res.end(JSON.stringify(response));
            }
            else if (parsedUrl.pathname === '/register') {
                /**
                 * if service
                 *      name
                 *      group
                 *      port
                 *      ip
                 *      extKeyRequired
                 * if host
                 *      name
                 *      ip
                 */
                res.writeHead(200, {'Content-Type': 'application/json'});
                response = maintenanceResponse(req);
                var regOptions = {
                    "name": parsedUrl.query.name,
                    "group": parsedUrl.query.group,
                    "port": parseInt(parsedUrl.query.port),
                    "ip": parsedUrl.query.ip,
                    "type": parsedUrl.query.type,
                    "version": parseInt(parsedUrl.query.version)
                };
                if (regOptions.type === "service") {
                    regOptions["extKeyRequired"] = (parsedUrl.query.extKeyRequired === "true" ? true : false);
                    regOptions["requestTimeout"] = parseInt(parsedUrl.query.requestTimeout);
                    regOptions["requestTimeoutRenewal"] = parseInt(parsedUrl.query.requestTimeoutRenewal);
                }
                core.registry.register(
                    regOptions,
                    function (err, data) {
                        if (!err) {
                            response['result'] = true;
                            response['data'] = data;
                        }
                        else {
                            _self.log.warn("Failed to register service for [" + parsedUrl.query.name + "] " + err.message);
                        }
                        return res.end(JSON.stringify(response));
                    });
            }
            else {
                var heartbeat = function (res) {
                    res.writeHead(200, {'Content-Type': 'application/json'});
                    response = maintenanceResponse(req);
                    response['result'] = true;
                    res.end(JSON.stringify(response));
                };
                if (req.url === '/heartbeat') {
                    return heartbeat(res);
                }
                return heartbeat(res);
            }
        });
        callback();
    });
Example #9
0
	nmcln.once('ready', function(){
	    if (Debug) console.log('name-client ready on vURL:'+nmcln.vurl);
	    
	    // 3.
	    // setup noVNC proxy
	    for (var idx = 0; idx < vncs.length; idx ++) {
	        var vncstrs = vncs[idx].split(':');
	        var vnchost = vncstrs[0];
	        var vncport = vncstrs[1] || 5900; // default VNC port
	    
	        // assume vncserver listen on 5900 above
	        vncport = (vncport < 5900) ? 5900 + vncport : vncport;
	        
	        // create ws server to proxy VNC/RFB data
	        var wspath = '/'+vnchost+'-'+vncport;
	        var vncwss = new WebSocketServer({httpp: true, server: nmcln.bsrv.srv, path: wspath});
	        
	        vncwss.on('connection', noVNC.tcpProxy({host: vnchost, port: vncport}));
	        
	        self.proxyURL[vncs[idx]] = nmcln.vurl + wspath;
	        
	        // 3.1
	        // report peer-service
	        // like {vurl:x,cate:x,name:x,desc:x,tags:x,acls:x,accounting:x,meta:x}
	        nmcln.reportService({
	            vurl: self.proxyURL[vncs[idx]],
	            cate: 'peer-vnc',
	            name: 'vnc'+idx,
	            meta: {
                        vnchost: vnchost === 'localhost' ? OS.hostname() : vnchost,
                        vncport: vncport
                    }
	        });
	        
	        // 3.2
	        // update peer-service: connection loss, etc
	        // TBD...
	    }
	    
	    // 4.
	    // create http App
	    var appHttp = Connect();
	    
	    // 4.1
	    // add third-party connect middle-ware
	    // TBD...
	    
	    // 4.2
	    // add noVNC web service in App
	    appHttp.use(noVNC.webServer);
	    
	    // 5.
	    // hook http App on name-client
	    nmcln.bsrv.srv.on('request', appHttp);
	    
	    // 5.1
	    // handle http CONNECT request in case come from forward proxy
        // notes: the idea is see https request/websocket proxy as reverse proxy to destination http website,
        // so, create connection to peer-vnc httpps server self.
	    nmcln.bsrv.srv.on('connect', function(req, socket, head){
            var roptions = {
			        port: nmcln.port,
			        host: nmcln.ipaddr,
                localAddress: {
                    addr: nmcln.ipaddr
                }
	        };
		        
            if (Debug) console.log('http tunnel proxy, connect to self %s:%d', nmcln.ipaddr, nmcln.port);
            
            var srvSocket = UDT.connect(roptions, function() {
                if (Debug) console.log('http tunnel proxy, got connected!');   
                
                ///srvSocket.write(head);
			    socket.pipe(srvSocket);
			     
			    socket.write('HTTP/1.1 200 Connection Established\r\n' +
			                 'Proxy-agent: Node-Proxy\r\n' +
			                 '\r\n');					    
			    srvSocket.pipe(socket);
            });
            
		    srvSocket.on('error', function(e) {
		        console.log("http tunnel proxy, socket error: " + e);
		        socket.end();
		    });
	    });
	    
	    // 6.
	    // pass proxy URLs back
	    fn(null, self.proxyURL);
	});
Example #10
0
(function () {
  "use strict";

  require('http-json')(require('http'));

  var connect = require('connect')
    , fs = require('fs')
    , path = require('path')
    , cookielessSession = require('connect-cookieless-session')
    , pathname = require('connect-pathname')
    , gcf = require('express-chromeframe')
    , nowww = require('nowww')
    , xcors = require('connect-xcors')
    , cors = xcors()
    , session = cookielessSession()
    , app = connect()
    , version = JSON.parse(
          fs.readFileSync(
              path.join(__dirname, '..', 'package.json')
            , 'utf8'
          )
      ).version
    , semver
    ;

  function parseSemver(version) {
    // semver, major, minor, patch
    // https://github.com/mojombo/semver/issues/32
    // https://github.com/isaacs/node-semver/issues/10
    // optional v
    var m = /^\s*(v)?([0-9]+)(\.([0-9]+))(\.([0-9]+))(([\-+])([a-zA-Z0-9\.]+))?\s*$/.exec(version) || []
      , ver = {
            semver: m[0] || version
          , major: m[2]
          , minor: m[4]
          , patch: m[6]
          , revision: m[7]
        }
      ;

    if (!/^v/.test(ver.semver)) {
      ver.semver = 'v' + ver.semver;
    }

    if ('+' === m[8]) {
      ver.build = m[9];
    }

    if ('-' === m[8]) {
      ver.release = m[9];
    }

    return ver;
  }

  function getVersion(req, res, next) {
    res.json(semver);
  }

  semver = parseSemver(version);

  connect.router = require('connect_router');
  connect.corsPolicy = cors.config;

  cors.config.headers = cors.config.headers.concat(session.headers.slice());

  app
    .use(nowww())
    .use(gcf())
    .use(pathname())
    .use(connect.query())
    .use(connect.json())
    .use(connect.urlencoded())
    .use(cors)
    .use(session)
    .use(connect.static(__dirname + '/../public'))
    .use(connect.static(__dirname + '/../var/public'))
    .use('/version', getVersion)
    .use(connect.favicon())
    ;

  module.exports = app;
}());
Example #11
0
var connect = require('connect');

connect(
    connect['static'](__dirname+'/', { maxAge: 0 })
).listen(8080);

console.log('Server running...');
Example #12
0
gulp.task('serve', () => {
  connect().use(serveStatic('build')).listen(10000);
});
Example #13
0
module.exports = function(options) {

  var defaults = {

    /**
     *
     * BASIC DEFAULTS
     *
     **/

    host: 'localhost',
    port: 8000,
    fallback: false,
    https: false,
    open: false,

    /**
     *
     * MIDDLEWARE DEFAULTS
     *
     * NOTE:
     *  All middleware should defaults should have the 'enable'
     *  property if you want to support shorthand syntax like:
     *
     *    webserver({
     *      livereload: true
     *    });
     *
     */

    // Middleware: Livereload
    livereload: {
      enable: false,
      port: 35729,
      filter: function (filename) {
        if (filename.match(/node_modules/)) {
          return false;
        } else { return true; }
      }
    },

    // Middleware: Directory listing
    // For possible options, see:
    //  https://github.com/expressjs/serve-index
    directoryListing: {
      enable: false,
      path: './',
      options: undefined
    },

    // Middleware: Proxy
    // For possible options, see:
    //  https://github.com/andrewrk/connect-proxy
    proxies: []

  };

  // Deep extend user provided options over the all of the defaults
  // Allow shorthand syntax, using the enable property as a flag
  var config = enableMiddlewareShorthand(defaults, options, [
    'directoryListing',
    'livereload'
  ]);

  if (typeof config.open === 'string' && config.open.length > 0) {
    // ensure leading slash
    config.open = (config.open.indexOf('/') !== 0 ? '/' : '') + config.open;
  }

  var app = connect();

  var openInBrowser = function() {
    if (config.open === false) return;
    open('http' + (config.https ? 's' : '') + '://' + config.host + ':' + config.port + (typeof config.open === 'string' ? config.open : ''));
  };

  var lrServer;

  if (config.livereload.enable) {

    app.use(connectLivereload({
      port: config.livereload.port
    }));

    if (config.https) {
      if (config.https.pfx) {
        lrServer = tinyLr({
          pfx: fs.readFileSync(config.https.pfx),
          passphrase: config.https.passphrase
        });
      }
      else {
        lrServer = tinyLr({
          key: fs.readFileSync(config.https.key || __dirname + '/../ssl/dev-key.pem'),
          cert: fs.readFileSync(config.https.cert || __dirname + '/../ssl/dev-cert.pem')
        });
      }
    } else {
      lrServer = tinyLr();
    }

    lrServer.listen(config.livereload.port, config.host);

  }

  if (config.directoryListing.enable) {
    app.use(serveIndex(path.resolve(config.directoryListing.path), config.directoryListing.options));
  }

  // Proxy requests
  for (var i = 0, len = config.proxies.length; i < len; i++) {
    var proxyoptions = url.parse(config.proxies[i].target);
    if (config.proxies[i].hasOwnProperty('options')) {
      extend(proxyoptions, config.proxies[i].options);
    }
    app.use(config.proxies[i].source, proxy(proxyoptions));
  }


  var files = [];

  // Create server
  var stream = through.obj(function(file, enc, callback) {

    app.use(serveStatic(file.path));

    if (config.livereload.enable) {
      var watchOptions = {
        ignoreDotFiles: true,
        filter: config.livereload.filter
      };
      watch.watchTree(file.path, watchOptions, function (filename) {
        lrServer.changed({
          body: {
            files: filename
          }
        });

      });
    }

    this.push(file);
    callback();
  })
  .on('data', function(f){files.push(f);})
  .on('end', function(){
    if (config.fallback) {
      files.forEach(function(file){
        var fallbackFile = file.path + '/' + config.fallback;
        if (fs.existsSync(fallbackFile)) {
          app.use(function(req, res) {
            res.setHeader('Content-Type', 'text/html; charset=UTF-8');
            fs.createReadStream(fallbackFile).pipe(res);
          });
        }
      });
    }
  });

  var webserver;

  if (config.https) {
    var opts; 

    if (config.https.pfx) {
      opts = {
        pfx: fs.readFileSync(config.https.pfx),
        passphrase: config.https.passphrase
      };
    } else {
      opts = {
        key: fs.readFileSync(config.https.key || __dirname + '/../ssl/dev-key.pem'),
        cert: fs.readFileSync(config.https.cert || __dirname + '/../ssl/dev-cert.pem')
      };
    }
    webserver = https.createServer(opts, app).listen(config.port, config.host, openInBrowser);
  } else {
    webserver = http.createServer(app).listen(config.port, config.host, openInBrowser);
  }

  gutil.log('Webserver started at', gutil.colors.cyan('http' + (config.https ? 's' : '') + '://' + config.host + ':' + config.port));

  stream.on('kill', function() {

    webserver.close();

    if (config.livereload.enable) {
      lrServer.close();
    }

  });

  return stream;

};
Example #14
0
gulp.task('serve', function(){
	var app = connect();
	app.use(morgan('dev'));
	app.use(serveStatic(config.root));
	http.createServer(app).listen(config.port);
});
Example #15
0
currentVersion = "1.2.2";
// Path where attachments are stored
contentPath = "/shared";
// Rules to grant special badges and achievements
badges;

// Mount the static directory to be cached
var mount = st({path: __dirname + '/public/', index: true, index: 'index.html'});

/*****************************
 *  APPLICATION SERVER
 ******************************/

var handlers  = new Store(),
      transport = new Transport(handlers),
      app = http.createServer(connect()
        .use(connect.logger())
        .use(connect.compress())
        .use(connect.responseTime())
        .use(connect.bodyParser({ uploadDir:contentPath+'/public/upload', keepExtensions: true }))
        .use('/upload', srvUtils.uploadFunc)
        .use('/downloads', srvUtils.downloadFunc)     
        .use(function(req, res, next) {
                var ori = req.headers.origin || "http://app.ideafy.com";
                res.setHeader("Access-Control-Allow-Origin", ori);
                res.setHeader("Access-Control-Allow-Headers", "X-Requested-With");
                res.setHeader("Access-Control-Allow-Methods", 'GET,PUT,POST,DELETE,OPTIONS');
                res.setHeader("Ideady Server", "node.js/" + process.versions.node);
                res.setHeader("X-Powered-By", "OlivesJS + Connect + Socket.io");
                if ('OPTIONS' == req.method) {
                        res.send(200);
Example #16
0
module.exports = function( options ) {
  var seneca = this
  var plugin = 'admin'


  var defaultoptions = {
    web:true,
    prefix:'/admin',
    user:{nick:'admin'},
    units:['admin-summary','admin-plugins','admin-logging','admin-action'],
    unitspecs:{
      'admin-summary': {title:'Status Summary',  ng:{module:'senecaAdminSummaryModule', directive:'seneca-admin-summary'}},
      'admin-plugins': {title:'Action Patterns', ng:{module:'senecaAdminPluginsModule', directive:'seneca-admin-plugins'}},
      'admin-logging': {title:'Streaming Log',   ng:{module:'senecaAdminLoggingModule', directive:'seneca-admin-logging'}},
      'admin-action':  {title:'Action Executor', ng:{module:'senecaAdminActionModule',  directive:'seneca-admin-action'}},
    },
    unitcontent:{
      'admin-summary': [{type:'js',file:__dirname+'/web/admin-summary.js'}],
      'admin-plugins': [{type:'js',file:__dirname+'/web/admin-plugins.js'}],
      'admin-logging': [{type:'js',file:__dirname+'/web/admin-logging.js'}],
      'admin-action':  [{type:'js',file:__dirname+'/web/admin-action.js'}],
    },
    mimetype:{
      js:'text/javascript',
      css:'text/css'
    },
    local:false
  }

  // TODO: is this needed?
  seneca.depends(plugin,[
    'data-editor'
  ])

  // TODO: hack! deepextend needs to be fixed 
  var http_server = options.server
  delete options.server

  options = seneca.util.deepextend(defaultoptions,options)

  options.server = http_server


  if( !options.local ) {
    seneca.depends(plugin,[
      'user'
    ])
  }


 

  var content = {}


  seneca.add({role:plugin,cmd:'stats'},cmd_stats)
  seneca.add({role:plugin,cmd:'webstats'},cmd_webstats)


  function cmd_stats(args,done) {
    seneca.act('role:seneca,stats:true',{summary:args.summary},done)
  }

  function cmd_webstats(args,done) {
    seneca.act('role:web,stats:true',done)
  }



  seneca.add({init:plugin}, function( args, done ){
    var seneca = this

    if( seneca.hasplugin('user') ) setup_users();
    else return loadcontent();

    function setup_users() {
      var userent = seneca.make$( 'sys/user' )
      var useract = seneca.pin( { role:'user', cmd:'*' } )

      var users = _.isArray(options.user) ? options.user : [options.user]

      async.mapSeries(users, function(userdata,next) {
        userdata.admin = true

        userent.load$({nick:userdata.nick}, function(err,user){
          if( err ) return done(err);

          if( user ) {
            if( user.admin ) return next();

            user.admin = true
            return user.save$(next)
          }

          userdata.password = _.isString(options.user.password) ? options.user.password : makepass()

          useract.register( userdata, function(err,out){
            if( err ) return done(err);

            seneca.log.info('admin','user',out.user.nick,userdata.password)
            return next();
          })
        })

      }, function(err){
        if( err ) return done(err);
        return loadcontent();
      })
    }

    function loadcontent() {

      seneca.act({role:'util',note:true,cmd:'list',key:'admin/units',default$:{}}, function(err,out){
        if(err) return done(err);

        if( out ) {
          _.each( out, function(unitdef) {
            if( unitdef.unit && unitdef.spec && unitdef.content ) {
              options.units.push(unitdef.unit)
              options.unitspecs[unitdef.unit] = unitdef.spec
              options.unitcontent[unitdef.unit] = unitdef.content
            }
          })

          seneca.act({
            role:'web',
            plugin:plugin,
            config:{
              prefix:options.prefix,
              units:options.units,
              unitspecs:options.unitspecs
            }})
        }


        async.mapSeries(options.units,function(name,next){
          var items = options.unitcontent[name]
          async.mapSeries(items||[],function(item,next){
            var text = content[item.type] || ''
            fs.readFile(item.file,function(err,data){
              if(err) return next(err);
              text += '\n;\n' + data
              content[item.type] = text
              return next()
            })
          }, next)
        }, done)
      })
    }
  })


  // FIX: serious hack here to disable old loghandlers

  var activelogs = {}
  var loghandlers = {}
  function loghandler(client) {
    var code = activelogs['admin-log-'+client.id] = nid()    

    var logh = function(){
      if( code == activelogs['admin-log-'+client.id] ) {
        var msg = JSON.stringify(Array.prototype.slice.call(arguments))
        client.write(msg)
      }
    }
    logh.code = 'admin-log-'+client.id+'-'+code

    return logh
  }




  if( options.web ) {

    if( options.server ) {
      var clients = {}

      var socket = sockjs.createServer();
      socket.on('connection', function(client) {
        clients[client.id] = client

        client.on('close', function(){
          delete clients[client.id]
        })

        client.on('data', function(data){
          var msg = JSON.parse(data)

          function hello() {
            client.token = msg.token
            client.write(JSON.stringify({hello:true}))
          }

          if( msg.hello ) {
            if( !options.local ) {
              seneca.make$('sys/login').load$(msg.token,function(err,out){
                if( out ) return hello()
                client.write(JSON.stringify({goodbye:true}))
              })
            }
            else return hello();
          }
          else if(msg.update && (options.local || client.token==msg.token) ) {
            if( msg.oldroute ) {
              seneca.logroute(msg.oldroute)
            }
            if( msg.newroute ) {
              var logh = loghandler(client)
              seneca.logroute(msg.newroute,logh)
            }
          }
          else {
            client.write(JSON.stringify({ok:true}))
          }
        })
      })

      socket.installHandlers(
        options.server, 
        {
          prefix:options.prefix+'/socket',
          log:function(severity,line){
            seneca.log.debug(severity,line)
          }
        }
      )
    }

    var app = connect()
    app.use(serve_static(__dirname+'/web'))

    seneca.act({
      role:'web',
      plugin:plugin,
      config:{
        prefix:options.prefix,
        units:options.units,
        unitspecs:options.unitspecs
      },
      use:{
        startware:function(req,res,next){
          if( 0 != req.url.indexOf(options.prefix) ) return next();

          if( options.prefix === req.url && '/' !== req.url[req.url.length-1] ) {
            res.writeHead(301,{Location:req.url+'/'})
            return res.end();
          }

          var isadminuser = req.seneca && req.seneca.user && req.seneca.user.admin
          if( !isadminuser ) {

            isadminuser = options.local && (
              '127.0.0.1' === req.connection.remoteAddress ||
                '::1' === req.connection.remoteAddress )

            if( !isadminuser ) {
              res.writeHead(401)
              return res.end();
            }
          }


          if( 0 == req.url.indexOf(options.prefix+'/act') ) {
            req.seneca.act( req.body, function( err, out ){
              if( err ) return next(err);
        
              var outjson = _.isUndefined(out) ? '{}' : JSON.stringify(out)

              res.writeHead(200,{
                'Content-Type':   'application/json',
                'Cache-Control':  'private, max-age=0, no-cache, no-store',
                'Content-Length': buffer.Buffer.byteLength(outjson) 
              })
              res.end( outjson )
            })

          }
          else if( 0 == req.url.indexOf(options.prefix+'/content/') ) {
            var type = req.url.substring( (options.prefix+'/content/').length )
            var text = content[type] || ''

            res.writeHead(200,{
              'Content-Type':   (options.mimetype[type]||'text/plain'),
              'Cache-Control':  'private, max-age=0, no-cache, no-store',
              'Content-Length': buffer.Buffer.byteLength(text) 
            })
            res.end( text )
          }
          else return next();
        },
        pin:{role:plugin,cmd:'*'},
        prefix:'/admin',
        map:{
          stats:true,
          webstats:true
        },
        endware:function(req,res,next){
          if( 0 != req.url.indexOf(options.prefix) ) return next();

          if( 0 == req.url.indexOf(options.prefix+'/socket') ) return next();

          req.url = req.url.replace(/^\/admin/,"")
          return app( req, res );
        }
      }
    })
  }
 


  return plugin;
}
Example #17
0
}, {
	browserName: 'chrome',
	'tunnel-identifier': process.env.TRAVIS_JOB_NUMBER
}];
else if(!process.env.TRAVIS_JOB_NUMBER) // local tests
	seleniumCaps = [{
	browserName: 'internet explorer'
}, {
	browserName: 'firefox'
}, {
	browserName: 'chrome'
}];

// Server for selenium
const connect = require('connect');
const server = connect();
server.use(require('serve-static')(process.cwd()));
server.listen(9435);

let nodeTests = []
let webTests = []
// Find tests
glob('lib/**/*.spec.js')
.then((tests) => {
	nodeTests = tests.filter(test => !test.endsWith('.web.spec.js'))
	webTests = tests.filter(test => !test.endsWith('.node.spec.js'))
	return createWebTestScript()
})
.then(() => {
	// Run web tests in each browser
	if(webTests.length > 0){
Example #18
0
var connect = require('connect');
var http = require('http');
var injector = require('connect-injector');

var rewrite = injector(function(req, res) {
    return true;
  }, function(data, req, res, callback) {
    callback(null, 'rewrite');
  }
);

var app = connect().use(rewrite).use(function(req, res) {
  res.end('test');
});

var port = 9001;
var server = http.createServer(app).listen(port, function() {
  console.log('Listening on port ' + port);
});
Example #19
0
var connect = require('connect');
var server = connect()
  .use(connect.static(__dirname))
  .use(connect.directory(__dirname))
  .listen(8080);
Example #20
0
var connect = require('connect');
var serveStatic = require('serve-static');
connect().use(serveStatic(__dirname)).listen(1337);
console.log('服务器已开启, http://localhost:1337');
Example #21
0
	// Room statistics
	RocketChat.metrics.totalRooms.set(statistics.totalRooms, date);
	RocketChat.metrics.totalChannels.set(statistics.totalChannels, date);
	RocketChat.metrics.totalPrivateGroups.set(statistics.totalPrivateGroups, date);
	RocketChat.metrics.totalDirect.set(statistics.totalDirect, date);
	RocketChat.metrics.totalLivechat.set(statistics.totalLivechat, date);

	// Message statistics
	RocketChat.metrics.totalMessages.set(statistics.totalMessages, date);
	RocketChat.metrics.totalChannelMessages.set(statistics.totalChannelMessages, date);
	RocketChat.metrics.totalPrivateGroupMessages.set(statistics.totalPrivateGroupMessages, date);
	RocketChat.metrics.totalDirectMessages.set(statistics.totalDirectMessages, date);
	RocketChat.metrics.totalLivechatMessages.set(statistics.totalLivechatMessages, date);
};

const app = connect();

// const compression = require('compression');
// app.use(compression());

app.use('/metrics', (req, res) => {
	res.setHeader('Content-Type', 'text/plain');
	res.end(RocketChat.promclient.register.metrics());
});

const server = http.createServer(app);

let timer;
const updatePrometheusConfig = () => {
	const port = RocketChat.settings.get('Prometheus_Port');
	const enabled = RocketChat.settings.get('Prometheus_Enabled');
Example #22
0
var io = require('socket.io'),
  connect = require('connect');

var messagelog = [];

var storeMessages = function (name, data) {
  messagelog.push({name: name, data: data});
  if (messagelog.length > 20) messagelog.shift();
}

var app = connect().use(connect.static('public')).listen(8888);

var chat_room = io.listen(app);
var connectCounter = 0;

chat_room.sockets.on('connection', function(socket) {

  connectCounter++;
  console.log(connectCounter);

  chat_room.sockets.emit('changeCount', {message: connectCounter});

  messagelog.forEach(function(message) { 
    socket.emit('chat', {message: message.name + ": " + message.data});
  });

  messagelog.forEach(function(message) {
    socket.emit('names', {message: message.name});
  });

  socket.emit('entrance', {message: "welcome to the chat"});
Example #23
0
var dirWebRoot = 'public';
var port = Number(process.env.PORT || 5000);

var connect = require('connect');
connect().use(connect.static(dirWebRoot)).listen(port);

console.log('Static web server runnin on port: ' + port);
Example #24
0
/**
 * Created by luke.grymek on 8/12/2016.
 */
var echo = {
    handle: function (req, res, next) {
        req.pipe(res);
    }
};

var connect = require('connect');

connect()
    .use(echo)
    .listen(3000);
Example #25
0
var connect = require('connect'),
 serveStatic = require('serve-static');

connect().use(serveStatic(__dirname)).listen(8080, 
	function(){console.log('Server running on 8080...');
});
Example #26
0
File: server.js Project: snkas/D2D
// Dependency modules
var D2DServer   = require('D2D');
var connect     = require('connect');
var http        = require('http');
var serveStatic = require('serve-static');

// Create static server
var app = connect().use(serveStatic(__dirname + '/public'));
var server = http.createServer(app);

// Start XD-MVC server on default ports (9000, 9001, 3000)
(new D2DServer()).start();

// Start serving static content on port 8081
server.listen(8081);
Example #27
0
var connect = require('connect'),
    middlePipe = require('middleware-pipe'),
    multipart = require('connect-multiparty'),
    body = require('body-parser'),
    uid = require('uid2'),
    util = require('util'),
    fs = require('fs'),
    app = connect(),
    db = require('./lib/db'),
    // hard code
    roomid = 123;

!fs.existsSync('./files') && fs.mkdirSync('./files');

app
.use('/say', body.json())
.use('/say', function (req, res) {
    var data = req.body;
    db.get(roomid).say(data.pos, data.nickname, data.content);
    res.end('');
})
.use('/record', body.json())
.use('/record', function (req, res) {
    var data = req.body;
    db.get(roomid).record(data.id, data.pos);
    res.end('');
})
// TODO: There have a bug about communication.
.use('/sub', function (req, res) {
    db.subscribe(roomid, function (data) {
        res.end(JSON.stringify(data));
Example #28
0
var connect = require('connect');
var serveStatic = require('serve-static');
connect().use(serveStatic(__dirname)).listen(8001, function(){
    console.log('Backend server running on 8001...');
});
var connect = require('connect');
var serveStatic = require('serve-static');

connect().use(
	serveStatic(__dirname))
		.listen(8080, function(){
		    console.log('Server running on 8080...');
		});
import connect from 'connect';
import MapDimensions from 'components/tool/map-dimensions.component.js';
import { toggleMapSidebarGroup, toggleMapDimension } from 'actions/tool.actions';
import { loadTooltip } from 'actions/app.actions';

const mapMethodsToState = (state) => ({
  loadMapDimensions: {
    _comparedValue: (state) => state.tool.mapDimensionsGroups,
    _returnedValue: (state) => {
      return {
        mapDimensionsGroups: state.tool.mapDimensionsGroups,
        expandedMapSidebarGroupsIds: state.tool.expandedMapSidebarGroupsIds
      };
    }
  },
  selectMapDimensions: state.tool.selectedMapDimensions,
  toggleSidebarGroups: state.tool.expandedMapSidebarGroupsIds
});

const mapViewCallbacksToActions = () => ({
  onMapDimensionsLoaded: () => loadTooltip(),
  onToggleGroup: (id) => toggleMapSidebarGroup(id),
  onDimensionClick: (uid) => toggleMapDimension(uid)
});

export default connect(MapDimensions, mapMethodsToState, mapViewCallbacksToActions);