Update irr_api.py
This commit is contained in:
parent
242469903a
commit
733cbacfef
1 changed files with 32 additions and 17 deletions
49
irr_api.py
49
irr_api.py
|
|
@ -7,10 +7,7 @@ ASN_FILE_PATH = os.getenv("ASN_FILE_PATH", "/opt/irr-update/asns.txt")
|
||||||
LOG_FILE_PATH = os.getenv("LOG_FILE_PATH", "/opt/irr-update/irr_updater.log")
|
LOG_FILE_PATH = os.getenv("LOG_FILE_PATH", "/opt/irr-update/irr_updater.log")
|
||||||
SCRIPT_PATH = os.getenv("SCRIPT_PATH", "/opt/irr-update/gen.sh")
|
SCRIPT_PATH = os.getenv("SCRIPT_PATH", "/opt/irr-update/gen.sh")
|
||||||
|
|
||||||
EXPECTED_API_KEY = "jouw-zeer-geheime-key-123"
|
EXPECTED_API_KEY = "your-secret-key-123"
|
||||||
|
|
||||||
if not EXPECTED_API_KEY:
|
|
||||||
raise ValueError("EXPECTED_API_KEY is niet ingesteld in het script.")
|
|
||||||
|
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
|
|
||||||
|
|
@ -29,27 +26,25 @@ def ping():
|
||||||
@app.route('/asns', methods=['GET'])
|
@app.route('/asns', methods=['GET'])
|
||||||
@require_api_key
|
@require_api_key
|
||||||
def get_asns():
|
def get_asns():
|
||||||
"""Haalt de huidige inhoud van asns.txt op."""
|
|
||||||
try:
|
try:
|
||||||
with open(ASN_FILE_PATH, 'r') as f:
|
with open(ASN_FILE_PATH, 'r') as f:
|
||||||
content = f.read()
|
content = f.read()
|
||||||
return jsonify({"content": content})
|
return jsonify({"content": content})
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
return jsonify({"error": "asns.txt niet gevonden."}), 404
|
return jsonify({"error": "asns.txt not found."}), 404
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return jsonify({"error": str(e)}), 500
|
return jsonify({"error": str(e)}), 500
|
||||||
|
|
||||||
@app.route('/asns', methods=['POST'])
|
@app.route('/asns', methods=['POST'])
|
||||||
@require_api_key
|
@require_api_key
|
||||||
def update_asns():
|
def update_asns():
|
||||||
"""Werkt de inhoud van asns.txt bij."""
|
|
||||||
content = request.json.get('content')
|
content = request.json.get('content')
|
||||||
if content is None:
|
if content is None:
|
||||||
return jsonify({"error": "Geen 'content' in request body."}), 400
|
return jsonify({"error": "Missing 'content' in request body."}), 400
|
||||||
try:
|
try:
|
||||||
with open(ASN_FILE_PATH, 'w') as f:
|
with open(ASN_FILE_PATH, 'w') as f:
|
||||||
f.write(content)
|
f.write(content)
|
||||||
return jsonify({"success": True, "message": "asns.txt succesvol bijgewerkt."})
|
return jsonify({"success": True, "message": "asns.txt updated successfully."})
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return jsonify({"error": str(e)}), 500
|
return jsonify({"error": str(e)}), 500
|
||||||
|
|
||||||
|
|
@ -57,13 +52,10 @@ def update_asns():
|
||||||
@require_api_key
|
@require_api_key
|
||||||
def run_update():
|
def run_update():
|
||||||
try:
|
try:
|
||||||
open(LOG_FILE_PATH, 'w').close()
|
|
||||||
|
|
||||||
subprocess.Popen([SCRIPT_PATH])
|
subprocess.Popen([SCRIPT_PATH])
|
||||||
|
|
||||||
return jsonify({
|
return jsonify({
|
||||||
"success": True,
|
"success": True,
|
||||||
"message": "IRR update script gestart in de achtergrond. Log wordt nu gevuld."
|
"message": "IRR update script started in background."
|
||||||
})
|
})
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return jsonify({"error": str(e)}), 500
|
return jsonify({"error": str(e)}), 500
|
||||||
|
|
@ -71,15 +63,38 @@ def run_update():
|
||||||
@app.route('/log', methods=['GET'])
|
@app.route('/log', methods=['GET'])
|
||||||
@require_api_key
|
@require_api_key
|
||||||
def get_log():
|
def get_log():
|
||||||
"""Haalt de inhoud van het logbestand op."""
|
START_MARKER = "Starting IRR filter update process."
|
||||||
|
NUM_RUNS_TO_SHOW = 3
|
||||||
|
|
||||||
try:
|
try:
|
||||||
with open(LOG_FILE_PATH, 'r') as f:
|
with open(LOG_FILE_PATH, 'r') as f:
|
||||||
log_content = f.read()
|
lines = f.readlines()
|
||||||
return jsonify({"log": log_content})
|
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
return jsonify({"log": "Logbestand nog niet aangemaakt voor deze run."})
|
return jsonify({"log": "Log file not found."})
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return jsonify({"error": str(e)}), 500
|
return jsonify({"error": str(e)}), 500
|
||||||
|
|
||||||
|
if not lines:
|
||||||
|
return jsonify({"log": "Log file is empty."})
|
||||||
|
|
||||||
|
start_indices = [i for i, line in enumerate(lines) if START_MARKER in line]
|
||||||
|
|
||||||
|
if not start_indices:
|
||||||
|
return jsonify({"log": "".join(lines)})
|
||||||
|
|
||||||
|
num_runs_found = len(start_indices)
|
||||||
|
|
||||||
|
if num_runs_found <= NUM_RUNS_TO_SHOW:
|
||||||
|
run_start_index = start_indices[0]
|
||||||
|
else:
|
||||||
|
run_start_index = start_indices[num_runs_found - NUM_RUNS_TO_SHOW]
|
||||||
|
|
||||||
|
final_start_index = max(0, run_start_index - 1)
|
||||||
|
|
||||||
|
last_runs_lines = lines[final_start_index:]
|
||||||
|
log_content = "".join(last_runs_lines)
|
||||||
|
|
||||||
|
return jsonify({"log": log_content})
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
app.run(host='0.0.0.0', port=5001)
|
app.run(host='0.0.0.0', port=5001)
|
||||||
Loading…
Add table
Add a link
Reference in a new issue