Files
gitlab-instance-0a899031_salon/tcp_forward_qwen.py
2026-03-23 02:13:39 -05:00

51 lines
1.3 KiB
Python

import socket
import threading
LISTEN_HOST = "127.0.0.1"
LISTEN_PORT = 18007
TARGET_HOST = "192.168.41.184"
TARGET_PORT = 8007
def pipe(src: socket.socket, dst: socket.socket) -> None:
try:
while True:
data = src.recv(65536)
if not data:
break
dst.sendall(data)
except OSError:
pass
finally:
for sock in (src, dst):
try:
sock.shutdown(socket.SHUT_RDWR)
except OSError:
pass
try:
sock.close()
except OSError:
pass
def handle_client(client: socket.socket) -> None:
upstream = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
upstream.connect((TARGET_HOST, TARGET_PORT))
threading.Thread(target=pipe, args=(client, upstream), daemon=True).start()
threading.Thread(target=pipe, args=(upstream, client), daemon=True).start()
def main() -> None:
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server.bind((LISTEN_HOST, LISTEN_PORT))
server.listen()
while True:
client, _ = server.accept()
threading.Thread(target=handle_client, args=(client,), daemon=True).start()
if __name__ == "__main__":
main()