Esempio n. 1
0
 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()