Implement channels

develop
Sven Slootweg 13 years ago
parent a2683430b8
commit 7084b4cf54

@ -27,9 +27,11 @@ select_outputs = []
class Client: class Client:
buff = "" buff = ""
channel_map = {}
def __init__(self, connstream): def __init__(self, connstream):
self.stream = connstream self.stream = connstream
self.channel_map[0] = Channel()
def process_data(self, data): def process_data(self, data):
self.buff += data self.buff += data
@ -45,7 +47,16 @@ class Client:
data = chunk[2:] data = chunk[2:]
channel_numeric = to_numeric(channel_identifier) channel_numeric = to_numeric(channel_identifier)
if channel_numeric in self.channel_map:
print "Received data on channel %d: %s" % (channel_numeric, data) print "Received data on channel %d: %s" % (channel_numeric, data)
else:
print "Received data on NON-EXISTENT channel %d" % channel_numeric
class Channel:
numeric = 0
binary = False
handler = None
bindsocket = socket.socket() bindsocket = socket.socket()
bindsocket.bind(('0.0.0.0', 9151)) bindsocket.bind(('0.0.0.0', 9151))

@ -8,12 +8,20 @@ allowed_certs = '/home/sven/ssl/allowed'
# Configuration ends here # Configuration ends here
################################ ################################
import socket, ssl, pprint, time EOC = "\0"
import socket, ssl, time, math
def to_numeric(identifier):
return ((ord(identifier[:1]) - 1) * 255) + (ord(identifier[1:]) - 1)
def to_identifier(numeric):
return chr(int(math.floor(numeric / 255) + 1)) + chr((numeric % 255) + 1)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ssl_sock = ssl.wrap_socket(s, cert_reqs=ssl.CERT_REQUIRED, ca_certs=allowed_certs) ssl_sock = ssl.wrap_socket(s, cert_reqs=ssl.CERT_REQUIRED, ca_certs=allowed_certs)
ssl_sock.connect(('localhost', 9151)) ssl_sock.connect(('localhost', 9151))
ssl_sock.write('test data') ssl_sock.write(to_identifier(3) + 'test data' + EOC + to_identifier(4190) + 'SAMPLEDATA' + EOC)
ssl_sock.close() ssl_sock.close()

Loading…
Cancel
Save