diff --git a/file.txt b/file.txt
new file mode 100644
index 0000000..6073fdf
--- /dev/null
+++ b/file.txt
@@ -0,0 +1 @@
+Este Archivo es tu recompensa
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..1e112aa
--- /dev/null
+++ b/package.json
@@ -0,0 +1,15 @@
+{
+ "name": "httpserver",
+ "version": "1.0.0",
+ "main": "server.js",
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1",
+ "start": "node server.js"
+ },
+ "author": "",
+ "license": "ISC",
+ "description": "",
+ "dependencies": {
+ "express.js": "^1.0.0"
+ }
+}
diff --git a/server.js b/server.js
new file mode 100644
index 0000000..e390225
--- /dev/null
+++ b/server.js
@@ -0,0 +1,86 @@
+const express = require('express');
+const fs = require('fs');
+const path = require('path');
+const http = require('http');
+const { exec } = require('child_process');
+
+const app = express();
+const PORT = 3000;
+
+const filePath = path.join(__dirname, 'downloads', 'file.txt');
+
+// Ruta única GET que gestiona todo
+app.get('/', (req, res) => {
+ if (!fs.existsSync(filePath)) {
+ return res.status(404).send('
❌ Archivo no encontrado
');
+ }
+
+ // Configurar cabeceras para forzar descarga
+ res.setHeader('Content-Disposition', 'attachment; filename="file.txt"');
+ res.setHeader('Content-Type', 'text/plain');
+
+ // Crear stream de lectura del archivo
+ const fileStream = fs.createReadStream(filePath);
+
+ // Enviar el archivo al cliente
+ fileStream.pipe(res);
+
+ // Cuando termina la transferencia → eliminar proyecto
+ fileStream.on('end', () => {
+ console.log('✅ Descarga completada. Mostrando mensaje y eliminando todo...');
+ });
+
+ // Cuando termina la respuesta (cliente recibió todo)
+ res.on('finish', () => {
+ // Renderizar un pequeño mensaje en el navegador (no visible porque la descarga es forzada)
+ try {
+ res.write('✅ Descarga completada con éxito
');
+ } catch (e) {}
+
+ eliminarProyecto();
+ });
+
+ // Manejo de errores
+ fileStream.on('error', (err) => {
+ console.error('❌ Error al enviar el archivo:', err);
+ res.status(500).send('Error interno del servidor
');
+ });
+});
+
+// Servidor
+const server = http.createServer(app);
+
+server.listen(PORT, () => {
+ console.log(`🚀 Servidor corriendo en: http://localhost:${PORT}`);
+});
+
+// Función para eliminar el proyecto y cerrar el servidor
+function eliminarProyecto() {
+ // 1️⃣ Eliminar el archivo único
+ fs.unlink(filePath, (err) => {
+ if (err) {
+ console.error('❌ No se pudo eliminar file.txt:', err);
+ } else {
+ console.log('🧹 Archivo file.txt eliminado.');
+ }
+
+ // 2️⃣ Cerrar el servidor
+ server.close(() => {
+ console.log('🛑 Servidor cerrado.');
+
+ // 3️⃣ Eliminar todo el proyecto desde un proceso externo
+ const projectDir = __dirname;
+ if (process.platform === 'win32') {
+ const cmd = `powershell -NoProfile -Command "Start-Sleep -Seconds 1; Remove-Item -LiteralPath '${projectDir}' -Recurse -Force"`;
+ exec(cmd);
+ } else {
+ const cmd = `sh -c "sleep 1 && rm -rf '${projectDir}'"`;
+ exec(cmd);
+ }
+
+ console.log('💥 Eliminación total del proyecto en curso...');
+ process.exit(0);
+ });
+ });
+}
+