From 28a5a833157a9360d823e5a117d9f4451e40d141 Mon Sep 17 00:00:00 2001 From: doumao Date: Sat, 28 Feb 2026 22:54:27 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=89=8D=E7=AB=AF=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E7=BB=BF=E8=81=94SSL=E8=AF=81=E4=B9=A6=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E5=BC=80=E5=85=B3=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/cards/MediaServerCard.vue | 19 ++++++++++++++++--- src/locales/en-US.ts | 2 ++ src/locales/zh-CN.ts | 2 ++ src/locales/zh-TW.ts | 2 ++ src/views/setup/MediaServerSettingsStep.vue | 21 +++++++++++++++++---- 5 files changed, 39 insertions(+), 7 deletions(-) diff --git a/src/components/cards/MediaServerCard.vue b/src/components/cards/MediaServerCard.vue index cc7f4010..69185491 100644 --- a/src/components/cards/MediaServerCard.vue +++ b/src/components/cards/MediaServerCard.vue @@ -85,9 +85,12 @@ function openMediaServerInfoDialog() { mediaServerInfo.value = cloneDeep(props.mediaserver) if (mediaServerInfo.value.type === 'ugreen') { mediaServerInfo.value.config = mediaServerInfo.value.config || {} - } - if (mediaServerInfo.value.type === 'ugreen' && !mediaServerInfo.value.config.scan_mode) { - mediaServerInfo.value.config.scan_mode = 'supplement_missing' + if (!mediaServerInfo.value.config.scan_mode) { + mediaServerInfo.value.config.scan_mode = 'supplement_missing' + } + if (mediaServerInfo.value.config.verify_ssl === undefined) { + mediaServerInfo.value.config.verify_ssl = true + } } mediaServerInfoDialog.value = true if (!props.mediaserver.sync_libraries) { @@ -516,6 +519,16 @@ onMounted(() => { prepend-inner-icon="mdi-radar" /> + + + diff --git a/src/locales/en-US.ts b/src/locales/en-US.ts index dd30d09f..4788211b 100644 --- a/src/locales/en-US.ts +++ b/src/locales/en-US.ts @@ -2858,6 +2858,8 @@ export default { syncLibrariesHint: 'Only selected libraries will be synchronized', scanMode: 'Scan Mode', scanModeHint: 'Applies to full-library and targeted refresh: New & Modified / Supplement Missing / Full Override', + verifySsl: 'Verify SSL Certificate', + verifySslHint: 'When enabled, HTTPS certificates are verified; disable for self-signed certificates', scanModeOptions: { newAndModified: 'New & Modified', supplementMissing: 'Supplement Missing', diff --git a/src/locales/zh-CN.ts b/src/locales/zh-CN.ts index 46bce832..71932abb 100644 --- a/src/locales/zh-CN.ts +++ b/src/locales/zh-CN.ts @@ -2821,6 +2821,8 @@ export default { syncLibrariesHint: '只有选中的媒体库才会被同步', scanMode: '扫描模式', scanModeHint: '用于全库刷新和按库刷新:新添加和修改 / 补充缺失 / 覆盖扫描', + verifySsl: '校验 SSL 证书', + verifySslHint: '开启后会校验 HTTPS 证书;如使用自签名证书可关闭', scanModeOptions: { newAndModified: '新添加和修改', supplementMissing: '补充缺失', diff --git a/src/locales/zh-TW.ts b/src/locales/zh-TW.ts index f99e2e70..2d855d69 100644 --- a/src/locales/zh-TW.ts +++ b/src/locales/zh-TW.ts @@ -2827,6 +2827,8 @@ export default { syncLibrariesHint: '只有選中的媒體庫才會被同步', scanMode: '掃描模式', scanModeHint: '用於全庫刷新和按庫刷新:新添加和修改 / 補充缺失 / 覆蓋掃描', + verifySsl: '校驗 SSL 憑證', + verifySslHint: '開啟後會校驗 HTTPS 憑證;如使用自簽憑證可關閉', scanModeOptions: { newAndModified: '新添加和修改', supplementMissing: '補充缺失', diff --git a/src/views/setup/MediaServerSettingsStep.vue b/src/views/setup/MediaServerSettingsStep.vue index 45a400a4..62cc66fa 100644 --- a/src/views/setup/MediaServerSettingsStep.vue +++ b/src/views/setup/MediaServerSettingsStep.vue @@ -21,12 +21,15 @@ const ugreenScanModeOptions = computed(() => [ { title: t('mediaserver.scanModeOptions.fullOverride'), value: 'full_override' }, ]) -function ensureUgreenScanMode() { +function ensureUgreenConfig() { if (wizardData.value.mediaServer.type !== 'ugreen') return wizardData.value.mediaServer.config = wizardData.value.mediaServer.config || {} if (!wizardData.value.mediaServer.config.scan_mode) { wizardData.value.mediaServer.config.scan_mode = 'supplement_missing' } + if (wizardData.value.mediaServer.config.verify_ssl === undefined) { + wizardData.value.mediaServer.config.verify_ssl = true + } } // 调用API查询媒体库 @@ -56,7 +59,7 @@ async function loadLibrary(server: string) { // 选择媒体服务器并自动加载媒体库 async function selectMediaServerWithLibrary(type: string) { selectMediaServer(type) - ensureUgreenScanMode() + ensureUgreenConfig() // 如果选择了媒体服务器类型,自动加载媒体库 if (type && wizardData.value.mediaServer.name) { await loadLibrary(wizardData.value.mediaServer.name) @@ -65,7 +68,7 @@ async function selectMediaServerWithLibrary(type: string) { // 组件挂载时检查是否需要加载媒体库 onMounted(async () => { - ensureUgreenScanMode() + ensureUgreenConfig() // 如果已经有媒体服务器配置,自动加载媒体库 if (wizardData.value.mediaServer.type && wizardData.value.mediaServer.name) { await loadLibrary(wizardData.value.mediaServer.name) @@ -76,7 +79,7 @@ onMounted(async () => { watch( () => [wizardData.value.mediaServer.type, wizardData.value.mediaServer.name], async ([type, name]) => { - ensureUgreenScanMode() + ensureUgreenConfig() console.log('Media server changed:', { type, name }) if (type && name) { await loadLibrary(name) @@ -500,6 +503,16 @@ watch( prepend-inner-icon="mdi-radar" /> + + +