Files
cloudron-box/installer/src/server.js
T

79 lines
2.0 KiB
JavaScript
Raw Normal View History

2015-08-04 16:29:49 -07:00
#!/usr/bin/env node
/* jslint node: true */
'use strict';
2015-08-25 15:06:39 -07:00
var assert = require('assert'),
2015-08-04 16:29:49 -07:00
debug = require('debug')('installer:server'),
express = require('express'),
http = require('http'),
HttpError = require('connect-lastmile').HttpError,
HttpSuccess = require('connect-lastmile').HttpSuccess,
installer = require('./installer.js'),
json = require('body-parser').json,
lastMile = require('connect-lastmile'),
2016-10-25 11:27:41 +02:00
morgan = require('morgan');
2015-08-04 16:29:49 -07:00
exports = module.exports = {
start: start,
stop: stop
};
2016-01-25 17:46:21 -08:00
var gHttpServer = null; // update server; used for updates
2015-08-04 16:29:49 -07:00
2015-08-25 15:54:15 -07:00
function update(req, res, next) {
2015-08-04 16:29:49 -07:00
assert.strictEqual(typeof req.body, 'object');
if (!req.body.sourceTarballUrl || typeof req.body.sourceTarballUrl !== 'string') return next(new HttpError(400, 'No sourceTarballUrl provided'));
if (!req.body.data || typeof req.body.data !== 'object') return next(new HttpError(400, 'No data provided'));
2015-08-04 16:29:49 -07:00
2015-08-25 15:54:15 -07:00
debug('provision: received from box %j', req.body);
2015-08-04 16:29:49 -07:00
2015-08-27 18:49:52 -07:00
installer.provision(req.body, function (error) {
if (error) console.error(error);
2015-08-25 15:54:15 -07:00
});
2015-08-27 18:49:52 -07:00
next(new HttpSuccess(202, { }));
2015-08-04 16:29:49 -07:00
}
2016-10-25 11:27:41 +02:00
function start(callback) {
2015-08-04 16:29:49 -07:00
assert.strictEqual(typeof callback, 'function');
debug('Starting update server');
var app = express();
var router = new express.Router();
if (process.env.NODE_ENV !== 'test') app.use(morgan('dev', { immediate: false }));
app.use(json({ strict: true }))
.use(router)
.use(lastMile());
2015-08-25 15:54:15 -07:00
router.post('/api/v1/installer/update', update);
2015-08-04 16:29:49 -07:00
gHttpServer = http.createServer(app);
gHttpServer.on('error', console.error);
gHttpServer.listen(2020, '127.0.0.1', callback);
}
2016-10-25 11:27:41 +02:00
function stop(callback) {
2015-08-04 16:29:49 -07:00
assert.strictEqual(typeof callback, 'function');
debug('Stopping update server');
if (!gHttpServer) return callback(null);
gHttpServer.close(callback);
gHttpServer = null;
}
if (require.main === module) {
start(function (error) {
if (error) console.error(error);
});
}