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
|
||
|
});
|
||
|
};
|