diff --git a/backend/server.js b/backend/server.js index c5865cf..4ef0d64 100644 --- a/backend/server.js +++ b/backend/server.js @@ -10,7 +10,9 @@ const path = require('path'); const fs = require('fs'); const { body, validationResult } = require('express-validator'); const archiver = require('archiver'); -const { execSync } = require('child_process'); +const { exec, execSync } = require('child_process'); +const util = require('util'); +const execAsync = util.promisify(exec); const { db, UserDB, ShareDB, SettingsDB, PasswordResetDB } = require('./database'); const { generateToken, authMiddleware, adminMiddleware } = require('./auth'); @@ -1775,7 +1777,7 @@ app.post('/api/admin/settings', authMiddleware, adminMiddleware, (req, res) => { }); // 获取服务器存储统计信息 -app.get('/api/admin/storage-stats', authMiddleware, adminMiddleware, (req, res) => { +app.get('/api/admin/storage-stats', authMiddleware, adminMiddleware, async (req, res) => { try { // 获取本地存储目录 const localStorageDir = path.join(__dirname, 'local-storage'); @@ -1787,7 +1789,7 @@ app.get('/api/admin/storage-stats', authMiddleware, adminMiddleware, (req, res) try { // 获取本地存储目录所在分区的磁盘信息 - const dfOutput = execSync(`df -B 1 / | tail -1`, { encoding: 'utf8' }); + const { stdout: dfOutput } = await execAsync(`df -B 1 / | tail -1`, { encoding: 'utf8' }); const parts = dfOutput.trim().split(/\s+/); if (parts.length >= 4) { @@ -1801,7 +1803,7 @@ app.get('/api/admin/storage-stats', authMiddleware, adminMiddleware, (req, res) try { // 获取本地存储目录所在的驱动器号 const driveLetter = localStorageDir.charAt(0); - const wmicOutput = execSync(`wmic logicaldisk where "DeviceID='${driveLetter}:'" get Size,FreeSpace /value`, { encoding: 'utf8' }); + const { stdout: wmicOutput } = await execAsync(`wmic logicaldisk where "DeviceID='' + driveLetter + '':''" get Size,FreeSpace /value`, { encoding: 'utf8' }); const freeMatch = wmicOutput.match(/FreeSpace=(\d+)/); const sizeMatch = wmicOutput.match(/Size=(\d+)/);