This commit is contained in:
2024-03-16 00:22:05 +02:00
parent 926bd961ac
commit 6ce5769e5a
5 changed files with 31 additions and 11 deletions

3
.gitignore vendored
View File

@ -3,3 +3,6 @@ __pycache__/
sync.log
main.py
.vscode/launch.json
*.swp
*.swo
*.swn

6
lib.py
View File

@ -56,6 +56,9 @@ class Server:
"keys": self.client.get_keys(),
}
self.log = logging.getLogger(f'OutFleet.server[{self.data["name"]}]')
# self.log.info(f"KEY ON {self.data['name']} {self.data['keys'][0]}")
# for key in self.data['keys']:
# print(key)
def info(self) -> ServerDict:
return self.data
@ -121,8 +124,9 @@ class Server:
)
def create_key(self, key_name):
self.client.create_key(key_id=key_name, name=key_name)
self.log.info("New key created: %s", key_name)
return self.client.create_key(name=key_name)
return True
def rename_key(self, key_id, new_name):
self.log.info("Key %s renamed: %s", key_id, new_name)

22
main.py
View File

@ -31,7 +31,7 @@ log = logging.getLogger("OutFleet")
SERVERS = list()
CLIENTS = dict()
VERSION = '1'
VERSION = '2'
HOSTNAME = ""
app = Flask(__name__)
CORS(app)
@ -132,6 +132,7 @@ def clients():
"clients.html",
SERVERS=SERVERS,
CLIENTS=CLIENTS,
VERSION=VERSION,
nt=request.args.get("nt"),
nl=request.args.get("nl"),
selected_client=request.args.get("selected_client"),
@ -199,8 +200,9 @@ def del_server():
config = yaml.safe_load(file) or {}
local_server_id = request.form.get("local_server_id")
server_name = None
try:
config["servers"].pop(local_server_id)
server_name = config["servers"].pop(local_server_id)["name"]
except KeyError as e:
pass
for client_id, client_config in config["clients"].items():
@ -211,9 +213,9 @@ def del_server():
with open(CFG_PATH, "w") as file:
yaml.safe_dump(config, file)
log.info("Deleting server %s", request.form.get("local_server_id"))
log.info("Deleting server %s [%s]", server_name, request.form.get("local_server_id"))
update_state()
return redirect(url_for("index", nt="server has been deleted"))
return redirect(url_for("index", nt=f"Server {server_name} has been deleted"))
@app.route("/add_client", methods=["POST"])
@ -380,6 +382,11 @@ def sync():
)
if request.method == "POST":
log = logging.getLogger("sync")
if request.form.get("wipe") == 'all':
for server in SERVERS:
log.info("Wiping all keys on [%s]", server.data["name"])
for client in server.data['keys']:
server.delete_key(client.key_id)
file_handler = logging.FileHandler("sync.log")
file_handler.setLevel(logging.DEBUG)
formatter = logging.Formatter(
@ -392,21 +399,20 @@ def sync():
for server in SERVERS:
server_hash[server.data["local_server_id"]] = server
for key, client in CLIENTS.items():
log.info(f"Sync client `{client['name']}`")
for u_server_id in client["servers"]:
if u_server_id in server_hash:
if not server_hash[u_server_id].check_client(client["name"]):
log.warning(
f"Client `{client['name']}` absent on `{server_hash[u_server_id].data['name']}`"
f"Client {client['name']} absent on {server_hash[u_server_id].data['name']}"
)
server_hash[u_server_id].create_key(client["name"])
else:
log.info(
f"Client `{client['name']}` already present on `{server_hash[u_server_id].data['name']}`"
f"Client {client['name']} already present on {server_hash[u_server_id].data['name']}"
)
else:
log.info(
f"Client `{client['name']}` incorrect server_id `{u_server_id}`"
f"Client {client['name']} incorrect server_id {u_server_id}"
)
update_state()
return redirect(url_for("sync"))

View File

@ -15,7 +15,7 @@
<a href="#" id="menuLink" class="nav-menu-button">Menu</a>
<div class="nav-inner">
<button onclick="location.href='/';" style="cursor:pointer;" class="primary-button pure-button">OutFleet</button>
<button onclick="location.href='/';" style="cursor:pointer;" class="primary-button pure-button">OutFleet v.{{ VERSION }}</button>
<div class="pure-menu custom-restricted-width">
<ul class="pure-menu-list">

View File

@ -1,5 +1,12 @@
<h1>Last sync log</h1>
<form action="/sync" class="pure-form pure-form-stacked" method="POST">
<p>Wape ALL keys on ALL servers</p>
<label for="no_wipe" class="pure-radio">
<input type="radio" id="no_wipe" name="wipe" value="no_wipe" checked /> No
</label>
<label for="do_wipe" class="pure-radio">
<input type="radio" id="do_wipe" name="wipe" value="all" /> Yes
</label>
<button type="submit" class="pure-button button-error pure-input-1 ">Sync now</button>
</form>
@ -7,4 +14,4 @@
<code>
{% for line in lines %}{{ line }}{% endfor %}
</code>
</pre>
</pre>