All pastes #1814976 Raw Edit

Someone

public python v1 · immutable
#1814976 ·published 2010-02-27 21:57 UTC
rendered paste body
#!/usr/bin/env pythonimport socketimport threadingfrom base64 import b64encodefrom time import localtimefrom time import strftimeclass server:    def __init__(self, port):        self.port = port        self.input = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)        self.input.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)        self.input.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)        self.input.bind(('', port))    def read(self, length):        return self.input.recvfrom(length)    def respond(self, data, target, port):        self.input.sendto(data, (target, port))class client:    def __init__(self, port):        self.port = port        self.out = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)        self.out.bind(('', port))    def write(self, data, target, port):        self.out.sendto(data, (target, port))        return self.out.recvfrom(8192)def ehandle(reply):    if(reply[0].startswith('NAK:')):        error = reply[0].replace('NAK:','',1)        if(error == 'UNKNWN\n'):            return 'Error: We tried to send data the recipient '+reply[1][0]+' doesn\'t understand'        elif(error == 'CRPTXT:MALFRM\n'):            return 'Error: the encrypted data we sent couldn\'t be decrypted'        else:            return 'Error: An unknown error ocurred'    elif(reply[0].startswith('ACK:')):        message = reply[0].replace('ACK:','',1)        if(message == 'PLNTXT\n'):            return 'OK: successfully sent plaintext'        elif(message == 'CRPTXT\n'):            return 'OK: successfully sent encrypted text'        else:            return 'Warning: data successfully sent, but received strange reply'    else:        return 'Error: unknown reply'def listen(s):    while 1:        message, address = s.read(8192)        ts = '\n'+strftime('(%H:%M:%S)',localtime())        if(message.startswith('PLNTXT:')):            text = message.replace('PLNTXT:', '', 1)            print ts, "("+address[0]+"):", text,            s.respond("ACK:PLNTXT\n", address[0], address[1])        elif(message.startswith('CRPTXT:')):            try:                text = b64decode(message.replace('CRPTXT:', '', 1))                print ts, "("+address[0]+"):", text                s.respond("ACK:CRPTXT\n", address[0], address[1])            except:                print ts, address[0], "sent malformed encrypted data."                s.respond("NAK:CRPTXT:MALFRM\n", address[0], address[1])        else:            print ts, address[0], "sent an unknown request."            s.respond("NAK:UNKNWN\n", address[0], address[1])def messenge(s):    remotehost = socket.gethostbyname(raw_input('connect to: '))    while 1:        print ehandle(s.write('PLNTXT:'+raw_input('message: ')+'\n', remotehost, 31337))insock = server(31337)outsock = client(31338)st = threading.Thread(target=listen, args=(insock,))st.start()ct = threading.Thread(target=messenge, args=(outsock,))ct.start()