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()
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
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
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)
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)