fix: remove legacy html routes causing 500 error
continuous-integration/webhook Falha no deploy (VPS4)
continuous-integration/webhook Falha no deploy (VPS4)
This commit is contained in:
@@ -1 +1 @@
|
||||
1.0.0
|
||||
2.1.14
|
||||
|
||||
+1
-67
@@ -452,78 +452,12 @@ TRUST_PROXY=true
|
||||
console.log('✅ Arquivo .env atualizado');
|
||||
}
|
||||
|
||||
// ================================================================
|
||||
// SERVIDOR DE FRONTEND ESTÁTICO COM CACHE BUSTER AUTOMÁTICO
|
||||
// ================================================================
|
||||
|
||||
// Página de instalação
|
||||
app.get('/install', (req, res) => {
|
||||
serveHtmlWithCacheBuster(res, path.join(__dirname, 'public', 'install.html'));
|
||||
});
|
||||
|
||||
// Página web principal
|
||||
app.get('/', (req, res) => {
|
||||
serveHtmlWithCacheBuster(res, path.join(__dirname, 'public', 'index.html'));
|
||||
});
|
||||
|
||||
// Favicon redirect/fallback
|
||||
app.get('/favicon.ico', (req, res) => {
|
||||
res.sendFile(path.join(__dirname, 'public', 'favicon.svg'));
|
||||
});
|
||||
|
||||
// Página de clientes conectados
|
||||
app.get('/clients', (req, res) => {
|
||||
serveHtmlWithCacheBuster(res, path.join(__dirname, 'public', 'clients.html'));
|
||||
});
|
||||
|
||||
// Página de reset de fábrica
|
||||
app.get('/reset', (req, res) => {
|
||||
serveHtmlWithCacheBuster(res, path.join(__dirname, 'public', 'reset.html'));
|
||||
});
|
||||
|
||||
// Página de Clínicas
|
||||
app.get('/admin-clinics', (req, res) => {
|
||||
serveHtmlWithCacheBuster(res, path.join(__dirname, 'public', 'admin-clinics.html'));
|
||||
});
|
||||
// Rotas de autenticação (públicas)
|
||||
|
||||
// Rotas de autenticação (públicas)
|
||||
app.use('/api/auth', authRoutes);
|
||||
app.use('/api/client', clientAuthRoutes);
|
||||
|
||||
// Página de login
|
||||
app.get('/login', (req, res) => {
|
||||
serveHtmlWithCacheBuster(res, path.join(__dirname, 'auth', 'login.html'));
|
||||
});
|
||||
|
||||
// Middleware de autenticação estática (movemos pro final depois)
|
||||
|
||||
// Função utilitária de Cache Buster
|
||||
async function serveHtmlWithCacheBuster(res, filePath) {
|
||||
try {
|
||||
// Lê version.txt (não package.json) para não ter cache-miss no Docker a cada deploy
|
||||
let APP_VERSION;
|
||||
try {
|
||||
APP_VERSION = (await fs.readFile(path.join(__dirname, 'version.txt'), 'utf8')).trim();
|
||||
} catch (_) {
|
||||
APP_VERSION = require('./package.json').version || Date.now();
|
||||
}
|
||||
let content = await fs.readFile(filePath, 'utf8');
|
||||
|
||||
// Injeta versão em tags de script e css
|
||||
content = content.replace(/src="([^"]+\.js)(?:\?v=[^"]*)?"/g, `src="$1?v=${APP_VERSION}"`);
|
||||
content = content.replace(/href="([^"]+\.css)(?:\?v=[^"]*)?"/g, `href="$1?v=${APP_VERSION}"`);
|
||||
// Substitui o número de versão exibido na sidebar (elimina hardcode no HTML)
|
||||
content = content.replace(/(<span[^>]*>)\s*v\d+\.\d+\.\d+\s*(<\/span>)/g, `$1v${APP_VERSION}$2`);
|
||||
|
||||
res.set('Content-Type', 'text/html');
|
||||
res.set('Cache-Control', 'no-store, no-cache, must-revalidate, private');
|
||||
res.send(content);
|
||||
} catch (err) {
|
||||
console.error('Erro ao ler HTML:', err);
|
||||
res.status(500).send('Erro interno ao carregar a página.');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ================================================================
|
||||
// MIDDLEWARE DE VERIFICAÇÃO DE INSTALAÇÃO (APENAS PARA APIs)
|
||||
|
||||
Reference in New Issue
Block a user