From be49f8eaeb5ac6c3bab6091d82872eca635f4b5b Mon Sep 17 00:00:00 2001 From: VirtualHotBar Date: Tue, 2 Jun 2026 03:18:18 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20#72=20=E9=9B=86=E6=88=90=E5=AF=86?= =?UTF-8?q?=E7=A0=81=E7=BC=96=E7=A0=81=E5=88=B0ConfigService=20-=20?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E6=97=B6=E7=BC=96=E7=A0=81=E3=80=81=E5=8A=A0?= =?UTF-8?q?=E8=BD=BD=E6=97=B6=E8=A7=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/services/ConfigService.ts | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/services/ConfigService.ts b/src/services/ConfigService.ts index 5dae73e..c852e11 100644 --- a/src/services/ConfigService.ts +++ b/src/services/ConfigService.ts @@ -17,6 +17,7 @@ import { mergeObjects } from '../utils' import { logger } from './LoggerService' import { rcloneInfo as rcloneInfoInstance } from './rclone' import { roConfig, runtimeEnv, getRuntimeEnv, ConfigChangeListener, OsInfoChangeListener, createDefaultConfig, createDefaultOsInfo } from './config/roConfig' +import { encodePassword, decodePassword } from '../utils/passwordEncoding' export { roConfig, runtimeEnv, getRuntimeEnv } @@ -155,6 +156,15 @@ class ConfigService { try { const configData = await invoke>('get_config') this.config = mergeObjects(this.config, configData) + + // 解码框架密码(向后兼容明文密码) + if (this.config.framework?.rclone?.password) { + this.config.framework.rclone.password = decodePassword(this.config.framework.rclone.password) + } + if (this.config.framework?.openlist?.password) { + this.config.framework.openlist.password = decodePassword(this.config.framework.openlist.password) + } + logger.info('Config loaded from disk', 'ConfigService') } catch (error) { logger.error('Failed to load config', error as Error, 'ConfigService') @@ -167,8 +177,17 @@ class ConfigService { */ async saveConfig(): Promise { try { + // 创建配置副本,编码框架密码后再保存 + const configToSave = JSON.parse(JSON.stringify(this.config)) as NMConfig + if (configToSave.framework?.rclone?.password) { + configToSave.framework.rclone.password = encodePassword(configToSave.framework.rclone.password) + } + if (configToSave.framework?.openlist?.password) { + configToSave.framework.openlist.password = encodePassword(configToSave.framework.openlist.password) + } + await invoke('update_config', { - data: this.config, + data: configToSave, }) logger.info('Config saved to disk', 'ConfigService') } catch (error) {