-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
71 lines (56 loc) · 2.16 KB
/
main.py
File metadata and controls
71 lines (56 loc) · 2.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import os
import sys
import time
import signal
import threading
import traceback
from core.functions import run_command
from core.plugin_manager import plugin_manager, PluginManager
from core.menu_manager import menu_manager, Menu
from core.event_system import event_system
from core.menu import menu_creator
from core.background import background_worker
from core.logger import LoggerSingleton
logger = LoggerSingleton().get_logger(__name__)
LOCK_FILE = "/tmp/p4wnpet.lock"
def create_lock_file():
"""Crea un archivo de bloqueo para asegurar una única instancia de la aplicación."""
if os.path.exists(LOCK_FILE):
try:
with open(LOCK_FILE, 'r') as lock_file:
pid = int(lock_file.read().strip())
logger.info(f"Matando proceso anterior con PID {pid}")
os.kill(pid, signal.SIGTERM)
time.sleep(1) # Esperar 1 segundo para asegurarse de que el proceso anterior se haya terminado
except Exception as e:
logger.error(f"Error al intentar matar el proceso anterior: {e}")
with open(LOCK_FILE, 'w') as lock_file:
lock_file.write(str(os.getpid()))
def remove_lock_file():
"""Elimina el archivo de bloqueo."""
if os.path.exists(LOCK_FILE):
os.remove(LOCK_FILE)
def main():
logger.info("Iniciando P4wnPet")
create_lock_file()
logger.info("Fichero lock creado")
run_command("sudo rm -rf /root/P4wnPet/logs/bettercap.log")
try:
# Cargar plugins
plugin_manager=PluginManager()
# CONFIGURAMOS LOS MENUS DESPUES DE LOS PLUGINS PARA QUE SE SUBSCRIBAN
main_menu = Menu("P4WNPET")
menu_creator(main_menu)
menu_manager.set_menu(main_menu)
# BACKGROUND WORKER
background_thread = threading.Thread(target=background_worker, daemon=True)
background_thread.start()
logger.info("Lanzando proceso en background")
event_system.publish("p4wn_start")
except Exception as e:
logger.error(f"Error durante la ejecución de P4wnPet: {e}")
logger.error(traceback.format_exc())
finally:
remove_lock_file()
if __name__ == "__main__":
main()