This commit is contained in:
ab committed 2024-03-27 20:03:34 +02:00
1 parent f6bcb42ec4
commit c7a41e6a2f
2 files changed
+30 -4

No files matched your search

+2 -1
View File
@@ -92,8 +92,9 @@ def write_config(config):
def reload_config(): def reload_config():
global CONFIG global CONFIG
while True: while True:
new_config = yaml.safe_load(V1.read_namespaced_config_map(name="config-outfleet", namespace=NAMESPACE).data['config.yaml'])
with lib.lock: with lib.lock:
CONFIG = yaml.safe_load(V1.read_namespaced_config_map(name="config-outfleet", namespace=NAMESPACE).data['config.yaml']) CONFIG = new_config
log.debug(f"Synced system config with ConfigMap [config-outfleet].") log.debug(f"Synced system config with ConfigMap [config-outfleet].")
time.sleep(30) time.sleep(30)
+28 -3
View File
@@ -5,12 +5,11 @@ import logging
from datetime import datetime from datetime import datetime
import random import random
import string import string
import argparse
import uuid import uuid
import k8s import k8s
from flask import Flask, render_template, request, url_for, redirect from flask import Flask, render_template, request, url_for, redirect, jsonify
from flask_cors import CORS from flask_cors import CORS
from lib import Server, write_config, get_config, args, lock from lib import Server, write_config, get_config, args, lock
@@ -94,7 +93,6 @@ def update_state(timer=40):
break break
time.sleep(40) time.sleep(40)
@app.route("/", methods=["GET", "POST"]) @app.route("/", methods=["GET", "POST"])
def index(): def index():
if request.method == "GET": if request.method == "GET":
@@ -129,6 +127,33 @@ def index():
else: else:
return redirect(url_for("index")) return redirect(url_for("index"))
@app.route("/servers", methods=["GET", "POST"])
@app.route("/servers/<string:local_server_id>", methods=["GET", "POST", "DELETE"])
def servers(local_server_id=None):
if local_server_id:
log.info(f"Got {local_server_id} Config {get_config()}")
server = get_config()['servers'].get(local_server_id, None)
return jsonify(server)
if request.method == "GET":
return jsonify({ "servers": get_config()['servers']})
elif request.method == "POST":
server = request.form["server_id"]
server = next(
(item for item in SERVERS if item.info()["local_server_id"] == server), None
)
server.apply_config(request.form)
update_state(timer=0)
return redirect(
url_for(
"index",
nt="Updated Outline VPN Server",
selected_server=request.args.get("selected_server"),
)
)
else:
return redirect(url_for("index"))
@app.route("/clients", methods=["GET", "POST"]) @app.route("/clients", methods=["GET", "POST"])
def clients(): def clients():