def _getallmsgs(self): msg_list = [] dialogs = Users.get_user(self.sender).get_all_dialogs() for k, v in dialogs.items(): for msg in v.get_messages(): msg_list.append(msg.as_dict()) self.response['message_array'] = msg_list
def _getnewmsgs(self): msg_list = [] msgs = Users.get_user(self.sender).get_undelivered_messages() while len(msgs) != 0: msg = msgs.pop() msg_list.append(msg.as_dict()) self.response['message_array'] = msg_list
def _save(self): request_content = json.loads(self.content) if request_content['response_content']['message_array']: for msg in request_content['response_content']['message_array']: msg = UserMessage.parse_from_dict(json.loads(self.content)) message_sender = Users.get_user(msg.sender) message_sender.add_msg_to_dialog(msg.recipient, msg)
def _message(self): message = UserMessage(recipient=self.content['recipient'], sender=self.content['sender'], content=self.content['content']) message.set_timestamp() try: message_recipient = Users.get_user(message.recipient) message_recipient.add_undelivered_message(message) except KeyError: self.status = ResponseCreator.status_codes['USER_DO_NOT_EXIST']
def _delete_account(self): username = self.content['username'] if not Users.user_exists(username): self.status = ResponseCreator.status_codes['USER_DO_NOT_EXIST'] return user = Users.get_user(username) password = Encryptor.asymmetric_decrypt_message( key=ServerSession.get_private_key(), message=self.content['password']) if user.check_password(password): Users.delete_user_account(username)
def _connect(self): try: message_recipient = Users.get_user(self.content['recipient']) if not message_recipient.has_pending_connect_from( self.content['sender']): message = UserMessage(recipient=self.content['recipient'], sender=self.content['sender'], content=self.content['content']) message.set_timestamp() message_recipient.add_undelivered_message(message) else: self.status = ResponseCreator.status_codes[ 'CONNECT_ALREADY_PENDING'] except KeyError: self.status = ResponseCreator.status_codes['USER_DO_NOT_EXIST']
def _authenticate(self): username = self.content['username'] if not Users.user_exists(username): self.status = ResponseCreator.status_codes['USER_DO_NOT_EXIST'] return user = Users.get_user(username) password = Encryptor.asymmetric_decrypt_message( key=ServerSession.get_private_key(), message=self.content['password']) if user.check_password(password): key = Encryptor.generate_symmetric_key() ServerSession.add_client_session_key(user.get_username(), key) pub_k = UsersToPublicKeys.get_public_key(username) print(username, ' session key ', key) encrypted_key = Encryptor.asymmetric_encrypt_message(key=pub_k, message=key) self.response = {'key': encrypted_key} else: self.status = ResponseCreator.status_codes['WRONG_PASSWORD']