82 lines
1.9 KiB
JavaScript
82 lines
1.9 KiB
JavaScript
import fs from 'fs'
|
||
import axios from 'axios'
|
||
import pack from '../package.json'
|
||
import crypto from 'crypto'
|
||
import gather from './control/gather'
|
||
|
||
const version = pack.version
|
||
const request = axios.create()
|
||
const apiURLs = {
|
||
apiURL: process.env.API_URL,
|
||
apiKEY: process.env.API_KEY
|
||
}
|
||
const AGENT_VERSION = process.env.AGENT_VERSION
|
||
const AGENT_PORT = process.env.AGENT_PORT
|
||
const isDev = process.env.NODE_ENV !== 'production' // 系统配置
|
||
|
||
const rebootNodeJS = async () => {
|
||
if (isDev) {
|
||
console.log('当前是开发环境,无法自动重启Node.js')
|
||
} else {
|
||
try {
|
||
const { data } = await request.get(`http://127.0.0.1:${AGENT_PORT}/system/cmd?action=restart`)
|
||
console.log('自动重启Node.js返回数据:', data)
|
||
} catch (err) {
|
||
console.log(err)
|
||
console.log('自动重启Node.js失败')
|
||
}
|
||
}
|
||
}
|
||
|
||
const checkVersion = async (version) => {
|
||
const apiURL = 'https://tool.y-bi.top/check.php?version=' + version
|
||
|
||
const { data } = await request.get(apiURL)
|
||
|
||
if (data.status === 1) { // 有更新
|
||
console.log('发现新版系统,正在重启Node.js...')
|
||
await rebootNodeJS()
|
||
return true
|
||
}
|
||
|
||
return false
|
||
}
|
||
|
||
const fileIsExists = (path) => {
|
||
try {
|
||
fs.accessSync(path)
|
||
return true
|
||
} catch (_) {
|
||
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)
|
||
}
|
||
}
|
||
|
||
export default async () => {
|
||
console.log('AGENT_VERSION:', AGENT_VERSION)
|
||
|
||
checkAndInstallWhoami()
|
||
|
||
setInterval(() => {
|
||
checkVersion(version || '0.0.1') // sync
|
||
}, 120000)
|
||
|
||
gather({
|
||
version: version || '0.0.1',
|
||
apiURLs,
|
||
isDev,
|
||
AGENT_PORT,
|
||
AGENT_VERSION
|
||
}) // sync
|
||
}
|