forked from coolaj86/walnut.js
		
	
		
			
	
	
		
			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 | ||
|  |   }); | ||
|  | }; |