Skip to content
Open

junk #13

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 14 additions & 6 deletions FlaskBots/BackroundMessageQueue.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import requests
import time
from Protocol.FieldType import Field
from utils.coding import pack_obj


class MessageTask:
Expand All @@ -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()
Expand Down
10 changes: 5 additions & 5 deletions FlaskBots/ConnectionManager.py
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand All @@ -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):
Expand Down Expand Up @@ -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"]


Expand Down
2 changes: 1 addition & 1 deletion FlaskBots/Domain.py
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
22 changes: 11 additions & 11 deletions FlaskBots/MixServer.py
Original file line number Diff line number Diff line change
Expand Up @@ -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'])
Expand All @@ -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
Expand All @@ -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))
Expand All @@ -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


Expand Down