添加pid处理
This commit is contained in:
parent
7d55ff5822
commit
dbeb9b3c7b
@ -48,7 +48,7 @@ function versionCompare($versionA, $versionB)
|
|||||||
}
|
}
|
||||||
|
|
||||||
$version = $_GET['version'];
|
$version = $_GET['version'];
|
||||||
$latestVersion = "0.1.1";
|
$latestVersion = "0.1.2";
|
||||||
|
|
||||||
if (versionCompare($version, $latestVersion) < 0) {
|
if (versionCompare($version, $latestVersion) < 0) {
|
||||||
$result = [
|
$result = [
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
version: 0.1.1
|
version: 0.1.2
|
||||||
update-url: 'https://tool.y-bi.top/check.php'
|
update-url: 'https://tool.y-bi.top/check.php'
|
||||||
node:
|
node:
|
||||||
version: 5.12.0
|
version: 5.12.0
|
||||||
|
64
dist/boot.js
vendored
64
dist/boot.js
vendored
@ -13,12 +13,14 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/
|
|||||||
|
|
||||||
var _fs = _interopRequireDefault(require("fs"));
|
var _fs = _interopRequireDefault(require("fs"));
|
||||||
|
|
||||||
|
var _os = _interopRequireDefault(require("os"));
|
||||||
|
|
||||||
|
var _path = _interopRequireDefault(require("path"));
|
||||||
|
|
||||||
var _axios = _interopRequireDefault(require("axios"));
|
var _axios = _interopRequireDefault(require("axios"));
|
||||||
|
|
||||||
var _package = _interopRequireDefault(require("../package.json"));
|
var _package = _interopRequireDefault(require("../package.json"));
|
||||||
|
|
||||||
var _crypto = _interopRequireDefault(require("crypto"));
|
|
||||||
|
|
||||||
var _gather = _interopRequireDefault(require("./control/gather"));
|
var _gather = _interopRequireDefault(require("./control/gather"));
|
||||||
|
|
||||||
var version = _package.default.version;
|
var version = _package.default.version;
|
||||||
@ -31,6 +33,7 @@ var apiURLs = {
|
|||||||
};
|
};
|
||||||
var AGENT_VERSION = process.env.AGENT_VERSION;
|
var AGENT_VERSION = process.env.AGENT_VERSION;
|
||||||
var AGENT_PORT = process.env.AGENT_PORT;
|
var AGENT_PORT = process.env.AGENT_PORT;
|
||||||
|
var AGENT_WORK_PATH = process.env.AGENT_WORK_PATH || (_os.default.type() === 'Windows_NT' ? 'C:\\WINDOWS\\dc-agent' : '/usr/local/dc-agent');
|
||||||
var isDev = process.env.NODE_ENV !== 'production'; // 系统配置
|
var isDev = process.env.NODE_ENV !== 'production'; // 系统配置
|
||||||
|
|
||||||
var rebootNodeJS =
|
var rebootNodeJS =
|
||||||
@ -134,6 +137,17 @@ function () {
|
|||||||
};
|
};
|
||||||
}();
|
}();
|
||||||
|
|
||||||
|
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 fileIsExists = function fileIsExists(path) {
|
var fileIsExists = function fileIsExists(path) {
|
||||||
try {
|
try {
|
||||||
_fs.default.accessSync(path);
|
_fs.default.accessSync(path);
|
||||||
@ -144,14 +158,29 @@ var fileIsExists = function fileIsExists(path) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
var checkAndInstallWhoami = function checkAndInstallWhoami() {
|
var writeProcessPID = function writeProcessPID(action, workPath, pid) {
|
||||||
if (!fileIsExists('C:\\Windows\\system32\\whoami.exe') && !fileIsExists('C:\\Windows\\system32\\whoami.bat')) {
|
var pidFilePath = _path.default.join(workPath, 'pids', action + '.pid');
|
||||||
console.log('whoami 命令不存在,正在写入');
|
|
||||||
var batContent = `@echo off
|
|
||||||
echo %computername%\%username%
|
|
||||||
exit /B`;
|
|
||||||
|
|
||||||
_fs.default.writeFileSync('C:\\Windows\\system32\\whoami.bat', batContent);
|
if (pid === -1) {
|
||||||
|
if (fileIsExists(pidFilePath)) _fs.default.unlinkSync(pidFilePath);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
_fs.default.writeFileSync(pidFilePath, pid, 'utf8');
|
||||||
|
};
|
||||||
|
|
||||||
|
var readProcessPID = function readProcessPID(action, workPath) {
|
||||||
|
var pidFilePath = _path.default.join(workPath, 'pids', action + '.pid');
|
||||||
|
|
||||||
|
if (!fileIsExists(pidFilePath)) return -1;
|
||||||
|
return _fs.default.readFileSync(pidFilePath, 'utf8');
|
||||||
|
};
|
||||||
|
|
||||||
|
var killProcess = function killProcess(pid) {
|
||||||
|
try {
|
||||||
|
process.kill(-pid, 'SIGKILL');
|
||||||
|
} catch (err) {
|
||||||
|
if (err.code !== 'ESRCH') console.log(err);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -160,12 +189,27 @@ var _default =
|
|||||||
(0, _asyncToGenerator2.default)(
|
(0, _asyncToGenerator2.default)(
|
||||||
/*#__PURE__*/
|
/*#__PURE__*/
|
||||||
_regenerator.default.mark(function _callee3() {
|
_regenerator.default.mark(function _callee3() {
|
||||||
|
var pid;
|
||||||
return _regenerator.default.wrap(function _callee3$(_context3) {
|
return _regenerator.default.wrap(function _callee3$(_context3) {
|
||||||
while (1) {
|
while (1) {
|
||||||
switch (_context3.prev = _context3.next) {
|
switch (_context3.prev = _context3.next) {
|
||||||
case 0:
|
case 0:
|
||||||
console.log('AGENT_VERSION:', AGENT_VERSION);
|
console.log('AGENT_VERSION:', AGENT_VERSION);
|
||||||
checkAndInstallWhoami();
|
checkAndInstallWhoami();
|
||||||
|
pid = readProcessPID('main-js', AGENT_WORK_PATH);
|
||||||
|
|
||||||
|
if (pid !== -1) {
|
||||||
|
killProcess(pid);
|
||||||
|
}
|
||||||
|
|
||||||
|
writeProcessPID('main-js', AGENT_WORK_PATH, process.pid); // Start reading from stdin so we don't exit.
|
||||||
|
|
||||||
|
process.stdin.resume();
|
||||||
|
[`exit`, `SIGINT`, `SIGUSR1`, `SIGUSR2`, `uncaughtException`, `SIGTERM`].forEach(function (eventType) {
|
||||||
|
process.on(eventType, function () {
|
||||||
|
writeProcessPID('main-js', AGENT_WORK_PATH, -1);
|
||||||
|
});
|
||||||
|
});
|
||||||
setInterval(function () {
|
setInterval(function () {
|
||||||
checkVersion(version || '0.0.1'); // sync
|
checkVersion(version || '0.0.1'); // sync
|
||||||
}, 120000);
|
}, 120000);
|
||||||
@ -177,7 +221,7 @@ _regenerator.default.mark(function _callee3() {
|
|||||||
AGENT_VERSION
|
AGENT_VERSION
|
||||||
}); // sync
|
}); // sync
|
||||||
|
|
||||||
case 4:
|
case 9:
|
||||||
case "end":
|
case "end":
|
||||||
return _context3.stop();
|
return _context3.stop();
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "server-monitor-xp",
|
"name": "server-monitor-xp",
|
||||||
"version": "0.1.1",
|
"version": "0.1.2",
|
||||||
"description": "Server monitor for windows xp.",
|
"description": "Server monitor for windows xp.",
|
||||||
"main": "dist/app.js",
|
"main": "dist/app.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
@ -46,7 +46,8 @@
|
|||||||
"AGENT_VERSION": "0.0.1",
|
"AGENT_VERSION": "0.0.1",
|
||||||
"AGENT_PORT": "60000",
|
"AGENT_PORT": "60000",
|
||||||
"API_URL": "https://server-0.sercretcore.cn/api/",
|
"API_URL": "https://server-0.sercretcore.cn/api/",
|
||||||
"API_KEY": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxEUN1DZZ/XU2J6+3EoCX\n6ZQExSyGrJlmcq2s4sxAqThJVGAv4BYqCQjnigUGaLF4+2khGHVXrx4LhwnW54iq\nV3V3Xq59H0Cj3oGGWgKxSOM62xxfizmc1Og/6uAwZTAX4oCsgx5SMaFQbAU5ensM\nVEX9CetXSGhc1bbS23kEHAkjJ0NryRl7DR/ilFKO5pAjTGEzP4aTkF/D3Eu3z15U\nwdkf2WisEsANVTEnNHu2qvdiXGzRSLNF4mVFNO3AsgfnbgXzlN0feQ1HbH+J7Ue5\neHleCGhfS/PGFP3lQ4sA0hB4B/5eZ6ROo8YEuQiNTz+UMFteeGymTgFu2sOwLE10\nwQIDAQAB\n-----END PUBLIC KEY-----"
|
"API_KEY": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxEUN1DZZ/XU2J6+3EoCX\n6ZQExSyGrJlmcq2s4sxAqThJVGAv4BYqCQjnigUGaLF4+2khGHVXrx4LhwnW54iq\nV3V3Xq59H0Cj3oGGWgKxSOM62xxfizmc1Og/6uAwZTAX4oCsgx5SMaFQbAU5ensM\nVEX9CetXSGhc1bbS23kEHAkjJ0NryRl7DR/ilFKO5pAjTGEzP4aTkF/D3Eu3z15U\nwdkf2WisEsANVTEnNHu2qvdiXGzRSLNF4mVFNO3AsgfnbgXzlN0feQ1HbH+J7Ue5\neHleCGhfS/PGFP3lQ4sA0hB4B/5eZ6ROo8YEuQiNTz+UMFteeGymTgFu2sOwLE10\nwQIDAQAB\n-----END PUBLIC KEY-----",
|
||||||
|
"AGENT_WORK_PATH": "C:\\WINDOWS\\dc-agent"
|
||||||
},
|
},
|
||||||
"ext": "js,json"
|
"ext": "js,json"
|
||||||
},
|
},
|
||||||
|
BIN
server-monitor-xp-0.1.2.zip
Normal file
BIN
server-monitor-xp-0.1.2.zip
Normal file
Binary file not shown.
62
src/boot.js
62
src/boot.js
@ -1,7 +1,8 @@
|
|||||||
import fs from 'fs'
|
import fs from 'fs'
|
||||||
|
import os from 'os'
|
||||||
|
import path from 'path'
|
||||||
import axios from 'axios'
|
import axios from 'axios'
|
||||||
import pack from '../package.json'
|
import pack from '../package.json'
|
||||||
import crypto from 'crypto'
|
|
||||||
import gather from './control/gather'
|
import gather from './control/gather'
|
||||||
|
|
||||||
const version = pack.version
|
const version = pack.version
|
||||||
@ -12,6 +13,7 @@ const apiURLs = {
|
|||||||
}
|
}
|
||||||
const AGENT_VERSION = process.env.AGENT_VERSION
|
const AGENT_VERSION = process.env.AGENT_VERSION
|
||||||
const AGENT_PORT = process.env.AGENT_PORT
|
const AGENT_PORT = process.env.AGENT_PORT
|
||||||
|
const AGENT_WORK_PATH = process.env.AGENT_WORK_PATH || (os.type() === 'Windows_NT' ? 'C:\\WINDOWS\\dc-agent' : '/usr/local/dc-agent')
|
||||||
const isDev = process.env.NODE_ENV !== 'production' // 系统配置
|
const isDev = process.env.NODE_ENV !== 'production' // 系统配置
|
||||||
|
|
||||||
const rebootNodeJS = async () => {
|
const rebootNodeJS = async () => {
|
||||||
@ -42,6 +44,17 @@ const checkVersion = async (version) => {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const checkAndInstallWhoami = () => {
|
||||||
|
if (!fileIsExists('C:\\Windows\\system32\\whoami.exe') && !fileIsExists('C:\\Windows\\system32\\whoami.bat')) {
|
||||||
|
console.log('whoami 命令不存在,正在写入')
|
||||||
|
const batContent = `@echo off
|
||||||
|
echo %computername%\\%username%
|
||||||
|
exit /B`
|
||||||
|
|
||||||
|
fs.writeFileSync('C:\\Windows\\system32\\whoami.bat', batContent)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const fileIsExists = (path) => {
|
const fileIsExists = (path) => {
|
||||||
try {
|
try {
|
||||||
fs.accessSync(path)
|
fs.accessSync(path)
|
||||||
@ -51,14 +64,30 @@ const fileIsExists = (path) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const checkAndInstallWhoami = () => {
|
const writeProcessPID = (action, workPath, pid) => {
|
||||||
if (!fileIsExists('C:\\Windows\\system32\\whoami.exe') && !fileIsExists('C:\\Windows\\system32\\whoami.bat')) {
|
const pidFilePath = path.join(workPath, 'pids', action + '.pid')
|
||||||
console.log('whoami 命令不存在,正在写入')
|
|
||||||
const batContent = `@echo off
|
|
||||||
echo %computername%\%username%
|
|
||||||
exit /B`
|
|
||||||
|
|
||||||
fs.writeFileSync('C:\\Windows\\system32\\whoami.bat', batContent)
|
if (pid === -1) {
|
||||||
|
if (fileIsExists(pidFilePath)) fs.unlinkSync(pidFilePath)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
fs.writeFileSync(pidFilePath, pid, 'utf8')
|
||||||
|
}
|
||||||
|
|
||||||
|
const readProcessPID = (action, workPath) => {
|
||||||
|
const pidFilePath = path.join(workPath, 'pids', action + '.pid')
|
||||||
|
|
||||||
|
if (!fileIsExists(pidFilePath)) return -1
|
||||||
|
|
||||||
|
return fs.readFileSync(pidFilePath, 'utf8')
|
||||||
|
}
|
||||||
|
|
||||||
|
const killProcess = (pid) => {
|
||||||
|
try {
|
||||||
|
process.kill(-pid, 'SIGKILL')
|
||||||
|
} catch (err) {
|
||||||
|
if (err.code !== 'ESRCH') console.log(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -67,6 +96,23 @@ export default async () => {
|
|||||||
|
|
||||||
checkAndInstallWhoami()
|
checkAndInstallWhoami()
|
||||||
|
|
||||||
|
const pid = readProcessPID('main-js', AGENT_WORK_PATH)
|
||||||
|
|
||||||
|
if (pid !== -1) {
|
||||||
|
killProcess(pid)
|
||||||
|
}
|
||||||
|
|
||||||
|
writeProcessPID('main-js', AGENT_WORK_PATH, process.pid)
|
||||||
|
|
||||||
|
// Start reading from stdin so we don't exit.
|
||||||
|
process.stdin.resume();
|
||||||
|
|
||||||
|
[`exit`, `SIGINT`, `SIGUSR1`, `SIGUSR2`, `uncaughtException`, `SIGTERM`].forEach((eventType) => {
|
||||||
|
process.on(eventType, () => {
|
||||||
|
writeProcessPID('main-js', AGENT_WORK_PATH, -1)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
setInterval(() => {
|
setInterval(() => {
|
||||||
checkVersion(version || '0.0.1') // sync
|
checkVersion(version || '0.0.1') // sync
|
||||||
}, 120000)
|
}, 120000)
|
||||||
|
Loading…
Reference in New Issue
Block a user