Fixin comms

This commit is contained in:
2024-04-10 18:07:28 +02:00
committed by migatu
parent abb2f05798
commit 239c38c53e
+21 -12
View File
@@ -1,6 +1,7 @@
import logging import logging
import threading import threading
import json import json
import time
from queue import Queue, Empty from queue import Queue, Empty
from flask import Flask, jsonify, request from flask import Flask, jsonify, request
from waitress import serve from waitress import serve
@@ -9,7 +10,8 @@ HOST_ADDRESS = "192.168.1.191"
PORT_ADDRESS = 5000 PORT_ADDRESS = 5000
OUT_COMM_Q = Queue() OUT_COMM_Q = Queue()
IN_COMM_Q = Queue() IN_COMM_Q = Queue()
internal_q = Queue() awaiting_q = []
incoming_q = Queue()
app = Flask(__name__) app = Flask(__name__)
@app.route("/conjurer", methods=["POST"]) @app.route("/conjurer", methods=["POST"])
@@ -18,16 +20,7 @@ def answer_external_command():
record = json.loads(request.data) record = json.loads(request.data)
app.logger.info(record) app.logger.info(record)
app.logger.info("DATA RECEIVED") app.logger.info("DATA RECEIVED")
while True: incoming_q.put(record)
try:
q_data = internal_q.get(block=False)
except Empty:
break
if q_data.uuid in record:
q_data.stop = True
q_data.entries = record
IN_COMM_Q.put(q_data)
return jsonify("SUCCESS") return jsonify("SUCCESS")
@app.route("/conjurer", methods=["GET"]) @app.route("/conjurer", methods=["GET"])
@@ -56,7 +49,21 @@ def scan_queue(_logger):
while True: while True:
data = OUT_COMM_Q.get() data = OUT_COMM_Q.get()
_logger.info(data) _logger.info(data)
internal_q.put(data) awaiting_q.append(data)
def scan_incoming(_logger):
while True:
try:
app.logger.info("DATA FOUND")
answer = incoming_q.get(block=False)
for record in awaiting_q:
if record.uuid in answer.keys():
record.stop = True
record.entries = answer[record.uuid]
IN_COMM_Q.put(request)
except Empty:
time.sleep(1)
break
def comm_subroutine(logger): def comm_subroutine(logger):
#logger.setLevel(logging.DEBUG) #logger.setLevel(logging.DEBUG)
@@ -65,6 +72,8 @@ def comm_subroutine(logger):
threads.append(threading.Thread(target=flask_debug, args=(logger,))) threads.append(threading.Thread(target=flask_debug, args=(logger,)))
#threads.append(threading.Thread(target=waitress_run, args=(logger,))) #threads.append(threading.Thread(target=waitress_run, args=(logger,)))
threads.append(threading.Thread(target=scan_queue,args=(logger,))) threads.append(threading.Thread(target=scan_queue,args=(logger,)))
threads.append(threading.Thread(target=scan_incoming,args=(logger,)))
for worker in threads: for worker in threads:
worker.start() worker.start()