From c400afc751b651d4c518aee74086ca1cc1e98f8b Mon Sep 17 00:00:00 2001 From: Aidar Shaikhullin Date: Wed, 19 Jan 2022 13:50:28 +0500 Subject: [PATCH] junk --- FlaskBots/BackroundMessageQueue.py | 20 ++++++++++++++------ FlaskBots/ConnectionManager.py | 10 +++++----- FlaskBots/Domain.py | 2 +- FlaskBots/MixServer.py | 22 +++++++++++----------- 4 files changed, 31 insertions(+), 23 deletions(-) diff --git a/FlaskBots/BackroundMessageQueue.py b/FlaskBots/BackroundMessageQueue.py index f312478..dbd482c 100644 --- a/FlaskBots/BackroundMessageQueue.py +++ b/FlaskBots/BackroundMessageQueue.py @@ -3,6 +3,7 @@ import requests import time from Protocol.FieldType import Field +from utils.coding import pack_obj class MessageTask: @@ -22,22 +23,29 @@ class MessageQueue: def __init__(self, connection_manager): self.messages = list() self.send_interval = 1 - self.buffer_size = 0 + self.buffer_size = 5 self.connection_manager = connection_manager def fill_by_junk(self): - servers = self.connection_manager.get_all_servers() + servers = self.connection_manager.get_online_servers() if len(self.messages) < self.buffer_size: for i in range(self.buffer_size - len(self.messages)): junk_mes = {Field.to: None, - Field.body: "J" * random.randrange(0, 100)} - receiver = servers[random.randrange(0, len(servers))] + "/message" - self.append_message(MessageTask(url=receiver, data=junk_mes)) + Field.body: "J" * random.randrange(100, 300), + Field.is_junk: True, + Field.cypher_count: 1} + s = servers[random.randrange(0, len(servers))] + receiver = s.addr + "/message" + encrypted = pack_obj(junk_mes, s.pub_k) + self.append_message(MessageTask(url=receiver, data=encrypted)) def send_mixed(self): while True: time.sleep(self.send_interval) - # self.fill_by_junk() + try: + self.fill_by_junk() + except: + pass random.shuffle(self.messages) for message in self.messages: message.send() diff --git a/FlaskBots/ConnectionManager.py b/FlaskBots/ConnectionManager.py index ede229e..6e70305 100644 --- a/FlaskBots/ConnectionManager.py +++ b/FlaskBots/ConnectionManager.py @@ -29,7 +29,7 @@ def start(self): return self def ping_online_servers(self): - print(self.connections) + # print(self.connections) while True: for mixer in list(self.connections.keys()): try: @@ -40,11 +40,11 @@ def ping_online_servers(self): # print(f"{response}---------------------------------------------- PUB_K") self.connections[mixer] = ConnectionInfo(last_online_dt=datetime.datetime.now(), pub_k=pub_k) - print("PING SUCCESS", mixer) + # print("PING SUCCESS", mixer) time.sleep(1) except requests.exceptions.RequestException: - # pass - print("Exc in ping") + pass + # print("Exc in ping") # time.sleep(1) def get_online_servers(self): @@ -77,7 +77,7 @@ def get_all_servers_from_tracker(self): # TODO сделать энергонезавсимый кэш в ConnectionManager tracker_url = os.getenv('TRACKER_GET_MIXERS_URL') response = requests.get(url=tracker_url) - print("In get all servers", response.json()) + # print("In get all servers", response.json()) return response.json()["servers"] diff --git a/FlaskBots/Domain.py b/FlaskBots/Domain.py index 7c2e898..a16d870 100644 --- a/FlaskBots/Domain.py +++ b/FlaskBots/Domain.py @@ -15,7 +15,7 @@ def get_json_dict(request) -> dict: def get_updates_for_user(update_request: dict, db) -> dict: # TODO проверять хэши - print("GETTING UPDATES", update_request[UpdateReq.last_message_time]) + # print("GETTING UPDATES", update_request[UpdateReq.last_message_time]) pub_k = update_request[UpdateReq.sender_public_key] all_messages = db.mail_repo.get_messages_by_recv_pub_k_time_ASC(pub_k) if update_request[UpdateReq.last_message_time] is None: diff --git a/FlaskBots/MixServer.py b/FlaskBots/MixServer.py index 3e9fde7..09dc09d 100644 --- a/FlaskBots/MixServer.py +++ b/FlaskBots/MixServer.py @@ -21,12 +21,12 @@ connection_manager = ConnectionManager(is_server=True).start() message_queue = MessageQueue(connection_manager) -print("PUBLIC KEY", PUBLIC_KEY.__bytes__()) +# print("PUBLIC KEY", PUBLIC_KEY.__bytes__()) -import logging - -log = logging.getLogger('werkzeug') -log.setLevel(logging.ERROR) +# import logging +# +# log = logging.getLogger('werkzeug') +# log.setLevel(logging.ERROR) @app.route("/public-key", methods=['GET']) @@ -44,14 +44,14 @@ def get_public_key(): @app.route("/message", methods=['POST']) def message(): message = get_json_dict(request) # расшифрованное своим приватным ключом - print("MES:", message) + # print("MES:", message) if message.get(Field.is_junk): return "OK", 200 if message[Field.cypher_count] == 1: if message.get(Field.type) == "broadcast": db.mail_repo.add_message(recv_pub_k=message[Field.to_pub_k], message=json.dumps(message), timestamp=message[Field.timestamp]) - print("saved", json.dumps(message)) + # print("saved", json.dumps(message)) else: send_broadcast(message) return "OK", 200 @@ -68,13 +68,13 @@ def send_broadcast(message): for mixer in connection_manager.get_online_servers(): encrypted = pack_obj(message, mixer.pub_k) # Зашифровали для получателя message_queue.append_message(MessageTask(url=mixer.addr + "/message", data=encrypted)) - print("sent broadcast", message) + # print("sent broadcast", message) @app.route("/messages", methods=['GET']) def get_all_messages(): update_request = get_json_dict(request) - print("GETTING UPDATES", update_request) + # print("GETTING UPDATES", update_request) updates = get_updates_for_user(update_request, db) client_pub_k = update_request[UpdateReq.sender_public_key] return pack_obj(updates, pub_k=unpack_pub_k(client_pub_k)) @@ -84,9 +84,9 @@ def get_all_messages(): @app.route("/new-node-notification", methods=['GET', 'POST']) def add_new(): - print("ADD NEW NOTIFICATION--------------------------------------------------------") + # print("ADD NEW NOTIFICATION--------------------------------------------------------") connection_manager.update_connection_list(request.json["servers"]) - print("ALL CONNECTIONS", connection_manager.connections.keys()) + # print("ALL CONNECTIONS", connection_manager.connections.keys()) return "OK", 200