Пример #1
0
 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
Пример #2
0
 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
Пример #3
0
 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)
Пример #4
0
 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']
Пример #5
0
 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)
Пример #6
0
 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']
Пример #7
0
 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']