♻️ 调整utils引用
This commit is contained in:
parent
4e9bfe46d3
commit
beffd97396
@ -3,6 +3,8 @@
|
||||
### Features
|
||||
|
||||
* 支持暗黑主题切换 ✔
|
||||
* 批量脚本下发执行结果通知重复的bug ✔
|
||||
* 修复交换内存占比的bug ✔
|
||||
|
||||
## [2.2.0](https://github.com/chaos-zhu/easynode/releases) (2024-08-17)
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
const { readGroupList, writeGroupList, readHostList, writeHostList, randomStr } = require('../utils')
|
||||
const { readGroupList, writeGroupList, readHostList, writeHostList } = require('../utils/storage')
|
||||
|
||||
async function getGroupList({ res }) {
|
||||
let data = await readGroupList()
|
||||
|
@ -1,4 +1,5 @@
|
||||
const { readHostList, writeHostList, RSADecryptSync, AESEncryptSync, AESDecryptSync } = require('../utils')
|
||||
const { readHostList, writeHostList } = require('../utils/storage')
|
||||
const { RSADecryptSync, AESEncryptSync, AESDecryptSync } = require('../utils/encrypt')
|
||||
|
||||
async function getHostList({ res }) {
|
||||
// console.log('get-host-list')
|
||||
|
@ -1,4 +1,4 @@
|
||||
const { readNotifyConfig, writeNotifyConfig, readNotifyList, writeNotifyList } = require('../utils')
|
||||
const { readNotifyConfig, writeNotifyConfig, readNotifyList, writeNotifyList } = require('../utils/storage')
|
||||
const { sendServerChan, sendEmail } = require('../utils/notify')
|
||||
// const commonTemp = require('../template/commonTemp')
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
const { readOneKeyRecord, deleteOneKeyRecord } = require('../utils')
|
||||
const { readOneKeyRecord, deleteOneKeyRecord } = require('../utils/storage')
|
||||
|
||||
async function getOnekeyRecord({ res }) {
|
||||
let data = await readOneKeyRecord()
|
||||
|
@ -1,5 +1,6 @@
|
||||
const localShellJson = require('../config/shell.json')
|
||||
const { readScriptList, writeScriptList, randomStr } = require('../utils')
|
||||
const { readScriptList, writeScriptList } = require('../utils/storage')
|
||||
const { randomStr } = require('../utils/tools')
|
||||
|
||||
let localShell = JSON.parse(JSON.stringify(localShellJson)).map((item) => {
|
||||
return { ...item, id: randomStr(10), index: '--', description: item.description + '|内置脚本' }
|
||||
|
@ -1,4 +1,5 @@
|
||||
const { readSSHRecord, writeSSHRecord, readHostList, writeHostList, RSADecryptSync, AESEncryptSync, AESDecryptSync } = require('../utils')
|
||||
const { readSSHRecord, writeSSHRecord, readHostList, writeHostList } = require('../utils/storage')
|
||||
const { RSADecryptSync, AESEncryptSync, AESDecryptSync } = require('../utils/encrypt')
|
||||
|
||||
async function getSSHList({ res }) {
|
||||
// console.log('get-host-list')
|
||||
|
@ -1,7 +1,9 @@
|
||||
const jwt = require('jsonwebtoken')
|
||||
const axios = require('axios')
|
||||
const { getNetIPInfo, readKey, writeKey, RSADecryptSync, AESEncryptSync, SHA1Encrypt } = require('../utils')
|
||||
const { asyncSendNotice } = require('../utils/notify')
|
||||
const { readKey, writeKey } = require('../utils/storage')
|
||||
const { RSADecryptSync, AESEncryptSync, SHA1Encrypt } = require('../utils/encrypt')
|
||||
const { getNetIPInfo } = require('../utils/tools')
|
||||
|
||||
const getpublicKey = async ({ res }) => {
|
||||
let { publicKey: data } = await readKey()
|
||||
|
@ -1,20 +1,7 @@
|
||||
const NodeRSA = require('node-rsa')
|
||||
const { getNetIPInfo, readHostList, writeHostList, readKey, writeKey, randomStr, isProd, AESEncryptSync } = require('./utils')
|
||||
|
||||
const isDev = !isProd()
|
||||
|
||||
// 存储本机IP, 供host列表接口调用
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
async function initLocalIp() {
|
||||
if(isDev) return consola.info('非生产环境不初始化保存本地IP')
|
||||
const localNetIPInfo = await getNetIPInfo()
|
||||
let vpsList = await readHostList()
|
||||
let { ip: localNetIP } = localNetIPInfo
|
||||
if(vpsList.some(({ host }) => host === localNetIP)) return consola.info('本机IP已储存: ', localNetIP)
|
||||
vpsList.unshift({ name: 'server-side-host', host: localNetIP, group: 'default' })
|
||||
writeHostList(vpsList)
|
||||
consola.info('Task: 生产环境首次启动储存本机IP: ', localNetIP)
|
||||
}
|
||||
const { readKey, writeKey } = require('./utils/storage')
|
||||
const { randomStr } = require('./utils/tools')
|
||||
const { AESEncryptSync } = require('./utils/encrypt')
|
||||
|
||||
// 初始化公私钥, 供登录、保存ssh密钥/密码等加解密
|
||||
async function initRsa() {
|
||||
@ -43,7 +30,6 @@ async function randomJWTSecret() {
|
||||
module.exports = async () => {
|
||||
await randomJWTSecret() // 全局密钥
|
||||
await initRsa() // 全局公钥密钥
|
||||
// initLocalIp() // :TODO: 默认添加服务端vps
|
||||
// 用于记录客户端登录IP的列表
|
||||
global.loginRecord = []
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
const { verifyAuthSync } = require('../utils')
|
||||
const { apiPrefix } = require('../config')
|
||||
const { verifyAuthSync } = require('../utils/verify-auth')
|
||||
|
||||
let whitePath = [
|
||||
'/login',
|
||||
|
@ -1,6 +1,7 @@
|
||||
const schedule = require('node-schedule')
|
||||
const { readHostList, formatTimestamp } = require('../utils')
|
||||
const { asyncSendNotice } = require('../utils/notify')
|
||||
const { readHostList } = require('../utils/storage')
|
||||
const { formatTimestamp } = require('../utils/tools')
|
||||
|
||||
const expiredNotifyJob = async () => {
|
||||
consola.info('=====开始检测服务器到期时间=====', new Date())
|
||||
|
@ -8,7 +8,7 @@ const wsSftp = require('./socket/sftp')
|
||||
// const wsHostStatus = require('./socket/host-status')
|
||||
const wsClientInfo = require('./socket/clients')
|
||||
const wsOnekey = require('./socket/onekey')
|
||||
const { throwError } = require('./utils')
|
||||
const { throwError } = require('./utils/tools')
|
||||
|
||||
const httpServer = () => {
|
||||
const app = new Koa()
|
||||
|
@ -1,8 +1,8 @@
|
||||
const { Server: ServerIO } = require('socket.io')
|
||||
const { io: ClientIO } = require('socket.io-client')
|
||||
const { readHostList } = require('../utils')
|
||||
const { readHostList } = require('../utils/storage')
|
||||
const { clientPort } = require('../config')
|
||||
const { verifyAuthSync } = require('../utils')
|
||||
const { verifyAuthSync } = require('../utils/verify-auth')
|
||||
|
||||
let clientSockets = []
|
||||
let clientsData = {}
|
||||
|
@ -1,7 +1,7 @@
|
||||
const { Server: ServerIO } = require('socket.io')
|
||||
const { io: ClientIO } = require('socket.io-client')
|
||||
const { clientPort } = require('../config')
|
||||
const { verifyAuthSync } = require('../utils')
|
||||
const { verifyAuthSync } = require('../utils/verify-auth')
|
||||
|
||||
let hostSockets = {}
|
||||
|
||||
|
@ -1,7 +1,10 @@
|
||||
const { Server } = require('socket.io')
|
||||
const { Client: SSHClient } = require('ssh2')
|
||||
const { readHostList, readSSHRecord, verifyAuthSync, AESDecryptSync, writeOneKeyRecord, shellThrottle } = require('../utils')
|
||||
const { asyncSendNotice } = require('../utils/notify')
|
||||
const { readSSHRecord, readHostList, writeOneKeyRecord } = require('../utils/storage')
|
||||
const { verifyAuthSync } = require('../utils/verify-auth')
|
||||
const { shellThrottle } = require('../utils/tools')
|
||||
const { AESDecryptSync } = require('../utils/encrypt')
|
||||
|
||||
const execStatusEnum = {
|
||||
connecting: '连接中',
|
||||
|
@ -1,11 +1,12 @@
|
||||
const { Server } = require('socket.io')
|
||||
const SFTPClient = require('ssh2-sftp-client')
|
||||
const rawPath = require('path')
|
||||
const fs = require('fs-extra')
|
||||
|
||||
const { readHostList, readSSHRecord, verifyAuthSync, AESDecryptSync } = require('../utils')
|
||||
const { sftpCacheDir } = require('../config')
|
||||
const SFTPClient = require('ssh2-sftp-client')
|
||||
const CryptoJS = require('crypto-js')
|
||||
const { Server } = require('socket.io')
|
||||
const { sftpCacheDir } = require('../config')
|
||||
const { verifyAuthSync } = require('../utils/verify-auth')
|
||||
const { AESDecryptSync } = require('../utils/encrypt')
|
||||
const { readSSHRecord, readHostList } = require('../utils/storage')
|
||||
|
||||
// 读取切片
|
||||
const pipeStream = (path, writeStream) => {
|
||||
|
@ -1,6 +1,8 @@
|
||||
const { Server } = require('socket.io')
|
||||
const { Client: SSHClient } = require('ssh2')
|
||||
const { readHostList, readSSHRecord, verifyAuthSync, AESDecryptSync } = require('../utils')
|
||||
const { verifyAuthSync } = require('../utils/verify-auth')
|
||||
const { AESDecryptSync } = require('../utils/encrypt')
|
||||
const { readSSHRecord, readHostList } = require('../utils/storage')
|
||||
const { asyncSendNotice } = require('../utils/notify')
|
||||
|
||||
function createInteractiveShell(socket, sshClient) {
|
||||
|
@ -1,57 +0,0 @@
|
||||
const {
|
||||
readSSHRecord,
|
||||
writeSSHRecord,
|
||||
readHostList,
|
||||
writeHostList,
|
||||
readKey,
|
||||
writeKey,
|
||||
readGroupList,
|
||||
writeGroupList,
|
||||
readScriptList,
|
||||
writeScriptList,
|
||||
readOneKeyRecord,
|
||||
writeOneKeyRecord,
|
||||
deleteOneKeyRecord,
|
||||
readNotifyConfig,
|
||||
writeNotifyConfig,
|
||||
getNotifySwByType,
|
||||
readNotifyList,
|
||||
writeNotifyList
|
||||
} = require('./storage')
|
||||
const { RSADecryptSync, AESEncryptSync, AESDecryptSync, SHA1Encrypt } = require('./encrypt')
|
||||
const { verifyAuthSync, isProd } = require('./verify-auth')
|
||||
const { getNetIPInfo, throwError, isIP, randomStr, getUTCDate, formatTimestamp, shellThrottle } = require('./tools')
|
||||
|
||||
module.exports = {
|
||||
getNetIPInfo,
|
||||
throwError,
|
||||
isIP,
|
||||
randomStr,
|
||||
getUTCDate,
|
||||
formatTimestamp,
|
||||
shellThrottle,
|
||||
verifyAuthSync,
|
||||
isProd,
|
||||
RSADecryptSync,
|
||||
AESEncryptSync,
|
||||
AESDecryptSync,
|
||||
SHA1Encrypt,
|
||||
readSSHRecord,
|
||||
writeSSHRecord,
|
||||
readHostList,
|
||||
writeHostList,
|
||||
readKey,
|
||||
writeKey,
|
||||
readGroupList,
|
||||
writeGroupList,
|
||||
readScriptList,
|
||||
writeScriptList,
|
||||
readOneKeyRecord,
|
||||
writeOneKeyRecord,
|
||||
deleteOneKeyRecord,
|
||||
readNotifyConfig,
|
||||
writeNotifyConfig,
|
||||
getNotifySwByType,
|
||||
readNotifyList,
|
||||
writeNotifyList
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
const nodemailer = require('nodemailer')
|
||||
const axios = require('axios')
|
||||
const { getNotifySwByType, readNotifyConfig } = require('../utils')
|
||||
const { getNotifySwByType, readNotifyConfig } = require('../utils/storage')
|
||||
const commonTemp = require('../template/commonTemp')
|
||||
|
||||
function sendServerChan(sendKey, title, content) {
|
||||
|
@ -1,84 +0,0 @@
|
||||
const osu = require('node-os-utils')
|
||||
const os = require('os')
|
||||
|
||||
let cpu = osu.cpu
|
||||
let mem = osu.mem
|
||||
let drive = osu.drive
|
||||
let netstat = osu.netstat
|
||||
let osuOs = osu.os
|
||||
let users = osu.users
|
||||
|
||||
async function cpuInfo() {
|
||||
let cpuUsage = await cpu.usage(200)
|
||||
let cpuCount = cpu.count()
|
||||
let cpuModel = cpu.model()
|
||||
return {
|
||||
cpuUsage,
|
||||
cpuCount,
|
||||
cpuModel
|
||||
}
|
||||
}
|
||||
|
||||
async function memInfo() {
|
||||
let memInfo = await mem.info()
|
||||
return {
|
||||
...memInfo
|
||||
}
|
||||
}
|
||||
|
||||
async function driveInfo() {
|
||||
let driveInfo = {}
|
||||
try {
|
||||
driveInfo = await drive.info()
|
||||
} catch {
|
||||
// console.log(driveInfo)
|
||||
}
|
||||
return driveInfo
|
||||
}
|
||||
|
||||
async function netstatInfo() {
|
||||
let netstatInfo = await netstat.inOut()
|
||||
return netstatInfo === 'not supported' ? {} : netstatInfo
|
||||
}
|
||||
|
||||
async function osInfo() {
|
||||
let type = os.type()
|
||||
let platform = os.platform()
|
||||
let release = os.release()
|
||||
let uptime = osuOs.uptime()
|
||||
let ip = osuOs.ip()
|
||||
let hostname = osuOs.hostname()
|
||||
let arch = osuOs.arch()
|
||||
return {
|
||||
type,
|
||||
platform,
|
||||
release,
|
||||
ip,
|
||||
hostname,
|
||||
arch,
|
||||
uptime
|
||||
}
|
||||
}
|
||||
|
||||
async function openedCount() {
|
||||
let openedCount = await users.openedCount()
|
||||
return openedCount === 'not supported' ? 0 : openedCount
|
||||
}
|
||||
|
||||
module.exports = async () => {
|
||||
let data = {}
|
||||
try {
|
||||
data = {
|
||||
cpuInfo: await cpuInfo(),
|
||||
memInfo: await memInfo(),
|
||||
driveInfo: await driveInfo(),
|
||||
netstatInfo: await netstatInfo(),
|
||||
osInfo: await osInfo(),
|
||||
openedCount: await openedCount()
|
||||
}
|
||||
return data
|
||||
} catch(err){
|
||||
console.error('获取系统信息出错:', err)
|
||||
return err.toString()
|
||||
}
|
||||
}
|
@ -1,47 +0,0 @@
|
||||
// based off of https://github.com/apaszke/tcp-ping
|
||||
// rewritten with modern es6 syntax & promises
|
||||
const { io: ClientIO } = require('socket.io-client')
|
||||
|
||||
const testConnectAsync = (options) => {
|
||||
let connectTimes = 0
|
||||
options = Object.assign({ retryTimes: 3, timeout: 5000, host: 'http://localhost', port: '80' }, options)
|
||||
const { retryTimes, host, port, timeout } = options
|
||||
// eslint-disable-next-line
|
||||
return new Promise(async (resolve, reject) => {
|
||||
while (connectTimes < retryTimes) {
|
||||
try {
|
||||
connectTimes++
|
||||
await connect({ host, port, timeout })
|
||||
break
|
||||
} catch (error) {
|
||||
// 重连次数达到限制仍未连接成功
|
||||
if(connectTimes === retryTimes) {
|
||||
reject({ message: error.message, host, port, connectTimes })
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
resolve({ status: 'connect_success', host, port, connectTimes })
|
||||
})
|
||||
}
|
||||
|
||||
const connect = (options) => {
|
||||
const { host, port, timeout } = options
|
||||
return new Promise((resolve, reject) => {
|
||||
let io = ClientIO(`${ host }:${ port }`, {
|
||||
path: '/client/os-info',
|
||||
forceNew: false,
|
||||
timeout,
|
||||
reconnection: false
|
||||
})
|
||||
.on('connect', () => {
|
||||
resolve()
|
||||
io.disconnect()
|
||||
})
|
||||
.on('connect_error', (error) => {
|
||||
reject(error)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
module.exports = testConnectAsync
|
@ -226,6 +226,11 @@ let shellThrottle = (fn, delay = 1000) => {
|
||||
return throttled
|
||||
}
|
||||
|
||||
const isProd = () => {
|
||||
const EXEC_ENV = process.env.EXEC_ENV || 'production'
|
||||
return EXEC_ENV === 'production'
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
getNetIPInfo,
|
||||
throwError,
|
||||
@ -234,5 +239,6 @@ module.exports = {
|
||||
getUTCDate,
|
||||
formatTimestamp,
|
||||
resolvePath,
|
||||
shellThrottle
|
||||
shellThrottle,
|
||||
isProd
|
||||
}
|
@ -23,12 +23,6 @@ const verifyAuthSync = async (token, clientIp) => {
|
||||
}
|
||||
}
|
||||
|
||||
const isProd = () => {
|
||||
const EXEC_ENV = process.env.EXEC_ENV || 'production'
|
||||
return EXEC_ENV === 'production'
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
verifyAuthSync,
|
||||
isProd
|
||||
verifyAuthSync
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user