From f91831a5ea4758b91a349c93ba2c61593553f507 Mon Sep 17 00:00:00 2001 From: zhengkunwang <31820853+zhengkunwang223@users.noreply.github.com> Date: Thu, 14 Dec 2023 14:42:11 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=BF=9C=E7=A8=8B=E4=B8=8B=E8=BD=BD?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=A2=9E=E5=8A=A0=E6=98=AF=E5=90=A6=E5=BF=BD?= =?UTF-8?q?=E7=95=A5=E4=B8=8D=E5=8F=AF=E4=BF=A1=E8=AF=81=E4=B9=A6=E9=80=89?= =?UTF-8?q?=E9=A1=B9=20(#3324)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Refs **https://github.com/1Panel-dev/1Panel/issues/3307** --- backend/app/dto/request/file.go | 7 ++++--- backend/app/service/file.go | 2 +- backend/utils/files/file_op.go | 9 +++++---- frontend/src/api/interface/file.ts | 1 + frontend/src/lang/modules/en.ts | 3 +++ frontend/src/lang/modules/tw.ts | 3 +++ frontend/src/lang/modules/zh.ts | 3 +++ frontend/src/views/host/file-management/wget/index.vue | 8 ++++++++ 8 files changed, 28 insertions(+), 8 deletions(-) diff --git a/backend/app/dto/request/file.go b/backend/app/dto/request/file.go index d2c4e9b6b..abda45b67 100644 --- a/backend/app/dto/request/file.go +++ b/backend/app/dto/request/file.go @@ -77,9 +77,10 @@ type FilePathCheck struct { } type FileWget struct { - Url string `json:"url" validate:"required"` - Path string `json:"path" validate:"required"` - Name string `json:"name" validate:"required"` + Url string `json:"url" validate:"required"` + Path string `json:"path" validate:"required"` + Name string `json:"name" validate:"required"` + IgnoreCertificate bool `json:"ignoreCertificate"` } type FileMove struct { diff --git a/backend/app/service/file.go b/backend/app/service/file.go index dd9d792dd..ef342dc45 100644 --- a/backend/app/service/file.go +++ b/backend/app/service/file.go @@ -243,7 +243,7 @@ func (f *FileService) ChangeName(req request.FileRename) error { func (f *FileService) Wget(w request.FileWget) (string, error) { fo := files.NewFileOp() key := "file-wget-" + common.GetUuid() - return key, fo.DownloadFileWithProcess(w.Url, filepath.Join(w.Path, w.Name), key) + return key, fo.DownloadFileWithProcess(w.Url, filepath.Join(w.Path, w.Name), key, w.IgnoreCertificate) } func (f *FileService) MvFile(m request.FileMove) error { diff --git a/backend/utils/files/file_op.go b/backend/utils/files/file_op.go index 6860abc54..0a87d0af4 100644 --- a/backend/utils/files/file_op.go +++ b/backend/utils/files/file_op.go @@ -216,11 +216,12 @@ func (w *WriteCounter) SaveProcess() { } } -func (f FileOp) DownloadFileWithProcess(url, dst, key string) error { - client := &http.Client{ - Transport: &http.Transport{ +func (f FileOp) DownloadFileWithProcess(url, dst, key string, ignoreCertificate bool) error { + client := &http.Client{} + if ignoreCertificate { + client.Transport = &http.Transport{ TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, - }, + } } request, err := http.NewRequest("GET", url, nil) if err != nil { diff --git a/frontend/src/api/interface/file.ts b/frontend/src/api/interface/file.ts index f716f9228..79d7b0f21 100644 --- a/frontend/src/api/interface/file.ts +++ b/frontend/src/api/interface/file.ts @@ -109,6 +109,7 @@ export namespace File { path: string; name: string; url: string; + ignoreCertificate?: boolean; } export interface FileWgetRes { diff --git a/frontend/src/lang/modules/en.ts b/frontend/src/lang/modules/en.ts index c62d28c8e..1c7937fec 100644 --- a/frontend/src/lang/modules/en.ts +++ b/frontend/src/lang/modules/en.ts @@ -1105,6 +1105,9 @@ const message = { wordWrap: 'Automatically wrap', deleteHelper2: 'Are you sure you want to delete the selected file? The deletion operation cannot be rolled back', + ignoreCertificate: 'Ignore Certificate', + ignoreCertificateHelper: + 'Ignoring untrusted certificates during downloads may lead to data leakage or tampering. Please use this option with caution, only when trusting the download source.', }, ssh: { autoStart: 'Auto Start', diff --git a/frontend/src/lang/modules/tw.ts b/frontend/src/lang/modules/tw.ts index cc60422a1..a710ece08 100644 --- a/frontend/src/lang/modules/tw.ts +++ b/frontend/src/lang/modules/tw.ts @@ -1051,6 +1051,9 @@ const message = { fileRecycleBinMsg: '已{0}回收站', wordWrap: '自動換行', deleteHelper2: '確定刪除所選檔案? 刪除操作不可回滾', + ignoreCertificate: '忽略不可信證書', + ignoreCertificateHelper: + '下載時忽略不可信證書可能導致數據洩露或篡改。請謹慎使用此選項,僅在信任下載源的情況下啟用', }, ssh: { autoStart: '開機自啟', diff --git a/frontend/src/lang/modules/zh.ts b/frontend/src/lang/modules/zh.ts index 557694a7b..70c5b3687 100644 --- a/frontend/src/lang/modules/zh.ts +++ b/frontend/src/lang/modules/zh.ts @@ -1052,6 +1052,9 @@ const message = { fileRecycleBinMsg: '已{0}回收站', wordWrap: '自动换行', deleteHelper2: '确定删除所选文件?删除操作不可回滚', + ignoreCertificate: '忽略不可信证书', + ignoreCertificateHelper: + '下载时忽略不可信证书可能导致数据泄露或篡改。请谨慎使用此选项,仅在信任下载源的情况下启用', }, ssh: { autoStart: '开机自启', diff --git a/frontend/src/views/host/file-management/wget/index.vue b/frontend/src/views/host/file-management/wget/index.vue index 1c03b6f0a..f92e3654b 100644 --- a/frontend/src/views/host/file-management/wget/index.vue +++ b/frontend/src/views/host/file-management/wget/index.vue @@ -24,6 +24,12 @@ + + + {{ $t('file.ignoreCertificate') }} + + {{ $t('file.ignoreCertificateHelper') }} + @@ -67,6 +73,7 @@ const addForm = reactive({ url: '', path: '', name: '', + ignoreCertificate: false, }); const em = defineEmits(['close']); @@ -111,6 +118,7 @@ const acceptParams = (props: WgetProps) => { addForm.path = props.path; open.value = true; submitData.value = false; + addForm.ignoreCertificate = false; }; defineExpose({ acceptParams });