From 774e59e229ef1a5844fdccb97acf368cf04397ad Mon Sep 17 00:00:00 2001 From: purocean Date: Wed, 19 Jun 2024 01:29:03 +0800 Subject: [PATCH] refactor: improve filename validation --- src/renderer/services/document.ts | 6 ++++-- src/share/i18n/languages/en.ts | 1 + src/share/i18n/languages/zh-CN.ts | 1 + src/share/i18n/languages/zh-TW.ts | 1 + 4 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/renderer/services/document.ts b/src/renderer/services/document.ts index d3951a70..c9c03402 100644 --- a/src/renderer/services/document.ts +++ b/src/renderer/services/document.ts @@ -41,8 +41,10 @@ function encrypt (content: any, password: string) { } function checkFilePath (path: string) { - if (path.includes('#')) { - throw new Error('Path should not contain #') + // check filename is valid + const filename = basename(path) + if (/[<>:"|?*#]/.test(filename)) { + throw new Error(t('document.invalid-filename', '< > : " / \\ | ? * #')) } } diff --git a/src/share/i18n/languages/en.ts b/src/share/i18n/languages/en.ts index 6fbe527b..cb2cedad 100644 --- a/src/share/i18n/languages/en.ts +++ b/src/share/i18n/languages/en.ts @@ -177,6 +177,7 @@ const data = { }, 'document': { 'current-path': 'Current Path: %s', + 'invalid-filename': 'File name cannot contain the following characters: %s', 'password-create': '[Create] Please enter a password', 'password-save': '[Save] Please enter password of the file', 'password-open': '[Open] Please enter password of the file', diff --git a/src/share/i18n/languages/zh-CN.ts b/src/share/i18n/languages/zh-CN.ts index 9d26e5f1..def34818 100644 --- a/src/share/i18n/languages/zh-CN.ts +++ b/src/share/i18n/languages/zh-CN.ts @@ -178,6 +178,7 @@ const data: BaseLanguage = { }, 'document': { 'current-path': '当前路径: %s', + 'invalid-filename': '文件名不能包含以下字符: %s', 'password-create': '[创建] 请输入密码', 'password-save': '[保存] 请输入密码', 'password-open': '[打开] 请输入密码', diff --git a/src/share/i18n/languages/zh-TW.ts b/src/share/i18n/languages/zh-TW.ts index f3f56025..662fc6c8 100644 --- a/src/share/i18n/languages/zh-TW.ts +++ b/src/share/i18n/languages/zh-TW.ts @@ -178,6 +178,7 @@ const data: BaseLanguage = { }, 'document': { 'current-path': '當前路徑: %s', + 'invalid-filename': '檔案名不能包含以下字符: %s', 'password-create': '[創建] 請輸入密碼', 'password-save': '[保存] 請輸入密碼', 'password-open': '[打開] 請輸入密碼',