5in 8dZddlZddlZddlmZGddZy)z WireGuard Tunnel Monitor Checks VPN tunnel between Nave (10.0.0.2) and VPS (10.0.0.1). Uses: TCP socket test to verify connectivity (no ping/raw socket needed) N)Dictc$eZdZdZdZdZdefdZy) TunnelMonitorzMonitor WireGuard tunnel healthz10.0.0.1returnc  d}d}d}t|D]} tj}tjtjtj}|j d|j |j|jftj|z dz}|j|dz }||z }|dk(rddddd d S||z }||z |z dz} | dk(r|d krd } n| d kr|dkrd} nd} | dt|d| dt|d| ddd S#tjttf$rY5wxYw#t$r} ddt!| d| dcYd} ~ Sd} ~ wwxYw)a Check tunnel connectivity using TCP socket test. Tests: 1. TCP connection to VPS SSH port (10.0.0.1:22) 2. Measure connection time (proxy for latency) 3. Multiple attempts for reliability Returns: { 'status': 'healthy' | 'warning' | 'critical', 'connected': True/False, 'latency_ms': X, 'packet_loss': 0, 'message': '...' } ricriticalFdzTunnel down - VPS unreachable)status connected latency_ms packet_lossmessagehealthy!iwarningTz Connected (zms, z.0fz% loss)zTunnel check failed: )rrerrorrN)rangetimesocketAF_INET SOCK_STREAM settimeoutconnect VPS_TUNNEL_IP VPS_SSH_PORTclosetimeoutConnectionRefusedErrorOSErrorroundint Exceptionstr) selfattempts successful total_timeistartsockelapsed avg_latencyrres F/mnt/ssd/data/python-lab/DaemonControl/modules/fleet/tunnel_monitor.pycheckzTunnelMonitor.checks$8 HJJ8_   IIKE!==9K9KLDOOA&LL$"4"4d6G6G!HI#yy{U2d:GJJL!OJ')J Q(!&"##&> %z1K$z1X=DKaK#$5""{S'8"#!!#K3*([)9(:${3>OwW  1(>H@ $"Q21#6   sHE B2D' E AE 'E E E  E E2E-'E2-E2N)__name__ __module__ __qualname____doc__rr rr4r3rr s)MLJtJr:r)r8rrtypingrrr9r:r3r<s! PPr: