# fake_devices.py - gia lap mot "thiet bi dang ngo" ngay tren may ban de thu quet port. Chi nghe 127.0.0.1.
# Chay: python3 fake_devices.py   roi o terminal khac: python3 lan_inventory.py --only 127.0.0.1
import socket
import threading

# port -> noi dung tra loi (None = nhan ket noi roi dong im lang)
FAKE = {
    8080: b"HTTP/1.0 200 OK\r\nServer: CamHTTPD/1.0 (camera gia lap)\r\n\r\n",
    9100: None,
    62078: None,
    3389: None,
}


def serve(port, reply):
    with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
        s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        s.bind(("127.0.0.1", port))
        s.listen(5)
        while True:
            conn, _ = s.accept()
            with conn:
                if reply:
                    conn.settimeout(1)
                    try:
                        conn.recv(200)
                    except OSError:
                        pass
                    conn.sendall(reply)


for port, reply in FAKE.items():
    threading.Thread(target=serve, args=(port, reply), daemon=True).start()
print("Dang gia lap thiet bi o 127.0.0.1, cac port:", ", ".join(str(p) for p in FAKE))
print("Nhan Ctrl+C de dung.")
threading.Event().wait()
