// Copyright IBM Corp. 2015. All Rights Reserved.
// Node module: smartprofiling-example-app
// US Government Users Restricted Rights - Use, duplication or disclosure
// restricted by GSA ADP Schedule Contract with IBM Corp.

var loopback = require('loopback');
var boot = require('loopback-boot');

var app = module.exports = loopback();
boot(app);
Example #2
0
  });
};

boot(app, __dirname, function(err) {
  if (err) {
    throw err;
  }

  if (require.main === module) {
    var io = require('socket.io')(app.start());

    io.on('connection', function(socket) {
      onConnection(socket);

      socket.on('add-chat-user', function(user) {
        addChatUserForSocket(user, socket);
      });

      socket.on('message', function(message) {
        onMessage(socket, message)
      });

      socket.on('disconnect', function() {
        onClose(socket)
      });
    });
  }

});

var User = function(name, id) {
  this.name = name;
Example #3
0
var app = module.exports = loopback();

app.start = function() {
  // start the web server
  return app.listen(function() {
    app.emit('started');
    var baseUrl = app.get('url').replace(/\/$/, '');
    console.log('Web server listening at: %s', baseUrl);
    if (app.get('loopback-component-explorer')) {
      var explorerPath = app.get('loopback-component-explorer').mountPath;
      console.log('Browse your REST API at %s%s', baseUrl, explorerPath);
    }
  });
};

// Bootstrap the application, configure models, datasources and middleware.
// Sub-apps like REST API are mounted via boot scripts.
boot(app, __dirname, function(err) {
  if (err) throw err;

  // start the server if `$ node server.js`
  if (require.main === module)
    app.io = require('socket.io')(app.start());
	app.io.on('connection',function(){
		console.log('conectado');
		app.io.emit('test','asd');
	});
	app.io.on('chat',function(){ console.log('chatt');});
    //app.start();
});
Example #4
0
      console.log('Browse your REST API at %s%s', baseUrl, explorerPath);
    }
  });
};

// Bootstrap the application, configure models, datasources and middleware.
// Sub-apps like REST API are mounted via boot scripts.
boot(app, __dirname, function(err) {
  if (err) throw err;

  // start the server if `$ node server.js`
  if (require.main === module)
    app.io = require('socket.io')(app.start());
      app.io.on('connection', function(socket){
        socket.on('msg', function(msg){
          try {
            ioMiddleware.processRequest(app, msg, socket);
          } catch(e) {
            console.log(e)
          }
        });
        socket.on('disconnect', function() {
          try {
            socketEvents.disconnect(app, socket);
          } catch(e) {
            console.log(e)
          }
        })
      });
});
Example #5
0
boot(app, __dirname, function(err) {
  if (err) throw err;

  // start the server if `$ node server.js`
  if (require.main === module) {
    app.io = require('socket.io')(app.start());
    app.io.on('connection', function(socket){
      console.log('connected');
      socket.on('disconnect', function(){
          console.log('disconnected');
      });
    });

    setInterval(function() {
      app.models.Sensor.findById(1, function(err, sensor) {
        if (sensor.status == "Not connected") {
          return;
        }

        var sensorDisconnected = false;
        if (sensor.lastHeartbeatAt == null) {
          sensorDisconnected = true;
        }
        else {
          var now = new Date();
          var diff = now  - sensor.lastHeartbeatAt;

          // set disconnected if we haven't received
          // a heartbeat for over 90 seconds
          if (diff > 90000) {
            sensorDisconnected = true;
          }
        }

        if (sensorDisconnected) {
          console.log("[%s] Sensor disconnected", now.toISOString());
          sensor.status = "Not connected";
          sensor.save();
        }
      });
    }, 10000);

    var gateway = process.env.KANBANLIVE_GATEWAY || false;

    if (gateway) {
      console.log('Configured as gateway');

      var p = process.env.KANBANLIVE_SERIALPORT;
      if (!p) {
        p = "/dev/ttyAMA0";
      }
      console.log("Opening serial port: %s", p);

      var serialPort = require('serialport');
      var SerialPort = serialPort.SerialPort;

      var sp = new SerialPort(p, {
         baudrate: 9600,
         parser: serialPort.parsers.readline("-")
      });

      var ts = new Date();
      var lastTime = ts.getTime();
      var message = "";
      var lastMessage = message;
      sp.on('data', function(data) {
        ts = new Date();
        message = data.toString();

        if ((message.length != 10) && (message.length != 11)) {
          console.log("[%s] ignoring message: %s", ts.toISOString(), message);
          return;
        }

        var currentTime = ts.getTime();
        var diff = Math.abs(currentTime - lastTime);
        if ((diff < 500) && (message == lastMessage)) {
          return;
        }

        lastTime = currentTime;
        lastMessage = message;
        console.log("[%s] rx: %s", ts.toISOString(), message);

        var batteryLevel = null;
        if (message.length == 11) {
          batteryLevel = parseInt(message.substring(3, 7), 16) / 1000;
        }
        val = parseInt(message.substring(message.length - 4), 16);
        console.log("[%s] batttery level: %dV, value: %s", ts.toISOString(), batteryLevel, val);

        app.models.Sensor.findById(1, function(err, sensor) {
          sensor.status = "Connected";
          sensor.batteryLevel = batteryLevel;
          sensor.lastHeartbeatAt = new Date();
          sensor.save();
        });

        if ((val == 0x001A) || (val == 0x001B)) {
          key = message.substring(1);
          app.models.Bin.find({where: {key: key}, limit: 1}, function(err, bins) {
            var i;
            for (i in bins) {
              bin = bins[i];

              if (bin.status == 'has-stock') {
                bin.status = 'requires-stock';
              }
              else if (bin.status == 'requires-stock') {
                bin.status = 'empty';
              }
              else if (bin.status == 'empty') {
                bin.status = 'has-stock';
              }
              else {
                bin.status = 'has-stock';
              }

              bin.updated_at = currentTime;
              bin.save();
            }
          });
        }
        else {
          app.models.Bin.find(function(err, bins) {
            var i;
            for (i in bins) {
              bin = bins[i];

              if ((bin.key == 'AA000001A') || (bin.key == 'AA000001B')) {
                continue;
              }

              var status = val & bin.port_mask;

              if (status == 0) {
                new_status = 'has-stock';
              }
              else {
                new_status = 'requires-stock';
              }
              // else if (status == 2) {
              //   bin.status = 'empty';
              // }
              // else {
              //   bin.status = 'has-stock';
              // }

              if (bin.status != new_status) {
                bin.status = new_status;
                bin.updated_at = currentTime;
                bin.save();
              }
            }
          });
        }
      });
    }
    else {
      console.log('Configured as server');
    }
  }
});
Example #6
0
    console.log('Web server listening at: %s', baseUrl);
    if (app.get('loopback-component-explorer')) {
      var explorerPath = app.get('loopback-component-explorer').mountPath;
      console.log('Browse your REST API at %s%s', baseUrl, explorerPath);
    }
  });
};

// Bootstrap the application, configure models, datasources and middleware.
// Sub-apps like REST API are mounted via boot scripts.
boot(app, __dirname, function(err) {
  if (err) throw err;

  // start the server if `$ node server.js`
  if (require.main === module){
    //app.start();
    app.io = require('socket.io')(app.start());
    app.io.on('connection', function(socket){
      console.log('a user connected');

      socket.on('subscribe', function(room) {
          console.log('joining room', room);
          socket.join(room);
      });
      socket.on('disconnect', function(){
        console.log('user disconnected');
      });
    });
  }
});
var loopback = require('loopback');
var boot = require('loopback-boot');

var server = module.exports = loopback();

// Bootstrap the application, configure models, datasources and middleware.
// Sub-apps like REST API are mounted via boot scripts.

boot(server, __dirname);

server.start = function() {
  // start the web server
  return server.listen(function() {
    server.emit('started');
    console.log('Web server listening at: %s', server.get('url'));
  });
};

// start the server if `$ node server.js`
if (require.main === module) {

  server.io = require('socket.io')(server.start());

  server.io.on('connection', function(socket){
    console.log('a user connected');
    socket.emit('launch', 'from server');
    socket.on('disconnect', function(){
        console.log('user disconnected');
    });
  });
'use strict';

var loopback = require('loopback');
var boot = require('loopback-boot');

var client = module.exports = loopback();
boot(client);
    if (app.get("loopback-component-explorer")) {
      var explorerPath = app.get("loopback-component-explorer").mountPath;
      winston.info("Browse your REST API at %s%s", baseUrl, explorerPath);
    }
  });
};

// Bootstrap the application, configure models, datasources and middleware.
// Sub-apps like REST API are mounted via boot scripts.
boot(app, __dirname, function (err) {
  if (err) {
    throw err;
  }

  // notify that the app has booted, ready to be started
  app.booted = true;
  app.emit("booted");

  // start the server if `$ node server.js`
  if (require.main === module) {
    app.start();
  }
});
//------------------------------------------------------------------------------
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//    http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
const loopback = require('loopback');
const boot = require('loopback-boot');

const app = module.exports = loopback();

app.start = () =>
  // start the web server
  app.listen(() => {
    app.emit('started');
    const baseUrl = app.get('url').replace(/\/$/, '');
    console.log('Web server listening at: %s', baseUrl);
    if (app.get('loopback-component-explorer')) {
      const explorerPath = app.get('loopback-component-explorer').mountPath;
      console.log('Browse your REST API at %s%s', baseUrl, explorerPath);
    }
  })
;

// Bootstrap the application, configure models, datasources and middleware.
// Sub-apps like REST API are mounted via boot scripts.
boot(app, __dirname, (err) => {
  if (err) {
    throw err;
  }

  // start the server if `$ node server.js`
  if (require.main === module || require.main.filename.indexOf('server.js') !== -1) {
    app.start();
  }
});
Example #11
0
// app.post('/**', passport.authenticate('mca-backend-strategy', {session: false}));
// app.put('/**', passport.authenticate('mca-backend-strategy', {session: false}));
// app.delete('/**', passport.authenticate('mca-backend-strategy', {session: false}));

// Protect /protected endpoint which is used in Getting Started with Bluemix Mobile Services tutorials
// app.get('/protected', passport.authenticate('mca-backend-strategy', {session: false}), function(req, res){
// 	res.send("Hello, this is a protected resouce of the mobile backend application!");
// });
// ------------ Protecting backend APIs with Mobile Client Access end -----------------

app.start = function () {
	// start the web server
	return app.listen(function () {
		app.emit('started');
		var baseUrl = app.get('url').replace(/\/$/, '');
		console.log('Web server listening at: %s', baseUrl);
		var componentExplorer = app.get('loopback-component-explorer');
		if (componentExplorer) {
			console.log('Browse your REST API at %s%s', baseUrl, componentExplorer.mountPath);
		}
	});
};

// Bootstrap the application, configure models, datasources and middleware.
// Sub-apps like REST API are mounted via boot scripts.
boot(app, __dirname, function (err) {
	if (err) throw err;
	if (require.main === module)
	app.start();
});
var app = module.exports = loopback();

app.start = function() {
  // start the web server
  return app.listen(function() {
    app.emit('started');
    var baseUrl = app.get('url').replace(/\/$/, '');
    console.log('Web server listening at: %s', baseUrl);
    if (app.get('loopback-component-explorer')) {
      var explorerPath = app.get('loopback-component-explorer').mountPath;
      console.log('Browse your REST API at %s%s', baseUrl, explorerPath);
    }
  });
};

// Bootstrap the application, configure models, datasources and middleware.
// Sub-apps like REST API are mounted via boot scripts.
boot(app, __dirname, function(err) {
  if (err) throw err;

  // Can add routes right inside server.js also.
  app.use('/express-status', function(req, res, next) {
    res.json({ running: true });
  });

  // start the server if `$ node server.js`
  if (require.main === module)
    app.start();
});
Example #13
0
  // start the web server
  return app.listen(function() {
    app.emit('started');
    var baseUrl = app.get('url').replace(/\/$/, '');
    console.log('Web server listening at: %s', baseUrl);
    if (app.get('loopback-component-explorer')) {
      var explorerPath = app.get('loopback-component-explorer').mountPath;
      console.log('Browse your REST API at %s%s', baseUrl, explorerPath);
    }
  });
};

// Bootstrap the application, configure models, datasources and middleware.
// Sub-apps like REST API are mounted via boot scripts.

boot(app, __dirname, function(err) {
  if (err) throw err;

  // start the server if `$ node server.js`
  if (require.main === module)
    app.start();

//
//  var order = loopback.findModel('Order');
//  var msg = {msg:"பீட்ரூட் காகிலோ,బంగాళాదుంప అర కేజి\nCabbage 1 no", vno: "9880405637", cno: "8095101060"};
 // order.new(msg , function(err, data) {
  //  console.log(data);
//  });
});

Example #14
0
    path = require('path'),
    setupPassport = require('./component-passport');

var app = loopback();
var isBeta = !!process.env.BETA;

expressState.extend(app);
app.set('state namespace', '__fcc__');
app.set('port', process.env.PORT || 3000);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(loopback.token());
app.disable('x-powered-by');

boot(app, {
  appRootDir: __dirname,
  dev: process.env.NODE_ENV
});

setupPassport(app);

app.start = _.once(function() {
  app.listen(app.get('port'), function() {
    app.emit('started');
    console.log(
      'FreeCodeCamp server listening on port %d in %s',
      app.get('port'),
      app.get('env')
    );
    if (isBeta) {
      console.log('Free Code Camp is in beta mode');
    }
    logger.info('Web server listening at: %s', baseUrl);
    if (app.get('loopback-component-explorer')) {
      var explorerPath = app.get('loopback-component-explorer').mountPath;
      logger.info('Browse your REST API at %s%s', baseUrl, explorerPath);
    }
  });
};

// Bootstrap the application, configure models, datasources and middleware.
// Sub-apps like REST API are mounted via boot scripts.
boot(app, __dirname, function(err) {
  if (err) { throw err; }

  // start the server if `$ node server.js`
  if (require.main === module) {
    // Start the server
    var expressApp = app.start();

    // Start CantyCTI
    cantyCti(expressApp);
  }
});

function cantyCti(expressApp) {

  /**
   * Keys for Socket.io events.
   */
  const EVENT_KEY_INCOMING_CALL = 'incoming call';
  const EVENT_KEY_CALL_REQUEST = 'call request';

  const io = require('socket.io')(expressApp);
Example #16
0
// var logger = require('loopback-component-logger')(rootLogger);
var app = module.exports = loopback();
require('loopback-ds-calculated-mixin')(app);

app.start = function() {
  // start the web server
  return app.listen(function() {
    app.emit('started');
    var baseUrl = app.get('url').replace(/\/$/, '');
    console.log('Web server listening at: %s', baseUrl);
    if (app.get('loopback-component-explorer')) {
      var explorerPath = app.get('loopback-component-explorer').mountPath;
      console.log('Browse your REST API at %s%s', baseUrl, explorerPath);
    }
  });
};

// Bootstrap the application, configure models, datasources and middleware.
// Sub-apps like REST API are mounted via boot scripts.
boot(app, __dirname, function(err) {
  if (err) throw err;

  console.log("====== automigrate models for TodosDSMysql ====================");
  app.datasources['TodosDSMysql'].automigrate(['User', 'AccessToken', 'ACL','RoleMapping','Role','Todo'], function(err) {
      console.log(err);
    });
  // start the server if `$ node server.js`
  if (require.main === module)
    app.start();
});
Example #17
0
/**
 * Factory method that returns a loopback server object. This object can be used
 * as express middleware.
 *
 * @param {ServiceManager} serviceManager
 * @param {Minkelite} minkelite instance for tracing
 * @param {object} options Options object
 */
function server(serviceManager, minkelite, options) {
  var app = loopback();
  app.serviceManager = serviceManager;
  options = options || {};

  var duration1Day = 24 * 60 * 60 * 1000;
  options['ExpressUsageRecord.deleteWindow'] =
    options['ExpressUsageRecord.deleteWindow'] || String(duration1Day);

  for (var k in options) {
    if (!options.hasOwnProperty(k)) continue;
    app.set(k, options[k]);
  }

  var config;
  app.minkelite = minkelite;
  if (options.db) {
    app.dataSource('db', options.db);
  } else if (process.env.STRONGLOOP_MESH_DB) {
    // For backward compatibility with old way of specifying connection info
    // via environment variable.
    var dbUrl = url.parse(process.env.STRONGLOOP_MESH_DB || 'memory://');
    debug('Datasource URI: %j', dbUrl);

    config = {
      name: 'db',
      host: dbUrl.hostname,
      port: dbUrl.port,
      connector: dbUrl.protocol.slice(0, -1),
    };
    if (dbUrl.path) config.file = dbUrl.path;

    debug('Datasource config: %j', config);
    app.dataSource('db', config);
  } else {
    config = {connector: 'memory'};
    if (options.dbFilePath) config.file = options.dbFilePath;
    app.dataSource('db', config);
  }

  // Bootstrap the application, configure models, datasources and middleware.
  // Sub-apps like REST API are mounted via boot scripts.
  boot(app, __dirname);

  app.start = function(callback) {
    app.dataSources.db.autoupdate(function(err) {
      if (err) return callback(err);

      // start the web server
      app._server = app.listen(function() {
        var addr = this.address();
        app.emit('started', addr.port);
        console.log('Web server listening at port: %s', addr.port);
        if (callback) return callback(null, addr.port);
      });
    });
  };

  app.stop = function(callback) {
    if (this.minkelite)
      this.minkelite.shutdown();

    if (!this._server) {
      return cb();
    }
    this._server.close(cb);

    function cb() {
      app.emit('stopped');
      if (callback) callback();
    }
  };

  app.useDbWatcher = function(dbWatcher, callback) {
    var ServerService = app.models.ServerService;
    var ServiceInstance = app.models.ServiceInstance;
    var Executor = app.models.Executor;
    var Gateway = app.models.Gateway;

    async.parallel([
      ServerService.useDbWatcher.bind(null, dbWatcher),
      ServiceInstance.useDbWatcher.bind(null, dbWatcher),
      Executor.useDbWatcher.bind(null, dbWatcher),
      Gateway.useDbWatcher.bind(null, dbWatcher),
    ], callback);
  };

  app.handleModelUpdate = function(instanceId, uInfo, callback) {
    // These are all currently notifications, so callback is optional and unused
    // However, the unit tests need to know when models have been updated, so
    // take care to not callback until any actions are complete.
    if (!callback) {
      callback = assert.ifError;
    }

    var AgentTrace = app.models.AgentTrace;
    var ExpressUsageRecord = app.models.ExpressUsageRecord;
    var ProfileData = app.models.ProfileData;
    var ServiceInstance = app.models.ServiceInstance;
    var ServiceMetric = app.models.ServiceMetric;
    var ServiceProcess = app.models.ServiceProcess;

    switch (uInfo.cmd) {
      case 'started':
        // Note carefully that strong-pm doesn't actually pass the started cmd
        // directly, it first annotates it with a bunch of extra information.
        ServiceInstance.recordInstanceInfo(instanceId, uInfo, function(err) {
          if (err) return callback(err);
          ServiceProcess.recordFork(instanceId, uInfo, callback);
        });
        break;
      case 'fork':
        ServiceProcess.recordFork(instanceId, uInfo, callback);
        break;
      case 'exit':
        ServiceProcess.recordExit(instanceId, uInfo, callback);
        break;
      case 'listening':
        ServiceProcess.recordListeningEndpoint(instanceId, uInfo, callback);
        break;
      case 'object-tracking':
      case 'cpu-profiling':
      case 'heap-snapshot':
        ServiceProcess.recordProfilingState(instanceId, uInfo, callback);
        break;
      case 'status':
        ServiceInstance.recordStatusUpdate(instanceId, uInfo, callback);
        break;
      case 'metrics':
        ServiceMetric.recordMetrics(instanceId, uInfo, callback);
        break;
      case 'agent:trace':
        AgentTrace.recordTrace(instanceId, uInfo, callback);
        break;
      case 'trace:object':
        if (!app.minkelite)
          return callback();
        var record = JSON.parse(uInfo.record);
        app.minkelite.postRawPieces(record.version,
          record.packet.metadata.account_key,
          record.packet,
          callback);
        break;
      case 'express:usage-record':
        ExpressUsageRecord.recordUsage(instanceId, uInfo, callback);
        break;
      case 'cpu:profile-data':
        ProfileData.recordProfileData(instanceId, uInfo, callback);
        break;
      case 'status:wd':
        ServiceProcess.recordStatusWdUpdate(instanceId, uInfo, function(err) {
          if (err) return callback(err);

          // Work around for versions of supervisor which dont include appName
          // in status:wd message
          if (!uInfo.appName) {
            return process.nextTick(callback);
          }

          ServiceInstance.recordStatusWdUpdate(instanceId, uInfo, callback);
        });
        break;
      case 'debugger-status':
        ServiceProcess.recordDebuggerStatusUpdate(instanceId, uInfo, callback);
        break;
      default:
        debug('Unknown request: %j', uInfo);
        callback();
        break;
    }
  };

  app.setServiceCommit = function(serviceId, commit, callback) {
    var ServerService = app.models.ServerService;
    ServerService.setServiceCommit(serviceId, commit, callback);
  };

  return app;
}
Example #18
0
boot(app, __dirname, function (error) {
  if (error) {
    throw error;
  }

  // start the server if `$ node server.js`
  if (require.main === module) {
    app.io = require('socket.io')(app.start());
    var Authenticate = function (socket, data, callback) {

      // console.log(data);
      //
      // if ((data.username || data.email) && data.password) {
      //   var credentials = {
      //     password : data.password
      //   };
      //   if (data.username) {
      //     credentials.username = data.username;
      //   }
      //
      //   app.models.user.login(credentials, 'user', function (error, token) {
      //     if (error) {
      //       log.error(error);
      //     }
      //     console.log(token);
      //   });
      // }
      //
      // callback(null, true);

      app.models.AccessToken.find({
        where : {
          and : [{userId : data.userId}, {id : data.id}]
        }
      }, function (error, tokenDetail) {
        if (error) {
          throw error;
        }

        if (tokenDetail.length) {
          callback(null, true);
        } else {
          callback(null, false);
        }
      });
    };

    require('socketio-auth')(app.io, {authenticate : Authenticate});

    app.io.on('connection', function (socket) {
      log.info('a user connected');
      socket.on('disconnect', function () {
        log.info('user disconnected');
      });
    });
  }
});
Example #19
0
var loopback = require('loopback');
var boot = require('loopback-boot');

var app = module.exports = loopback();

app.start = function() {
  // start the web server
  return app.listen(function() {
    app.emit('started');
    var baseUrl = app.get('url').replace(/\/$/, '');
    console.log('Web server listening at: %s', baseUrl);
    if (app.get('loopback-component-explorer')) {
      var explorerPath = app.get('loopback-component-explorer').mountPath;
      console.log('Browse your REST API at %s%s', baseUrl, explorerPath);
    }
  });
};

// Bootstrap the application, configure models, datasources and middleware.
// Sub-apps like REST API are mounted via boot scripts.
if (require.main === module) {
  boot(app, __dirname, function(err) {
    if (err)
      throw err;
    
    app.start();
  });
}
boot(app, __dirname, function (err) {
  if (err) throw err;

  // start the server if `$ node server.js`
  if (require.main === module) {
    
    app.io = require('socket.io')(app.start());
    
    

    app.io.on('connection', function (socket) {
      console.log("connect"+socket.client.request._query.id);
      app.models.player.findById(socket.client.request._query.id, function(error, findResult){
        if(findResult !=null){
          findResult.status = "online";
          findResult.save();
        }
      });

      player(app.models.player,socket);
      game(app.models.game, socket,app.io);

      socket.on('disconnect', function (data) {
        console.log("disconnect:"+socket.client.request._query.id);
        app.models.player.findById(socket.client.request._query.id, function(error, findResult){
          if(findResult !=null){
          findResult.status = "offline";
          findResult.save();
        }
      });
      });
    })
  }
});
Example #21
0
var loopback = require('loopback');
var boot = require('loopback-boot');

var client = module.exports = loopback();
console.log(__dirname);
boot(client, __dirname,function(err){
	if(err){
		console.log(err);
		throw err;
	} 
});
 return new Promise((resolve, reject) => {
     boot(app, options, (err) => {
         if (err) reject(err);
         resolve();
     });
 });
Example #23
0
var rewriteModule = require('http-rewrite-middleware');
app.use(rewriteModule.getMiddleware([
    // hairdresser-favorites -> business-member-favorites
    {from: '^/api/users/([a-z0-9]+)/favorite-hairdressers$', to: '/api/users/$1/favorite-business-members'},
    {from: '^/api/users/([a-z0-9]+)/favorite-hairdressers/([a-z0-9]+)$', to: '/api/users/$1/favorite-business-members/$2'},

    // hairdressers -> business members
    {from: '^/api/hairdressers$', to: '/api/businessMembers'},
    {from: '^/api/hairdressers/([a-z0-9]+)$', to: '/api/businessMembers/$1'},
], {silent: true}));

// boot scripts mount components like REST API
boot(app, {
    appRootDir: __dirname,
    config: require('./config'),
    dataSources: require('./datasources')
});

// setup passport
var passport = passportConfigurator.init();
passportConfigurator.setupModels({
  userModel: app.models.user,
  userCredentialModel: app.models.userCredential,
  userIdentityModel: app.models.userIdentity,
});
for (var s in passportConfig) {
    var c = passportConfig[s];
    c.session = c.session !== false;
    c.profileToUser = app.models.User.profileToUser;
    passportConfigurator.configureProvider(s, c);
Example #24
0
}

//
// - - - - - THIRD PARTY AUTH INIT - - - - - -
//
// authorisation providers initialisation is required before booting
var PassportConfigurator = loopbackPassport.PassportConfigurator;
var passportConfigurator = new PassportConfigurator(app);


// Bootstrap the application, configure models, datasources and middleware.
// Sub-apps like REST API are mounted via boot scripts.
boot(app, __dirname, function(err) {
  if (err) throw err;

  // start the server if `$ node server.js`
  if (require.main === module)
    app.start();
});

//
// - - - - - THIRD PARTY AUTH CONFIG - - - - - -
//
// authorisation providers configuration
// this section informs loopback of available providers via the
// providers.json file at the backend root
// var PassportConfigurator = loopbackPassport.PassportConfigurator;
// var passportConfigurator = new PassportConfigurator(app);

// Build the providers/passport config
// var config = {};
Example #25
0
app.set("ms_name", 'image');
app.set("awsAccessKey", process.env.AWS_ACCESS_KEY);
app.set("awsSecretKey", process.env.AWS_SECRET_KEY)

boot(app, __dirname, (err) => {
    if (err) throw err;
    app.start = function () {
        const httpServer = http.createServer(app).listen(http_port, () => {
            app.emit('started');            
            app.close = function (done) {
                app.removeAllListeners('started');
                app.removeAllListeners('loaded');
                if (app.registry) {
                    debug('Leave etcd ...');
                    app.registry.leave(app.get('ms_name'));
                }
                if (app.rabbit) {
                    debug('Close rabbit...');
                    app.rabbit.closeAll();
                }
                httpServer.close(done);
            };
            process.on('SIGINT', app.close);
        });
    };
    if (require.main === module)
        app.start();
    app.loaded = true;
    app.emit('loaded');
});
Example #26
0
try {
    config = require('../providers.json');
} catch (err) {
    console.trace(err);
    process.exit(1); // fatal
}

// -- Add your pre-processing middleware here --

// Setup the view engine (jade)
var path = require('path');
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

// boot scripts mount components like REST API
boot(app, __dirname);

// to support JSON-encoded bodies
app.middleware('parse', bodyParser.json());
// to support URL-encoded bodies
app.middleware('parse', bodyParser.urlencoded({
    extended: true
}));

// The access token is only available after boot
app.middleware('auth', loopback.token({
    model: app.models.accessToken
}));

app.middleware('session:before', loopback.cookieParser(app.get('cookieSecret')));
app.middleware('session', loopback.session({
boot(app, __dirname, function(err) {
  if (err) throw err;

  app.set('view engine', 'ejs');
  app.set('views', path.join(__dirname, 'views'));

  // Set up login/logout forms
  app.get('/login', site.loginForm);

  app.oauth2 = app._oauth2Handlers; // For testing

  var isMain = require.main === module;
  app.start = function() {
    var port = app.get('port');
    var host = app.get('host');
    var httpServer = http.createServer(app).listen(port, host, function() {
      if (isMain)
        printServerListeningMsg('http', host, port);

      var httpsPort = app.get('https-port');
      var httpsServer = https.createServer(httpsOptions, app).listen(httpsPort,
          host, function() {
        if (isMain)
          printServerListeningMsg('https', host, httpsPort);

        app.emit('started');

        app.close = function(cb) {
          app.removeAllListeners('started');
          app.removeAllListeners('loaded');
          httpServer.close(function() {
            httpsServer.close(cb);
          });
        };
      });
    });
  };

  if (isMain)
    app.start();

  app.loaded = true;
  app.emit('loaded');
});
Example #28
0
app.use(loopback.token({ model: app.models.accessToken, currentUserLiteral: 'me' }));

app.start = function start() {
  // start the web server
  return app.listen(() => {
    app.emit('started');
    const baseUrl = app.get('url').replace(/\/$/, '');
    debug('Web server listening at: %s', baseUrl);
    if (app.get('loopback-component-explorer')) {
      const explorerPath = app.get('loopback-component-explorer').mountPath;
      debug('Browse your REST API at %s%s', baseUrl, explorerPath);
    }

    if (app.get('loopback-component-model-diagram')) {
      const modelDiagramPath = app.get('loopback-component-model-diagram').mountPath;
      debug('Browse your entity relation diagram at %s%s', baseUrl, modelDiagramPath);
    }
  });
};

// Bootstrap the application, configure models, datasources and middleware.
// Sub-apps like REST API are mounted via boot scripts.
boot(app, __dirname, (err) => {
  if (err) throw err;

  // start the server if `$ node server.js`
  if (require.main === module) {
    app.start();
  }
});
Example #29
0
      let explorerPath = app.get('loopback-component-explorer').mountPath;
      console.log('Browse your REST API at %s%s', baseUrl, explorerPath);
    }
  });
};

// Bootstrap the application, configure models, datasources and middleware.
// Sub-apps like REST API are mounted via boot scripts.
boot(app, __dirname, function(err) {
  if (err) throw err;

  // start the server if `$ node server.js`
  if (require.main === module) {
    // if WORKER_SCRIPT present, start it instead of api.
    // 'worker' can be anything: websocket server, another http server, etc.
    let scriptPath = process.env.WORKER_SCRIPT;

    if (scriptPath) {
      return startWorker(scriptPath, app);
    } else {
      app.start();
    }
  }
});

function startWorker(scriptPath, app) {
  let worker;

  scriptPath = path.join(__dirname, scriptPath);
  console.log('Attempting to start worker|server at %s...', scriptPath);
  try {
    worker = require(scriptPath);
boot(app, __dirname, function(err) {
  if (err) throw err;
  
//
// I would prefer that this code was somewhere else (../boot/passport.js ?)
// I think it could be important that the code is "after" boot, or at a specific point in boot.
// "work in progress" I follow the yellow brick road from googling...
//
// Passport configurators..
var loopbackPassport = require('loopback-component-passport');
var PassportConfigurator = loopbackPassport.PassportConfigurator;
var passportConfigurator = new PassportConfigurator(app);

/*
 * body-parser is a piece of express middleware that
 *   reads a form's input and stores it as a javascript
 *   object accessible through `req.body`
 *
 */
var bodyParser = require('body-parser');

/**
 * Flash messages for passport
 *
 * Setting the failureFlash option to true instructs Passport to flash an
 * error message using the message given by the strategy's verify callback,
 * if any. This is often the best approach, because the verify callback
 * can make the most accurate determination of why authentication failed.
 */
var flash      = require('express-flash');

// attempt to build the providers/passport config
var config = {};
try {
	config = require('../providers.json');
} catch (err) {
	console.trace(err);
	process.exit(1); // fatal
}

// Set up the /favicon.ico
app.use(loopback.favicon());

// request pre-processing middleware
app.use(loopback.compress());

// -- Add your pre-processing middleware here --

// Setup the view engine (jade)
var path = require('path');
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

// boot scripts mount components like REST API
boot(app, __dirname);

// to support JSON-encoded bodies
app.use(bodyParser.json());
// to support URL-encoded bodies
app.use(bodyParser.urlencoded({
	extended: true
}));

// The access token is only available after boot
app.use(loopback.token({
  model: app.models.accessToken
}));

app.use(loopback.cookieParser(app.get('cookieSecret')));
app.use(loopback.session({
	secret: 'kitty',
	saveUninitialized: true,
	resave: true
}));
passportConfigurator.init();

// We need flash messages to see passport errors
app.use(flash());

//console.log("NO setupModels at the moment");

passportConfigurator.setupModels({
	userModel: app.models.user,
	userIdentityModel: app.models.userIdentity,
	userCredentialModel: app.models.userCredential
});


for (var s in config) {
	var c = config[s];
	c.session = c.session !== false;
	passportConfigurator.configureProvider(s, c);
}
var ensureLoggedIn = require('connect-ensure-login').ensureLoggedIn;

app.get('/', function (req, res, next) {
  res.render('pages/index', {user:
    req.user,
    url: req.url
  });
});

app.get('/auth/account', ensureLoggedIn('/login.html'), function (req, res, next) {
  res.render('pages/loginProfiles', {
    user: req.user,
    url: req.url
  });
});

app.get('/link/account', ensureLoggedIn('/login.html'), function (req, res, next) {
  res.render('pages/linkedAccounts', {
    user: req.user,
    url: req.url
  });
});

app.get('/local', function (req, res, next){
  res.render('pages/local', {
    user: req.user,
    url: req.url
  });
});

app.get('/signup', function (req, res, next){
  res.render('pages/signup', {
    user: req.user,
    url: req.url
  });
});

app.post('/signup', function (req, res, next) {

  var User = app.models.user;

  var newUser = {};
  newUser.email = req.body.email.toLowerCase();
  newUser.username = req.body.username.trim();
  newUser.password = req.body.password;

  User.create(newUser, function (err, user) {
    if (err) {
      req.flash('error', err.message);
      return res.redirect('back');
    } else {
      // Passport exposes a login() function on req (also aliased as logIn())
      // that can be used to establish a login session. This function is
      // primarily used when users sign up, during which req.login() can
      // be invoked to log in the newly registered user.
      req.login(user, function (err) {
        if (err) {
          req.flash('error', err.message);
          return res.redirect('back');
        }
        return res.redirect('/auth/account');
      });
    }
  });
});

app.get('/login', function (req, res, next){
  res.render('pages/login', {
    user: req.user,
    url: req.url
   });
});

app.get('/link', function (req, res, next){
  res.render('pages/link', {
    user: req.user,
    url: req.url
  });
});

app.get('/auth/logout', function (req, res, next) {
  req.logout();
  res.redirect('/');
});

// -- Mount static files here--
// All static middleware should be registered at the end, as all requests
// passing the static middleware are hitting the file system
// Example:
var path = require('path');
app.use(loopback.static(path.resolve(__dirname, '../client/public')));

// Requests that get this far won't be handled
// by any middleware. Convert them into a 404 error
// that will be handled later down the chain.
app.use(loopback.urlNotFound());

// The ultimate error handler.
app.use(loopback.errorHandler());

  // start the server if `$ node server.js`
  if (require.main === module)
    app.start();
});