diff --git a/README.md b/README.md index 93f0fff..77a8fab 100644 --- a/README.md +++ b/README.md @@ -47,7 +47,7 @@ A local http file server of some kind. Go into the correct directory with the code - cd watcher + cd client with python's http server diff --git a/client/handoff.sh b/client/handoff.sh old mode 100644 new mode 100755 index 3fc11f3..d413ee4 --- a/client/handoff.sh +++ b/client/handoff.sh @@ -3,4 +3,6 @@ RUN_NUMBER=0 LINK_NUMBER=0 -curl http://10.1.0.155/link/handoff/${RUN_NUMBER}/${LINK_NUMBER} +SERVER_URL="10.1.0.155:5000" + +curl http://${SERVER_URL}/link/handoff/${RUN_NUMBER}/${LINK_NUMBER} diff --git a/client/index.html b/client/index.html index f67053f..e921058 100644 --- a/client/index.html +++ b/client/index.html @@ -9,7 +9,7 @@
- +
diff --git a/client/start.sh b/client/start.sh old mode 100644 new mode 100755 index d11f6e8..70f6715 --- a/client/start.sh +++ b/client/start.sh @@ -3,4 +3,6 @@ RUN_NUMBER=0 LINK_NUMBER=0 -curl http://10.1.0.155/link/start/${RUN_NUMBER}/${LINK_NUMBER} +SERVER_URL="10.1.0.155:5000" + +curl http://${SERVER_URL}/link/start/${RUN_NUMBER}/${LINK_NUMBER} diff --git a/watcher/app.py b/watcher/app.py index cf275b3..5175725 100644 --- a/watcher/app.py +++ b/watcher/app.py @@ -1,8 +1,11 @@ import asyncio import atexit import datetime +import json +import os.path import socket from functools import lru_cache +from pathlib import Path from time import sleep, time import matplotlib.pyplot as plt @@ -13,7 +16,7 @@ from flask_cors import CORS sio = socketio.Server() app = Flask(__name__) -CORS(app) +CORS(app, resources={r"/*": {"origins": "*"}}) app.wsgi_app = socketio.WSGIApp(sio, app.wsgi_app) # We request users to send the run number to prevent accidentially getting old requests from a previous run @@ -31,6 +34,21 @@ function_times = [] function_data = [] +def save_data(): + with open('data.json', 'w') as outfile: + json.dump(db, outfile) + + +def load_data(): + with open('data.json', 'r') as infile: + db = json.load(infile) + + +data_file = Path("data.json") +if data_file.is_file(): + load_data() + + @app.route("/") def index(): return render_template('index.html') @@ -38,16 +56,22 @@ def index(): @app.route("/start_run/") def start_run(run_index): - request_data = live_request(f'/start_run/{run_index}') #make request show up on the live requests - + if "Authorization" not in request.headers or request.headers[ + 'Authorization'] != "dsfqlkjmlkjls,,n": + return "Unauthorized" + + request_data = live_request( + f'/start_run/{run_index}') #make request show up on the live requests + if not run_index.isdigit(): return f'{run_index} is not a number' - db["current_run"] = run_index - starttime = time() if run_index in db["run_data"]: return "This run is already ran, take another number." + db["current_run"] = run_index + starttime = time() db["run_data"][run_index] = {"starttime": starttime, "data": {}} + save_data() # TODO send start request to the first person in the chain. Probably a zeus part already written as example sio.emit('start_run', run_index) return f'Run {run_index} started at {starttime}' @@ -55,13 +79,13 @@ def start_run(run_index): @app.route("/link/start//") def link_start(run, link_index): - request_data = live_request(f'/link/start/{run}/{link_index}') #make request show up on the live requests + request_data = live_request(f'/link/start/{run}/{link_index}' + ) #make request show up on the live requests if not run.isdigit() or not link_index.isdigit(): return f'{run} and/or {link_index} is not a number' start = time() - if db["current_run"] != run: response = "Wrong run number, check that you update your run", 404 @@ -71,6 +95,7 @@ def link_start(run, link_index): response = "you already started in this run. Ignoring this request." else: run_data[link_index] = {"id": link_index, "start": time()} + save_data() sio.emit('link_start', run_data[link_index]) response = "Success." stop = time() @@ -79,17 +104,21 @@ def link_start(run, link_index): return response -@app.route("/link/handoff//") -def link_handoff(run, index): - request_data = live_request(f'/link/handoff/{run}/{link_index}') #make request show up on the live requests +@app.route("/link/handoff//") +def link_handoff(run, link_index): + request_data = live_request(f'/link/handoff/{run}/{link_index}' + ) #make request show up on the live requests - if not run.isdigit() or not index.isdigit(): - return f'{run} and/or {index} is not a number' + if not run.isdigit() or not link_index.isdigit(): + return f'{run} and/or {link_index} is not a number' if db["current_run"] != run: return "Wrong run number, check that you updated you run", 404 else: - link_data = db["run_data"][run]["data"][index] + if index not in db["run_data"][run]["data"]: + return "This link did not start yet..." + link_data = db["run_data"][run]["data"][link_index] + save_data() if "handoff" in link_data: return "you already handed off control during this run. Ignoring this request" else: @@ -134,7 +163,7 @@ if __name__ == '__main__': # scheduler = BackgroundScheduler() # scheduler.add_job(func=plot_graph, trigger="interval", seconds=5) # scheduler.start() - app.run(host="0.0.0.0", debug=True) + app.run(host="10.1.0.155", debug=True) # shut down the scheduler when exiting the app # atexit.register(lambda: scheduler.shutdown()) diff --git a/watcher/static/index.js b/watcher/static/index.js index 37bc8dd..ae9397c 100644 --- a/watcher/static/index.js +++ b/watcher/static/index.js @@ -23,7 +23,7 @@ require(['jquery', 'socket.io'], function(jq, io) { $(function() { - const socket = io('localhost:5000'); + const socket = io('10.1.0.155:5000'); socket.on('start_run', function(run_index) {}); socket.on('link_start', function(link_data) { diff --git a/watcher/templates/index.html b/watcher/templates/index.html index 185e868..186d3e2 100644 --- a/watcher/templates/index.html +++ b/watcher/templates/index.html @@ -21,31 +21,28 @@
-
-
- 0 -
-
- -
-
- -
-
- -
- Links + +
+ Links
-
Runs
-
Live Requests