Aside from a few external process calls there are now zero external dependencies required as part of the node.js boot process. Yay!
		
			
				
	
	
		
			81 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
'use strict';
 | 
						|
 | 
						|
module.exports.create = function () {
 | 
						|
  var PromiseA = require('bluebird');
 | 
						|
  var express = require('connect');
 | 
						|
 | 
						|
  var app = express();
 | 
						|
  var promise;
 | 
						|
 | 
						|
  promise = new PromiseA(function (resolve) {
 | 
						|
    var path = require('path');
 | 
						|
    var serveStatic;
 | 
						|
    var serveInitStatic;
 | 
						|
    var jsonParser;
 | 
						|
    //var rootMasterKey;
 | 
						|
 | 
						|
    app.use(function (req, res, next) {
 | 
						|
      res.setHeader('Connection', 'close');
 | 
						|
      next();
 | 
						|
    });
 | 
						|
 | 
						|
    app.use('/api/unlock-device', function (req, res, next) {
 | 
						|
      console.log('[unlock-device]');
 | 
						|
      if (!jsonParser) {
 | 
						|
        jsonParser = require('body-parser').json({
 | 
						|
          strict: true // only objects and arrays
 | 
						|
        , inflate: true
 | 
						|
        , limit: 100 * 1024
 | 
						|
        , reviver: undefined
 | 
						|
        , type: 'json'
 | 
						|
        , verify: undefined
 | 
						|
        });
 | 
						|
      }
 | 
						|
 | 
						|
      jsonParser(req, res, function (err) {
 | 
						|
        if (err) {
 | 
						|
          console.log('[unlock-device] err', err, err.stack);
 | 
						|
          next(err);
 | 
						|
          return;
 | 
						|
        }
 | 
						|
 | 
						|
        console.log('[unlock-device] with root');
 | 
						|
        resolve("ROOT MASTER KEY");
 | 
						|
        //setRootMasterKey();
 | 
						|
        res.setHeader('Content-Type', 'application/json; charset=utf-8');
 | 
						|
        res.setHeader('Location', '/');
 | 
						|
        res.statusCode = 302;
 | 
						|
        res.end(JSON.stringify({ success: true }));
 | 
						|
      });
 | 
						|
    });
 | 
						|
 | 
						|
    app.use('/api', function (req, res) {
 | 
						|
      res.setHeader('Content-Type', 'application/json; charset=utf-8');
 | 
						|
      res.statusCode = 200;
 | 
						|
      res.end(JSON.stringify({
 | 
						|
        error: {
 | 
						|
          message: "This device is locked. It must be unlocked with its encryption key at /unlock-device"
 | 
						|
        , code: 'E_DEVICE_LOCKED'
 | 
						|
        , uri: '/unlock-device' }
 | 
						|
        }
 | 
						|
      ));
 | 
						|
    });
 | 
						|
 | 
						|
    // TODO break application cache?
 | 
						|
    // TODO serve public sites?
 | 
						|
    app.use('/', function (req, res, next) {
 | 
						|
      if (!serveInitStatic) {
 | 
						|
        serveStatic = require('serve-static');
 | 
						|
        serveInitStatic = serveStatic(path.join(__dirname, '..', 'init.public'));
 | 
						|
      }
 | 
						|
 | 
						|
      serveInitStatic(req, res, next);
 | 
						|
    });
 | 
						|
  });
 | 
						|
 | 
						|
  return PromiseA.resolve({
 | 
						|
    app: app
 | 
						|
  , promise: promise
 | 
						|
  });
 | 
						|
};
 |