#!/bin/bash
systemctl stop sing-box
sleep 1
python3 -u - <<'PY'
import socket,time,sys
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
try:
    s.bind(('0.0.0.0',443))
except Exception as e:
    print('BINDFAIL',repr(e),flush=True); sys.exit(0)
print('listening',flush=True)
s.settimeout(1.0)
target=None
deadline=time.time()+30
while time.time()<deadline:
    try:
        d,addr=s.recvfrom(2048)
    except socket.timeout:
        continue
    print('rx',addr,'len',len(d),flush=True)
    if d==b'\x01\x02\x03\x04':
        target=addr
        break
if target is None:
    print('NOPROBE',flush=True); sys.exit(0)
print('target',target,flush=True)
t0=time.time()
for i in range(100):
    s.sendto(bytes([i%256])*1200, target)
    time.sleep(0.05)
print('sent100 at',round(time.time()-t0,2),flush=True)
s.settimeout(1.0)
up=0
deadline=time.time()+15
while time.time()<deadline:
    try:
        d,addr=s.recvfrom(2048)
    except socket.timeout:
        continue
    up+=1
    if up<=6:
        print('uplink_rx len',len(d),'at',round(time.time()-t0,2),flush=True)
print('uplink_received_total=',up,flush=True)
PY
systemctl start sing-box
sleep 4
systemctl is-active sing-box
