예제 #1
0
def set_notepad(cal, day_var, text_box):
    # This functions retrieves the diary entry of the selected
    # date on the calender and puts it into the text box
    global current_date
    cal_date = get_cal_date(cal)
    date = cal_date.strftime("%Y-%m-%d")
    # .strftime is a method of the datetime.datetime class and it returns
    # a string of the date obj according to the required format
    day = cal_date.strftime("%d %B %Y, %A")
    day_var.set(day)

    # When user wants to change to a different date
    # SAVE CURRENT ENTRY ----> CLEAR THE TEXT BOX ---> INSERT ENTRY OF NEW DATE
    save_data(current_date, text_box)
    text_box.delete(1.0, 'end')
    current_date = date
    add_markings(cal)

    if check_file(date):

        date += ".SDE"

        with open(date) as file:
            data = file.read()

        data = decrypt(data, int(code)).rstrip()
        # decrypts the encrypted data stored in the files
        text_box.insert('end', data)
        # Inserts the entry of that day
    text_box.focus()
예제 #2
0
def check_entered_code(password):
    password = int(password)
    with open('datfile.SDE') as file:
        data = file.read()
    data = decrypt(data, int(password))
    if data == ex_text:
        return True
    else:
        return False
예제 #3
0
def read_to_textbox(text_box, file):
    if ".SDE" not in file:
        file += ".SDE"
    text_box.delete(1.0, 'end')
    try:
        with open(file) as f:
            data = decrypt(f.read(), int(code))
        text_box.insert('end', data)
    except FileNotFoundError:
        return False
    else:
        return True
예제 #4
0
    def data_received(self, data: bytes):
        filepath = None
        ext = None
        images = ['.png', '.jpg', '.gif', 'jpeg']

        try:
            pack = pickle.loads(data)
            if type(pack) != dict:
                raise Exception
        except Exception:
            self.data.append(data)
            try:
                pack = pickle.loads(b''.join(self.data))
                self.data.clear()
            except pickle.UnpicklingError:
                return
        if pack['state'] == 1:
            self.public = pack['public']
            self.public = RSA.import_key(self.public)
            return

        if pack['state'] == 3 or pack['state'] == 4 or pack['state'] == 2:
            self.window.append_text(pack['message'])
            return
        if pack['state'] == 5:
            yellowtext = f'<span style=\" font-weight:600;font-size:{self.settings["font-size"]}; color:#540099;\" >'
            yellowtext += decrypt(self.private, pack['message'])
            yellowtext += "</span>"
            self.window.append_text(yellowtext)
            return

        if pack['state'] == 6:
            blue = ""
            message = decrypt(self.private, pack['message'])
            message = f'<span style=\" font-weight: 400; font-style: normal; color:{self.window.text_color}; font-size: ' \
                      f'{self.settings["font-size"]};\" >{time.strftime("%H:%M", time.localtime())}</span> ' \
                      f'<span style=\"color: {pack["color"]}; font-weight: 400; font-style: ' \
                      f'{self.settings["font"]};\">  {pack["login"]}: </span>{message} '
            blue += f'<span style=\" font-weight: 400;font-size: {self.settings["font-size"]}; ' \
                    f'font-style: italic; color: orange;\" > {message}</span>'
            self.window.append_text(blue)
            return

        if pack['state'] == 7:
            yellowtext = "<span style=\" font-weight: 600; color: #540099;\" >"
            yellowtext += decrypt(self.private, pack['message'])
            yellowtext += "</span>"
            self.window.append_text(yellowtext)
            return

        if pack['state'] == 8:
            file = decrypt_bytes(self.private, pack['attach'])
            ext = pack["fname"][pack["fname"].rfind("."):]
            if ext in images:
                pack["fname"] = f'{str(uuid.uuid4())}{ext}'
            save_bytes(b=file, file=pack["fname"])
            filepath = f'{os.getcwd()}/cache/{pack["fname"]}'

        if pack['state'] == 14:
            blue = ""
            message = decrypt(self.private, pack['message'])
            message = f'<span style=\" font-weight: 400; font-style: normal; color:{self.window.text_color}; font-size: ' \
                      f'{self.settings["font-size"]};\" >{time.strftime("%H:%M", time.localtime())}</span> ' \
                      f'<span style=\"color: {pack["color"]}; font-weight: 400; font-style: ' \
                      f'{self.settings["font"]};\">  {pack["login"]}: </span>{message} '
            blue += f'<span style=\" font-weight: 400;font-size: {self.settings["font-size"]}; ' \
                    f'font-style: italic; color: orange;\" > {message}</span>'
            file = decrypt_bytes(self.private, pack['attach'])
            ext = pack["fname"][pack["fname"].rfind("."):]
            filepath = f'{os.getcwd()}/cache/{pack["fname"]}'
            if ext in images:
                pack["fname"] = f'{str(uuid.uuid4())}{ext}'
                filepath = f'{os.getcwd()}/cache/{pack["fname"]}'
                blue += f'<br> <a href="{filepath}"><img src="{filepath}" width="200" style=' \
                        f'"position: absolute; top: 0px; right: 0px;"></a><br>'
            else:
                blue += f' ||| <a href="{filepath}">{pack["fname"]}</a>'
            save_bytes(b=file, file=pack["fname"])
            self.window.append_text(blue)
            print('private picture')
            return

        message = decrypt(self.private, pack['message'])
        message = f'<span style=\" font-weight: 400; color:{self.window.text_color}; font-size: {self.settings["font-size"]};\" >{time.strftime("%H:%M", time.localtime())}</span>' \
                  f'<span style=\"color: {pack["color"]}\">  {pack["login"]}: </span> {message}'
        message = f'<span style=\" font-size: {self.settings["font-size"]}+2px; color:{self.window.text_color};\" >' + message
        if ext in images:
            message = message + f'<br> <a href="{filepath}"><img src="{filepath}" width="200" style="' \
                                f'position: absolute; top: 0px; right: 0px;"></a><br>'
        elif filepath is not None:
            message = message + f' ||| <a href="{filepath}">{pack["fname"]}</a> '
            # TODO: Сделать ссылку на файл картинкой
        self.window.append_text(message)
예제 #5
0
 def data_received(self, data: bytes) -> None:
     try:
         pack = pickle.loads(data)
         if type(pack) != dict:
             raise Exception
     except Exception:
         self.data.append(data)
         try:
             pack = pickle.loads(b''.join(self.data))
             self.data.clear()
         except pickle.UnpicklingError:
             return
     if not self.logged_in:
         for user in self.server.clients:
             if user.login == pack['login']:
                 message = {
                     'login': '******',
                     'message':
                     'The user with this nickname already exists on the server!',
                     'state': 4
                 }
                 message = pickle.dumps(message)
                 self.transport.write(message)
                 self.transport.close()
                 self.server.clients.remove(self)
         if self.server.whitelistmode and not self.server.MainBD.is_user_exist(
                 pack['login']):
             message = {
                 'login':
                 '******',
                 'message':
                 'WhiteList is active now! You are not registered on the server. '
                 '\t Wait until this mode is turned off!',
                 'state':
                 3
             }
             message = pickle.dumps(message)
             self.transport.write(message)
             self.transport.close()
             self.server.clients.remove(self)
         elif not self.server.whitelistmode:
             if not self.server.MainBD.is_user_exist(pack['login']):
                 message = {
                     'login':
                     '******',
                     'message':
                     f"Welcome to the server, {pack['login']}! \t By entering here, "
                     f"you are automatically registered!",
                     'state':
                     1
                 }
                 message = pickle.dumps(message)
                 self.transport.write(message)
                 self.server.MainBD.sign_in(pack["login"], pack['password'],
                                            pack['email'])
         if not self.server.MainBD.login(pack['login'], pack['password']):
             message = {
                 'login':
                 '******',
                 'message':
                 'Wrong combination of login and password \t Change them in'
                 'the settings and reconnect to the server!',
                 'state':
                 2
             }
             message = pickle.dumps(message)
             self.transport.write(message)
             self.transport.close()
             self.server.clients.remove(self)
         self.public_key = pack['public_key']
         self.public_key = RSA.import_key(self.public_key)
         message = {
             'login': '******',
             'message': 'You have successfully entered the server!',
             'public': self.key_pair.publickey().export_key(),
             'state': 1
         }
         message = pickle.dumps(message)
         self.transport.write(message)
         self.logged_in = True
         self.login = pack['login']
         pack = {'login': '', 'color': None}
         message = f'User {self.login} is connected!'
         self.send_message(pack, message, 5)
         return
     message = decrypt(self.private_key, pack['message'])
     if pack['state'] == 2:
         self.send_pm(pack, message, pack['to'])
         return
     elif pack['state'] == 3:
         self.send_pm(state=7)
         return
     elif pack['state'] == 4:
         file = decrypt_bytes(self.private_key, pack['attach'])
         # filename = str(uuid.uuid4())
         # save_bytes(b=file, file=f'{filename}.{pack["ext"]}')
         pack['attach'] = file
         self.send_message(pack, message, attach=True)
         print(pack['fname'])
         return
     elif pack['state'] == 6:
         file = decrypt_bytes(self.private_key, pack['attach'])
         pack['attach'] = file
         self.send_pm(pack, message, pack['to'], 14)
         return
     print(message)
     self.send_message(pack, message)