def run(self): # Initialize context, verify certificate ctx = SSL.Context(SSL.SSLv23_METHOD) ctx.set_options(SSL.OP_NO_SSLv2) ctx.set_verify(SSL.VERIFY_PEER|SSL.VERIFY_FAIL_IF_NO_PEER_CERT, verify_cb) #Ask for a certificate ctx.use_privatekey_file ('network/server.pkey') ctx.use_certificate_file('network/server.cert') ctx.load_verify_locations('network/CA.cert') # Starting server, open socket server = SSL.Connection(ctx, socket.socket(socket.AF_INET, socket.SOCK_STREAM)) server.bind(('', SETTINGS.network_port_receive)) server.listen(3) server.setblocking(0) global clients clients = {} global writers writers = {} while 1: try: r,w,_ = select.select([server]+clients.keys(), writers.keys(), []) except: break for cli in r: if cli == server: #Accepting the connection from server cli,addr = server.accept() clients[cli] = addr else: try: #Receieving data, spliting, unpickle.. ret = cli.recv(102400) spliteddata = ret.split('<>') data = spliteddata[0] data = pickle.loads(data) datatype = spliteddata[1] employee_id = spliteddata[2] #forwarding data to requesthandler requesthandler.request(data, datatype, employee_id) except (SSL.WantReadError, SSL.WantWriteError, SSL.WantX509LookupError): pass except SSL.ZeroReturnError: dropClient(cli) except SSL.Error, errors: dropClient(cli, errors) else: if not writers.has_key(cli): writers[cli] = '' writers[cli] = writers[cli] + ret
def run(self): #skriver ut anslutningen #print 'Connected by', self.addr #tar emot data data = self.conn.recv(1024) #splitar datat spliteddata = data.split('<>') data = spliteddata[0] data = pickle.loads(data) datatype = spliteddata[1] #skrev ut datan förut print data.id requesthandler.request(data, datatype, self.db) self.conn.close()