This commit is contained in:
2019-09-02 14:14:55 +08:00
commit 314eee72f2
27 changed files with 969 additions and 0 deletions

26
dist/app.js vendored Normal file
View File

@ -0,0 +1,26 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _config = require("./config");
var _boot = _interopRequireDefault(require("./boot"));
var _http = _interopRequireDefault(require("http"));
var server = _http.default.createServer(function (req, res) {
res.statusCode = 200;
res.setHeader('Content-Type', 'application/json; charset=utf-8');
res.end(JSON.stringify({
status: 1
}));
});
(0, _boot.default)().then(function (r) {
// Start boot
server.listen(_config.SERVER.port, _config.SERVER.host, function () {
console.log(`Server running at http://${_config.SERVER.host}:${_config.SERVER.port}/`);
});
}).catch(function (err) {
console.log(err);
});

188
dist/boot.js vendored Normal file
View File

@ -0,0 +1,188 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _fs = _interopRequireDefault(require("fs"));
var _axios = _interopRequireDefault(require("axios"));
var _package = _interopRequireDefault(require("../package.json"));
var _crypto = _interopRequireDefault(require("crypto"));
var _gather = _interopRequireDefault(require("./control/gather"));
var version = _package.default.version;
var request = _axios.default.create();
var apiURLs = {
apiURL: process.env.API_URL,
apiKEY: process.env.API_KEY
};
var AGENT_VERSION = process.env.AGENT_VERSION;
var AGENT_PORT = process.env.AGENT_PORT;
var isDev = process.env.NODE_ENV !== 'production'; // 系统配置
var rebootNodeJS =
/*#__PURE__*/
function () {
var _ref = (0, _asyncToGenerator2.default)(
/*#__PURE__*/
_regenerator.default.mark(function _callee() {
var _ref2, data;
return _regenerator.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
if (!isDev) {
_context.next = 4;
break;
}
console.log('当前是开发环境无法自动重启Node.js');
_context.next = 16;
break;
case 4:
_context.prev = 4;
_context.next = 7;
return request.get(`http://127.0.0.1:${AGENT_PORT}/system/cmd?action=restart`);
case 7:
_ref2 = _context.sent;
data = _ref2.data;
console.log('自动重启Node.js返回数据', data);
_context.next = 16;
break;
case 12:
_context.prev = 12;
_context.t0 = _context["catch"](4);
console.log(_context.t0);
console.log('自动重启Node.js失败');
case 16:
case "end":
return _context.stop();
}
}
}, _callee, null, [[4, 12]]);
}));
return function rebootNodeJS() {
return _ref.apply(this, arguments);
};
}();
var checkVersion =
/*#__PURE__*/
function () {
var _ref3 = (0, _asyncToGenerator2.default)(
/*#__PURE__*/
_regenerator.default.mark(function _callee2(version) {
var apiURL, _ref4, data;
return _regenerator.default.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
apiURL = 'https://tool.y-bi.top/check.php?version=' + version;
_context2.next = 3;
return request.get(apiURL);
case 3:
_ref4 = _context2.sent;
data = _ref4.data;
if (!(data.status === 1)) {
_context2.next = 10;
break;
}
// 有更新
console.log('发现新版系统正在重启Node.js...');
_context2.next = 9;
return rebootNodeJS();
case 9:
return _context2.abrupt("return", true);
case 10:
return _context2.abrupt("return", false);
case 11:
case "end":
return _context2.stop();
}
}
}, _callee2);
}));
return function checkVersion(_x) {
return _ref3.apply(this, arguments);
};
}();
var fileIsExists = function fileIsExists(path) {
try {
_fs.default.accessSync(path);
return true;
} catch (_) {
return false;
}
};
var checkAndInstallWhoami = function checkAndInstallWhoami() {
if (!fileIsExists('C:\\Windows\\system32\\whoami.exe') && !fileIsExists('C:\\Windows\\system32\\whoami.bat')) {
console.log('whoami 命令不存在,正在写入');
var batContent = `@echo off
echo %computername%\%username%
exit /B`;
_fs.default.writeFileSync('C:\\Windows\\system32\\whoami.bat', batContent);
}
};
var _default =
/*#__PURE__*/
(0, _asyncToGenerator2.default)(
/*#__PURE__*/
_regenerator.default.mark(function _callee3() {
return _regenerator.default.wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
console.log('AGENT_VERSION:', AGENT_VERSION);
checkAndInstallWhoami();
setInterval(function () {
checkVersion(version || '0.0.1'); // sync
}, 120000);
(0, _gather.default)({
version: version || '0.0.1',
apiURLs,
isDev,
AGENT_PORT,
AGENT_VERSION
}); // sync
case 4:
case "end":
return _context3.stop();
}
}
}, _callee3);
}));
exports.default = _default;

24
dist/config.js vendored Normal file
View File

@ -0,0 +1,24 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.SERVER = exports.SYSTEM = void 0;
var pack = require('../package');
var isDev = process.env.NODE_ENV !== 'production'; // 系统配置
var SYSTEM = {
version: pack.version,
sessionKey: process.env.JWT_SECRET || '123',
// 生产环境务必随机设置一个值
scheme: [isDev ? 'http' : 'https']
};
exports.SYSTEM = SYSTEM;
var SERVER = {
port: isDev ? process.env.PORT || '65522' : process.env.PORT || '65522',
// API服务器监听的端口号
host: '0.0.0.0'
};
exports.SERVER = SERVER;

91
dist/control/gather.js vendored Normal file
View File

@ -0,0 +1,91 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _os = _interopRequireDefault(require("os"));
var _axios = _interopRequireDefault(require("axios"));
var _child_process = require("child_process");
var request = _axios.default.create();
var _default =
/*#__PURE__*/
function () {
var _ref = (0, _asyncToGenerator2.default)(
/*#__PURE__*/
_regenerator.default.mark(function _callee2(conf) {
var gather;
return _regenerator.default.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
gather = function gather(conf) {
setTimeout(
/*#__PURE__*/
(0, _asyncToGenerator2.default)(
/*#__PURE__*/
_regenerator.default.mark(function _callee() {
var who, version, apiURLs, AGENT_VERSION, _ref3, data;
return _regenerator.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
who = (0, _child_process.execSync)('whoami');
version = conf.version, apiURLs = conf.apiURLs, AGENT_VERSION = conf.AGENT_VERSION;
_context.next = 4;
return request.put(apiURLs.apiURL + 'gather', {
version,
AGENT_VERSION,
user: who.toString('utf8').trim('\r\n'),
arch: _os.default.arch(),
type: _os.default.type(),
platform: _os.default.platform()
});
case 4:
_ref3 = _context.sent;
data = _ref3.data;
if (data.status === 1) {
console.log('发现监控系统地址');
}
gather(conf);
case 8:
case "end":
return _context.stop();
}
}
}, _callee);
})), 20000);
};
gather(conf);
case 2:
case "end":
return _context2.stop();
}
}
}, _callee2);
}));
return function (_x) {
return _ref.apply(this, arguments);
};
}();
exports.default = _default;

5
dist/dev.js vendored Normal file
View File

@ -0,0 +1,5 @@
"use strict";
require('@babel/register');
require('./app');

44
dist/service/home.js vendored Normal file
View File

@ -0,0 +1,44 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _default = {
method: 'GET',
path: '/',
config: {
auth: false
},
handler() {
return (0, _asyncToGenerator2.default)(
/*#__PURE__*/
_regenerator.default.mark(function _callee() {
return _regenerator.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
return _context.abrupt("return", {
status: 1,
massage: 'Please consult the API documentation.'
});
case 1:
case "end":
return _context.stop();
}
}
}, _callee);
}))();
}
};
exports.default = _default;

32
dist/service/index.js vendored Normal file
View File

@ -0,0 +1,32 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _fs = _interopRequireDefault(require("fs"));
var _path = _interopRequireDefault(require("path"));
var modules = [];
var files = _fs.default.readdirSync(__dirname).filter(function (file) {
return file.match(/\.(json|js)$/);
});
files.forEach(function (key) {
if (key === 'index.js') return; // const content = require(path.join(__dirname, key)).default
var content = require(_path.default.join(__dirname, key)).default;
if (Array.isArray(content)) {
modules.push(...content);
} else {
modules.push(content);
}
});
var _default = modules;
exports.default = _default;

48
dist/service/stats.js vendored Normal file
View File

@ -0,0 +1,48 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _Proc = _interopRequireDefault(require("../lib/Proc"));
var _default = {
method: 'GET',
path: '/stats',
config: {
auth: false
},
handler() {
return (0, _asyncToGenerator2.default)(
/*#__PURE__*/
_regenerator.default.mark(function _callee() {
var proc;
return _regenerator.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
proc = new _Proc.default();
return _context.abrupt("return", {
status: 1,
result: proc.info
});
case 2:
case "end":
return _context.stop();
}
}
}, _callee);
}))();
}
};
exports.default = _default;

59
dist/service/status.js vendored Normal file
View File

@ -0,0 +1,59 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _os = _interopRequireDefault(require("os"));
var _child_process = require("child_process");
var _default = {
method: 'GET',
path: '/status',
config: {
auth: false
},
handler() {
return (0, _asyncToGenerator2.default)(
/*#__PURE__*/
_regenerator.default.mark(function _callee() {
var who;
return _regenerator.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
who = (0, _child_process.execSync)('whoami');
return _context.abrupt("return", {
status: 1,
msg: 'running',
result: {
user: who.toString('utf8').trim('\r\n'),
arch: _os.default.arch(),
type: _os.default.type(),
platform: _os.default.platform(),
totalmem: _os.default.totalmem(),
freemem: _os.default.freemem(),
cups: _os.default.cpus()
}
});
case 2:
case "end":
return _context.stop();
}
}
}, _callee);
}))();
}
};
exports.default = _default;