fix process restart event

This commit is contained in:
Антон
2026-02-08 17:53:14 +03:00
parent 68c57c174e
commit 0ccdfcf7bf

View File

@@ -59,17 +59,31 @@ def control_service(action: str):
return {"status": "error", "message": f"Failed to start OpenVPN: {str(e)}"} return {"status": "error", "message": f"Failed to start OpenVPN: {str(e)}"}
def stop_vpn_direct(): def stop_vpn_direct():
stopped = False procs_to_stop = []
for proc in psutil.process_iter(['name']): for proc in psutil.process_iter(['name']):
if proc.info['name'] == 'openvpn': if proc.info['name'] == 'openvpn':
proc.terminate() try:
stopped = True proc.terminate()
procs_to_stop.append(proc)
except (psutil.NoSuchProcess, psutil.AccessDenied):
pass
if procs_to_stop:
# Wait for processes to actually exit
logger.info(f"[PROCESS] Waiting for {len(procs_to_stop)} OpenVPN process(es) to terminate...")
gone, alive = psutil.wait_procs(procs_to_stop, timeout=5)
for p in alive:
try:
logger.warning(f"[PROCESS] Process {p.pid} did not terminate, killing...")
p.kill()
except:
pass
if os.path.exists(PID_FILE): if os.path.exists(PID_FILE):
try: os.remove(PID_FILE) try: os.remove(PID_FILE)
except: pass except: pass
if stopped: if procs_to_stop:
return {"status": "success", "message": "OpenVPN stopped successfully"} return {"status": "success", "message": "OpenVPN stopped successfully"}
else: else:
return {"status": "success", "message": "OpenVPN was not running"} return {"status": "success", "message": "OpenVPN was not running"}
@@ -78,7 +92,6 @@ def control_service(action: str):
elif action == "stop": return stop_vpn_direct() elif action == "stop": return stop_vpn_direct()
elif action == "restart": elif action == "restart":
stop_vpn_direct() stop_vpn_direct()
time.sleep(1)
return start_vpn_direct() return start_vpn_direct()
# On Host OS: Use system service manager # On Host OS: Use system service manager