import socket
import sys
import subprocess
import os

hosts_to_check = [
    ("91.99.89.7", 22, "sunaiva-prod SSH"),
    ("91.99.89.7", 80, "sunaiva-prod HTTP"),
    ("91.99.89.7", 443, "sunaiva-prod HTTPS"),
    ("api.sunaivadigital.com", 443, "sunaiva API HTTPS"),
]

print("=== TCP Connectivity Check ===")
for host, port, label in hosts_to_check:
    try:
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        sock.settimeout(5)
        result = sock.connect_ex((host, port))
        sock.close()
        status = "OPEN" if result == 0 else f"CLOSED (err={result})"
        print(f"  {label} ({host}:{port}): {status}")
    except Exception as e:
        print(f"  {label} ({host}:{port}): ERROR - {e}")

print()
print("=== SSH Key Files ===")
keys = [
    r"C:\Users\P3\.ssh\id_rsa",
    r"C:\Users\P3\.ssh\genesis_elestio",
    r"E:\genesis-system\.ssh\sunaiva_deploy",
]
for k in keys:
    exists = os.path.exists(k)
    size = os.path.getsize(k) if exists else 0
    print(f"  {k}: {'EXISTS' if exists else 'MISSING'} ({size} bytes)")

print()
print("=== Trying SSH with subprocess ===")
for key in keys:
    if not os.path.exists(key):
        continue
    print(f"\nTrying key: {key}")
    try:
        result = subprocess.run(
            ["ssh", "-i", key, "-o", "ConnectTimeout=8",
             "-o", "StrictHostKeyChecking=no",
             "-o", "BatchMode=yes",
             "-p", "22",
             "root@91.99.89.7", "echo SSH_OK"],
            capture_output=True, text=True, timeout=12
        )
        print(f"  stdout: {result.stdout.strip()}")
        print(f"  stderr: {result.stderr.strip()[:300]}")
        print(f"  returncode: {result.returncode}")
    except subprocess.TimeoutExpired:
        print(f"  TIMEOUT")
    except Exception as e:
        print(f"  ERROR: {e}")
