"""Probe testdatadb API on port 3000 of AD2 via SSH tunnel hop."""
import base64, subprocess, yaml, paramiko

def pwd():
    r = subprocess.run(['sops','-d','D:/vault/clients/dataforth/ad2.sops.yaml'],
                       capture_output=True, text=True, timeout=30, check=True)
    return yaml.safe_load(r.stdout)['credentials']['password'].replace('\\','')

def ps(c, cmd, to=60):
    enc = base64.b64encode(cmd.encode('utf-16-le')).decode()
    stdin, stdout, stderr = c.exec_command(f'powershell -NoProfile -EncodedCommand {enc}', timeout=to)
    return stdout.read().decode('utf-8','replace'), stderr.read().decode('utf-8','replace'), stdout.channel.recv_exit_status()

c = paramiko.SSHClient()
c.set_missing_host_key_policy(paramiko.AutoAddPolicy())
c.connect('192.168.0.6', username='sysadmin', password=pwd(), timeout=30, look_for_keys=False, allow_agent=False)
try:
    print('=== root HTTP probe ===')
    out, err, rc = ps(c, r'try { $r = Invoke-WebRequest -Uri "http://localhost:3000/" -UseBasicParsing -TimeoutSec 10; Write-Host ("HTTP " + $r.StatusCode + " len=" + $r.Content.Length) } catch { Write-Host ("HTTP FAIL: " + $_.Exception.Message) }')
    print(out)

    print('=== /api/search probe (hit live DB) ===')
    out, err, rc = ps(c, r'try { $r = Invoke-WebRequest -Uri "http://localhost:3000/api/search?limit=1" -UseBasicParsing -TimeoutSec 20; Write-Host ("HTTP " + $r.StatusCode + " len=" + $r.Content.Length); Write-Host ($r.Content.Substring(0, [math]::Min(300, $r.Content.Length))) } catch { Write-Host ("HTTP FAIL: " + $_.Exception.Message) }')
    print(out)
finally:
    c.close()
