const express = require('express'); const path = require('path'); const fs = require('fs'); // Servidor simples para servir sites clonados const app = express(); const PORT = 8080; // Middleware para servir arquivos estáticos com CORS habilitado app.use((req, res, next) => { res.setHeader('Access-Control-Allow-Origin', '*'); res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS'); res.setHeader('Access-Control-Allow-Headers', 'Content-Type'); next(); }); // Servir arquivos estáticos do diretório cloned-sites const clonedSitesDir = path.join(__dirname, '..', 'cloned-sites'); app.use(express.static(clonedSitesDir)); // Listar sites clonados app.get('/api/sites', (req, res) => { try { const dirs = fs.readdirSync(clonedSitesDir) .filter(file => fs.statSync(path.join(clonedSitesDir, file)).isDirectory()) .map(dir => ({ name: dir, path: `/${dir}/index.html`, fullPath: path.join(clonedSitesDir, dir) })); res.json({ sites: dirs }); } catch (error) { res.status(500).json({ error: error.message }); } }); // Página inicial com lista de sites app.get('/', (req, res) => { try { const dirs = fs.readdirSync(clonedSitesDir) .filter(file => fs.statSync(path.join(clonedSitesDir, file)).isDirectory()); const html = ` Sites Clonados - Servidor Local

🌐 Sites Clonados

Servidor local rodando em http://localhost:${PORT}

Sem problemas de CORS ou permissões!

${dirs.length > 0 ? `
${dirs.map(dir => ` `).join('')}
` : `

Nenhum site clonado ainda.

Use o CloneWeb para clonar um site!

`}
`; res.send(html); } catch (error) { res.status(500).send(`

Erro: ${error.message}

`); } }); app.listen(PORT, () => { console.log(`\n${'='.repeat(60)}`); console.log(`🌐 Servidor de Sites Clonados`); console.log(`${'='.repeat(60)}`); console.log(`📡 Rodando em: http://localhost:${PORT}`); console.log(`📁 Servindo de: ${clonedSitesDir}`); console.log(`✅ Sem problemas de CORS!`); console.log(`${'='.repeat(60)}\n`); });