catproxy
Version:
a node proxy or host change tools
104 lines (72 loc) • 3.02 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _express = require('express');
var _express2 = _interopRequireDefault(_express);
var _log = require('../log');
var _log2 = _interopRequireDefault(_log);
var _host = require('./host');
var _host2 = _interopRequireDefault(_host);
var _tools = require('../tools');
var _ = require('./500');
var _2 = _interopRequireDefault(_);
var _3 = require('./404');
var _4 = _interopRequireDefault(_3);
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
var _bodyParser = require('body-parser');
var _bodyParser2 = _interopRequireDefault(_bodyParser);
var _http = require('http');
var _http2 = _interopRequireDefault(_http);
var _ws = require('../ws/ws');
var _ws2 = _interopRequireDefault(_ws);
var _downloadrule = require('./downloadrule');
var _downloadrule2 = _interopRequireDefault(_downloadrule);
var _downloadcert = require('./downloadcert');
var _downloadcert2 = _interopRequireDefault(_downloadcert);
var _merge = require('merge');
var _merge2 = _interopRequireDefault(_merge);
var _webCfg = require('../config/webCfg');
var _webCfg2 = _interopRequireDefault(_webCfg);
var _getLocalIps = require('../getLocalIps');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
exports.default = function (option) {
option = (0, _merge2.default)({}, _webCfg2.default, option);
var server = _http2.default.createServer();
var uiApp = (0, _express2.default)();
uiApp.engine('.ejs', require('ejs').__express);
uiApp.set('views', _path2.default.join(__dirname, '../../web/build'));
uiApp.set('view engine', 'ejs');
// 内部使用静态文件加载
uiApp.use("/static", _express2.default.static(_path2.default.join(__dirname, '../../web/build')));
uiApp.use(_bodyParser2.default.json()); // for parsing application/json
uiApp.use(_bodyParser2.default.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded
uiApp.use(["/", "/index.html"], (0, _host2.default)(option));
uiApp.use('/downloadrule.html', (0, _downloadrule2.default)());
uiApp.use('/downloadcert.html', (0, _downloadcert2.default)());
uiApp.use(_4.default);
uiApp.use(_2.default);
server.on('request', uiApp);
// 链接ws 服务器
(0, _ws2.default)(server);
server.listen(option.port, function () {
var address = 'http://' + _getLocalIps.localIps[0] + ':' + option.port;
_log2.default.info('catproxy界面打开地址: ' + address);
// 如果能自动打开
if (option.isAutoOpen) {
(0, _tools.openCmd)(address);
}
});
server.on('error', function (err) {
if (err.message && err.message.indexOf("EACCES") > -1) {
_log2.default.error("请用sudo管理员权限打开");
process.exit(1);
} else if (err.message.indexOf("EADDRINUSE") > -1) {
_log2.default.error('端口' + option.port + '被占用,请检查端口占用情况');
process.exit(1);
} else {
_log2.default.error("出现错误:" + err.stack);
}
});
};