UNPKG

catproxy

Version:

a node proxy or host change tools

104 lines (72 loc) 3.02 kB
'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); } }); };