kopia lustrzana https://github.com/sq5t/tnc-proxy
Initial upload
rodzic
ec93f2a26d
commit
2cc2b1f7dd
|
@ -0,0 +1,66 @@
|
|||
#!/usr/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
# author: Tomasz SQ5T
|
||||
|
||||
import socket
|
||||
import threading
|
||||
|
||||
listen_address = "127.0.0.1" # listen IP, "" == listen all
|
||||
listen_port = 8002 # listen port
|
||||
|
||||
destination_address = "127.0.0.1" # connect to IP
|
||||
destination_port = 8001 # connect to port
|
||||
|
||||
def cli_msg(conn):
|
||||
while True:
|
||||
try:
|
||||
message = conn.recv(1024)
|
||||
if message:
|
||||
broadcast(message, conn)
|
||||
else:
|
||||
remove(conn)
|
||||
return
|
||||
except:
|
||||
continue
|
||||
|
||||
# broadcast message to all connected clients
|
||||
def broadcast(message, connection):
|
||||
for clients in list_of_clients:
|
||||
if clients!=connection:
|
||||
try:
|
||||
clients.send(message)
|
||||
except:
|
||||
clients.close()
|
||||
remove(clients)
|
||||
return
|
||||
|
||||
# remove connection
|
||||
def remove(connection):
|
||||
connection.close()
|
||||
if connection in list_of_clients:
|
||||
list_of_clients.remove(connection)
|
||||
|
||||
list_of_clients = []
|
||||
|
||||
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
s.connect((destination_address, destination_port))
|
||||
list_of_clients.append(s)
|
||||
main_connection = s
|
||||
|
||||
thread = threading.Thread(target=cli_msg, args=(s,))
|
||||
thread.daemon = True
|
||||
thread.start()
|
||||
|
||||
cli = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
cli.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
|
||||
|
||||
cli.bind((listen_address, listen_port)) # start listening
|
||||
cli.listen(2) # max waiting connection
|
||||
|
||||
while True:
|
||||
conn,address = cli.accept() # accept connection from client
|
||||
conn.setblocking(1)
|
||||
list_of_clients.append(conn) # add client to array of clients
|
||||
thread_client = threading.Thread(target=cli_msg, args=(conn,))
|
||||
thread_client.daemon = True
|
||||
thread_client.start()
|
Ładowanie…
Reference in New Issue