feat: consolidate backend improvements, frontend UX fixes and Wasabi storage support
This commit is contained in:
@@ -4,6 +4,7 @@ const db = require('../database');
|
||||
const { verifyPassword } = require('../auth');
|
||||
const fs = require('fs').promises;
|
||||
const path = require('path');
|
||||
const storage = require('../storage');
|
||||
|
||||
// ================================================================
|
||||
// DELETE /api/system/factory-reset - Limpar sistema inteiro
|
||||
@@ -110,6 +111,18 @@ router.get('/storage-config', async (req, res) => {
|
||||
}
|
||||
});
|
||||
|
||||
// ================================================================
|
||||
// GET /api/system/wasabi-status - Retorna status em tempo real
|
||||
// ================================================================
|
||||
router.get('/wasabi-status', (req, res) => {
|
||||
try {
|
||||
const status = storage.getWasabiStatus();
|
||||
res.json(status);
|
||||
} catch (error) {
|
||||
res.status(500).json({ error: 'Erro ao verificar status do Wasabi.' });
|
||||
}
|
||||
});
|
||||
|
||||
// ================================================================
|
||||
// POST /api/system/storage-config - Salvar configurações de armazenamento
|
||||
// ================================================================
|
||||
@@ -139,12 +152,31 @@ router.post('/storage-config', async (req, res) => {
|
||||
}
|
||||
}
|
||||
|
||||
const finalAccessKey = wasabiAccessKey.trim();
|
||||
const finalBucket = wasabiBucket.trim();
|
||||
const finalRegion = (wasabiRegion || 'us-east-1').trim();
|
||||
const finalEndpoint = (wasabiEndpoint || 's3.wasabisys.com').trim();
|
||||
|
||||
// 1. Validar as credenciais contra os servidores do Wasabi ANTES de salvar
|
||||
const validation = await storage.validateCredentials(
|
||||
finalAccessKey,
|
||||
finalSecret,
|
||||
finalBucket,
|
||||
finalRegion,
|
||||
finalEndpoint
|
||||
);
|
||||
|
||||
if (!validation.valid) {
|
||||
return res.status(400).json({ error: validation.message });
|
||||
}
|
||||
|
||||
// 2. Se for válido, salvar no banco
|
||||
const configJson = JSON.stringify({
|
||||
wasabiAccessKey: wasabiAccessKey.trim(),
|
||||
wasabiAccessKey: finalAccessKey,
|
||||
wasabiSecretKey: finalSecret,
|
||||
wasabiBucket: wasabiBucket.trim(),
|
||||
wasabiRegion: (wasabiRegion || 'us-east-1').trim(),
|
||||
wasabiEndpoint: (wasabiEndpoint || 's3.wasabisys.com').trim()
|
||||
wasabiBucket: finalBucket,
|
||||
wasabiRegion: finalRegion,
|
||||
wasabiEndpoint: finalEndpoint
|
||||
});
|
||||
|
||||
await db.run(`
|
||||
|
||||
Reference in New Issue
Block a user