From f284e14630c0866db0df66bb4e355e46b58be665 Mon Sep 17 00:00:00 2001 From: admin <362324317@qq.com> Date: Tue, 19 May 2026 00:36:42 +0800 Subject: [PATCH] =?UTF-8?q?v0.4.6:=20=E4=BF=9D=E5=AD=98=E7=BD=91=E7=9B=98?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E5=90=8E=E8=87=AA=E5=8A=A8=E9=AA=8C=E8=AF=81?= =?UTF-8?q?+=E8=8E=B7=E5=8F=96=E6=98=B5=E7=A7=B0=E7=A9=BA=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- VERSION | 2 +- source_clean/VERSION | 2 +- source_clean/src/routes/admin.routes.ts | 20 +++++++++++++++++++- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/VERSION b/VERSION index 0bfccb0..ef52a64 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.4.5 +0.4.6 diff --git a/source_clean/VERSION b/source_clean/VERSION index 0bfccb0..ef52a64 100644 --- a/source_clean/VERSION +++ b/source_clean/VERSION @@ -1 +1 @@ -0.4.5 +0.4.6 diff --git a/source_clean/src/routes/admin.routes.ts b/source_clean/src/routes/admin.routes.ts index 895eed8..339c2ed 100644 --- a/source_clean/src/routes/admin.routes.ts +++ b/source_clean/src/routes/admin.routes.ts @@ -154,7 +154,7 @@ router.get('/admin/cloud-configs', (_req: Request, res: Response) => { }); /** POST /api/admin/cloud-configs — create or smart-replace a cloud config */ -router.post('/admin/cloud-configs', (req: Request, res: Response) => { +router.post('/admin/cloud-configs', async (req: Request, res: Response) => { try { const data = req.body; if (!data.cloud_type) { @@ -164,6 +164,24 @@ router.post('/admin/cloud-configs', (req: Request, res: Response) => { // Normalize is_active: frontend sends boolean, SQLite needs 0/1 if (typeof data.is_active === 'boolean') data.is_active = data.is_active ? 1 : 0; const saved = saveCloudConfig(data); + + // Auto-validate if cookie was provided (best-effort, non-blocking) + if (data.cookie && saved.id) { + try { + const result = await testCloudConnectionWithCookie(data.cloud_type, data.cookie); + if (result.success) { + const updateData: any = { id: saved.id, cloud_type: data.cloud_type }; + if (result.nickname) updateData.nickname = result.nickname; + if (result.storage_used) updateData.storage_used = result.storage_used; + if (result.storage_total) updateData.storage_total = result.storage_total; + saveCloudConfig(updateData); + Object.assign(saved, { nickname: result.nickname, storage_used: result.storage_used, storage_total: result.storage_total }); + } + } catch (_) { + // Auto-validation is best-effort, don't fail the save + } + } + res.json(saved); } catch (err: any) { res.status(500).json({ error: err.message || 'Failed to save cloud config' });