Advertisement
vic_npc

app.js

Jun 26th, 2023
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
JSON 3.43 KB | Cybersecurity | 0 0
  1. const express = require("express");
  2. const app = express();
  3.  
  4. // Se importan los módulos necesarios
  5. const { exec } = require("child_process"); // Módulo para ejecutar comandos en el sistema operativo
  6. const { execSync } = require("child_process"); // Módulo para ejecutar comandos de forma sincrónica
  7. const fs = require("fs"); // Módulo para trabajar con archivos
  8.  
  9. // Se establece la carpeta "static" como directorio de archivos estáticos
  10. app.use(express.static(__dirname + "/static"));
  11.  
  12. // Se configura Express para poder manejar los datos enviados por formularios
  13. app.use(express.urlencoded({ extended: true }));
  14.  
  15. // Ruta principal
  16. app.get("/", (req, res) => {
  17.   let hello = "";
  18.   let action = req.query.action ? req.query.action : "run";
  19.   if (action === "validate") {
  20.     let person = req.query.person ? req.query.person : "Default User";
  21.  
  22.     // Llama a la función boot_validate para validar el nombre de una persona
  23.     let valid = boot_validate(person);
  24.  
  25.     if (valid == "") {
  26.       boot_clean(); // Llama a la función boot_clean para limpiar los archivos generados
  27.     }
  28.   } else if (action == "reset") {
  29.     boot_clean(); // Llama a la función boot_clean para limpiar los archivos generados
  30.     boot_reset(); // Llama a la función boot_reset para restablecer los archivos a sus valores predeterminados
  31.     boot_run(); // Llama a la función boot_run para ejecutar el archivo hello.sh
  32.   } else {
  33.     boot_run(); // Llama a la función boot_run para ejecutar el archivo hello.sh
  34.  
  35.     try {
  36.       hello = fs.readFileSync("hello.txt", "utf8").toString();
  37.     } catch (error) {
  38.       // Si no se puede leer el archivo hello.txt, se realiza un restablecimiento y una nueva ejecución del archivo hello.sh
  39.       hello = "Important hello file is missing, please reset.";
  40.       boot_clean();
  41.       boot_reset();
  42.       boot_run();
  43.     }
  44.   }
  45.  
  46.   // Renderiza el archivo index.ejs y pasa los datos action y hello al archivo de plantilla
  47.   res.render("index.ejs", { action: action, hello: hello });
  48. });
  49.  
  50. // Middleware para manejar las rutas no encontradas
  51. app.use(function (req, res) {
  52.   res.status(404).render("404.ejs");
  53. });
  54.  
  55. // Función para validar el nombre de una persona
  56. const boot_validate = (person) => {
  57.   // Escribe el nombre de la persona en el archivo hello.sh
  58.   fs.writeFileSync("hello.sh", 'echo "' + person + '" > hello.txt');
  59.  
  60.   // Ejecuta comandos para registrar y limpiar el archivo hello.sh
  61.   exec("echo 'hello.sh updated -- " + Date.now() + "' > log.txt");
  62.   exec("echo 'hello.sh cleaned -- " + Date.now() + "' >> log.txt");
  63.   exec("bash hello.sh");
  64.  
  65.   // Función para validar si se escribió correctamente el nombre en el archivo hello.txt
  66.   const valid = () => {
  67.     return execSync(
  68.       "sed -n '/^echo \"[A-Za-z0-9 ]*\" > hello.txt$/p' hello.sh"
  69.     ).toString();
  70.   };
  71.  
  72.   return valid(); // Retorna el resultado de la validación
  73. };
  74.  
  75. // Función para limpiar el archivo hello.txt
  76. const boot_clean = () => {
  77.   exec(`rm hello.txt`);
  78. };
  79.  
  80. // Función para ejecutar el archivo hello.sh
  81. const boot_run = () => {
  82.   exec(`bash hello.sh`);
  83. };
  84.  
  85. // Función para restablecer los archivos a sus valores predeterminados
  86. const boot_reset = () => {
  87.   fs.writeFileSync("hello.sh", "echo 'Default User' > hello.txt");
  88. };
  89.  
  90. const port = process.env.PORT || 5000;
  91.  
  92. // Inicia el servidor y escucha en el puerto especificado
  93. app.listen(port, "0.0.0.0", () => console.log(`Listening on port ${port}...!!!`));
  94.  
Tags: App.js
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement