From d9a62e13d045876914891a31904baf36a9ed849a Mon Sep 17 00:00:00 2001 From: Unitwk Date: Mon, 19 Aug 2024 11:42:55 +0800 Subject: [PATCH] Refactor: replace "node-disk-info" module --- daemon/package-lock.json | 20 -------------------- daemon/package.json | 1 - daemon/src/routers/file_router.ts | 12 ++---------- daemon/src/service/file_router_service.ts | 17 +++++++++++++++++ 4 files changed, 19 insertions(+), 31 deletions(-) diff --git a/daemon/package-lock.json b/daemon/package-lock.json index 1991aab4..b01e28a8 100644 --- a/daemon/package-lock.json +++ b/daemon/package-lock.json @@ -25,7 +25,6 @@ "koa-send": "^5.0.1", "log4js": "^6.4.0", "module-alias": "^2.2.3", - "node-disk-info": "^1.3.0", "node-schedule": "^2.0.0", "node-stream-zip": "^1.15.0", "os-utils": "0.0.14", @@ -3282,17 +3281,6 @@ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, - "node_modules/node-disk-info": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/node-disk-info/-/node-disk-info-1.3.0.tgz", - "integrity": "sha512-NEx858vJZ0AoBtmD/ChBIHLjFTF28xCsDIgmFl4jtGKsvlUx9DU/OrMDjvj3qp/E4hzLN0HvTg7eJx5XFQvbeg==", - "dependencies": { - "iconv-lite": "^0.6.2" - }, - "engines": { - "node": ">= 12" - } - }, "node_modules/node-releases": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", @@ -7534,14 +7522,6 @@ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, - "node-disk-info": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/node-disk-info/-/node-disk-info-1.3.0.tgz", - "integrity": "sha512-NEx858vJZ0AoBtmD/ChBIHLjFTF28xCsDIgmFl4jtGKsvlUx9DU/OrMDjvj3qp/E4hzLN0HvTg7eJx5XFQvbeg==", - "requires": { - "iconv-lite": "^0.6.2" - } - }, "node-releases": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", diff --git a/daemon/package.json b/daemon/package.json index fd08eff4..4e0c7d8b 100644 --- a/daemon/package.json +++ b/daemon/package.json @@ -33,7 +33,6 @@ "koa-send": "^5.0.1", "log4js": "^6.4.0", "module-alias": "^2.2.3", - "node-disk-info": "^1.3.0", "node-schedule": "^2.0.0", "node-stream-zip": "^1.15.0", "os-utils": "0.0.14", diff --git a/daemon/src/routers/file_router.ts b/daemon/src/routers/file_router.ts index 8bb43566..289c238b 100755 --- a/daemon/src/routers/file_router.ts +++ b/daemon/src/routers/file_router.ts @@ -2,15 +2,9 @@ import { $t } from "../i18n"; import * as protocol from "../service/protocol"; import { routerApp } from "../service/router"; import InstanceSubsystem from "../service/system_instance"; -import { getFileManager } from "../service/file_router_service"; +import { getFileManager, getWindowsDisks } from "../service/file_router_service"; import { globalConfiguration, globalEnv } from "../entity/config"; import os from "os"; -import * as nodeDiskInfo from "node-disk-info"; - -let diskInfos: any[] = []; -if (os.platform() === "win32") { - diskInfos = nodeDiskInfo.getDiskInfoSync(); -} // Some routers operate router authentication middleware routerApp.use((event, ctx, data, next) => { @@ -61,9 +55,7 @@ routerApp.on("file/status", async (ctx, data) => { globalFileTask: globalEnv.fileTaskCount ?? 0, platform: os.platform(), isGlobalInstance: data.instanceUuid === InstanceSubsystem.GLOBAL_INSTANCE_UUID, - disks: diskInfos.map((v) => { - return String(v._mounted).replace(":", ""); - }) + disks: getWindowsDisks() }); } catch (error: any) { protocol.responseError(ctx, error); diff --git a/daemon/src/service/file_router_service.ts b/daemon/src/service/file_router_service.ts index c02892fb..21781351 100755 --- a/daemon/src/service/file_router_service.ts +++ b/daemon/src/service/file_router_service.ts @@ -1,6 +1,8 @@ +import fs from "fs-extra"; import { $t } from "../i18n"; import InstanceSubsystem from "../service/system_instance"; import FileManager from "./system_file"; +import os from "os"; export function getFileManager(instanceUuid: string) { // Initialize a file manager for the instance, and assign codes, restrictions, etc. @@ -11,3 +13,18 @@ export function getFileManager(instanceUuid: string) { const cwd = instance.config.cwd; return new FileManager(cwd, fileCode); } + +let cacheDisks: string[] = []; + +export function getWindowsDisks() { + if (os.platform() !== "win32") return []; + if (cacheDisks.length > 0) return cacheDisks; + const res: string[] = []; + // A - Z + for (let i = 65; i <= 90; i++) { + const letter = String.fromCharCode(i); + if (fs.existsSync(`${letter}:\\`)) res.push(letter); + } + cacheDisks = res; + return res; +}