whistle.capimock
Version:
连接capi的whistle插件
76 lines (58 loc) • 1.9 kB
JavaScript
/* eslint-disable no-console */
var path = require('path');
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var util = require('./util');
var APP_ROOT = util.formatPath(path.join(__dirname, '../app'));
var APP_CGI_ROOT = util.formatPath(path.join(APP_ROOT, 'cgi-bin'));
var dataMgr = require('./data-mgr');
var CGI_MODULES = util.loadModulesSync(APP_CGI_ROOT);
var parseTsFile = require('./schema');
app.use(function(req, res, next) {
req.on('error', util.noop);
res.on('error', util.noop);
next();
});
app.use(bodyParser.urlencoded({ extended: true, limit: '50mb'}));
app.use(bodyParser.json({ limit: '50mb' }));
app.use(express.json());
app.post('/api/file', function (req, res) {
var result = parseTsFile(req.body.filePath);
res.json(result);
});
app.post('/file/edit', function (req, res) {
dataMgr.setTplValue(req.body.name, req.body.value);
res.json({ec: 0, em: 'success'});
});
app.post('/file/add', function (req, res) {
const result = dataMgr.addTpl(req.body);
if (result) {
res.json({ec: 1, em: 'success', message: result})
} else {
res.json({ec: 0, em: 'success'});
}
});
app.post('/file/delete', function (req, res) {
if (req.body.name) {
dataMgr.removeTpl(req.body);
}
res.json({ec: 0, em: 'success'});
});
app.all('/cgi-bin/*', function(req, res) {
if (req.headers.origin) {
res.setHeader('Access-Control-Allow-Origin', req.headers.origin);
res.setHeader('Access-Control-Allow-Credentials', true);
}
var controller = CGI_MODULES[APP_ROOT + req.url.replace(/\?.*$/, '')];
try {
this.dataMgr = dataMgr;
controller.call(this, req, res);
} catch(e) {
res.status(500).end(e.stack);
}
});
app.use(express.static(path.join(__dirname, '../app/public')));
module.exports = function startUIServer(server, options) {
server.on('request', app);
};