mirror of
https://github.com/migatu/conjurer.git
synced 2026-07-19 00:02:11 +00:00
Fixin comms
This commit is contained in:
+21
-12
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user