diff --git a/api/repo_api.py b/api/repo_api.py index 335da4f..22064e1 100644 --- a/api/repo_api.py +++ b/api/repo_api.py @@ -1567,8 +1567,6 @@ def send_p2p(): # Evaluamos los parámetros obtenidos, para construir las llamadas a los scripts, o para devolver un error si no se ha encontrado la imagen: if param_dict: - - cmd_tracker = ['python3', f"{script_path}/runTorrentTracker.py"] # Este script si que requiere ser ejecutado con "sudo" cmd_seeder = ['python3', f"{script_path}/runTorrentSeeder.py" , param_dict['name']] # Este script si que requiere ser ejecutado con "sudo" , Lanzamos el seeder con el nombre de la imagen como parámetro base_path = repo_path.rstrip('/') # Le quito la última barra para poder buscar correctamente en los procesos else: @@ -1579,11 +1577,18 @@ def send_p2p(): "error": "Image not found" }), 400 - # Ejecutamos los scripts "runTorrentSeeder.py" y "runTorrentSeeder.py", que no reciben parámetros. - # NOTA: No almacenamos la salida ni comprobamos los errores, porque los procesos quedarán corriendo hasta que se finalicen manualmente, - # por lo que no podemos comprobar el returncode (luego comprobaremos si los procesos se han iniciado correctamente). - journal.send("Running script 'runTorrentTracker.py'...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG") - subprocess.Popen(cmd_tracker) + # Comprobamos si el tracker esta ejecutandose, si no lo esta devolevemos un error y salimos del endpoint: + tracker_running = search_process('opentracker' , '/etc/opentracker/opentracker.conf') # El tracker se ececuta con "opentracker" y el fichero de configuración "/etc/opentracker/opentracker.conf" + if not tracker_running: + journal.send("Tracker not running", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG") + journal.send("{'component':'ogRepo', 'severity':'ERROR', 'http_code':'500', 'operation':'Run opentrack', 'desc':'Tracker not running'}", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api") + error_message = "Tracker not running. Check if the tracker is installed and configured correctly." + return jsonify({ + "success": False, + "error": error_message + }), 500 + + # Ejecutamos los scripts "runTorrentSeeder.py", que no reciben parámetros. journal.send("Running script 'runTorrentSeeder.py'...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG") subprocess.Popen(cmd_seeder) @@ -1591,26 +1596,29 @@ def send_p2p(): # Comprobamos si el tracker y el seeder están corriendo, y si apuntan al directorio que le hemos pasado # (esperamos 10 segundos antes de hacerlo, porque los procesos no se inician inmediatamente): sleep(10) - tracker_running = search_process('bttrack', base_path) seeder_running = search_process('aria2c', f"{param_dict['name']}.img.torrent") # El seeder se ejecuta con "aria2c" y el nombre de la imagen como parámetro + # Evaluamos las comprobaciones anteriores, para devolver la respuesta que corresponda: - if tracker_running and seeder_running: - journal.send("Scripts 'runTorrentTracker.py' and 'runTorrentSeeder.py' results OK (ReturnCodes: None), and processes running", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG") - journal.send("{'component':'ogRepo', 'severity':'INFO', 'http_code':'200', 'operation':'Run scripts runTorrentTracker.py and runTorrentSeeder.py', 'desc':'Results OK (ReturnCodes: None), and processes running'}", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api") + if seeder_running: + journal.send("'runTorrentSeeder.py' results OK (ReturnCodes: None), and processes running", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG") + journal.send("{'component':'ogRepo', 'severity':'INFO', 'http_code':'200', 'operation':'Run script runTorrentSeeder.py', 'desc':'Results OK (ReturnCodes: None), and processes running'}", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api") return jsonify({ "success": True, "output": "Tracker and Seeder serving image correctly" }), 200 else: - journal.send("Scripts 'runTorrentTracker.py' and 'runTorrentSeeder.py' results KO (Tracker or/and Seeder not runnig)", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG") - journal.send("{'component':'ogRepo', 'severity':'ERROR', 'http_code':'500', 'operation':'Run scripts runTorrentTracker.py and runTorrentSeeder.py', 'desc':'Results KO (Tracker or/and Seeder not runnig)'}", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api") + journal.send("Script 'runTorrentSeeder.py' results KO (Seeder not runnig)", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG") + journal.send("{'component':'ogRepo', 'severity':'ERROR', 'http_code':'500', 'operation':'Run script runTorrentSeeder.py', 'desc': '" + error_message + "'}", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api") + error_message = f"Seeder not running. Check if the image {param_dict['name']}.{param_dict['extension']} exists in the repository." + return jsonify({ "success": False, - "error": "Tracker or Seeder (or both) not running" + "error": error_message }), 500 + # ---------------------------------------------------------