def handle_login(self, conn, addr):
     '''Handle a client connection's attempt to login'''
     received_data = conn.recv(1024)
     while received_data:
         credentials = DataManager.decode_object(received_data)
         logged_in_status = self.login_manager.login(credentials, addr)
         conn.send(DataManager.encode_object(logged_in_status))
         
         if logged_in_status == LoginStatus.SUCCESS:
             # Client logged in - listen for requests from the client
             print(f'[{addr}, {credentials["username"]}]: Logged in.')
             self.handle_requests(conn, addr, credentials['username'])
         else:
             print(f'[{addr}, {credentials["username"]}]: Attempted login.')
         
         try:
             # Listen for more attempts from the client
             received_data = conn.recv(1024)
         except:
             # Connection has been closed due to logout
             received_data = None
Esempio n. 2
0
    def login(self):
        '''Attempt login to server'''
        while True:
            username = input('> Username: '******'> Password: '******'username': username, 'password': password}
            self.tcp_socket.send(DataManager.encode_object(credentials))

            login_response = self.tcp_socket.recv(1024).decode(
                'utf-8').replace('"', '')
            print('>', login_response)

            if login_response == LoginStatus.SUCCESS:
                # User successfully logged in and identified
                self.username = username
                self.tempID = TempID(self.username,
                                     created=datetime.datetime.min)
                return login_response
            elif login_response == LoginStatus.BLOCKING or login_response == LoginStatus.BLOCKED:
                exit()

        return login_response