mirror of
https://github.com/house-of-vanity/OutFleet.git
synced 2025-07-07 01:24:06 +00:00
Bump
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@ -3,3 +3,6 @@ __pycache__/
|
|||||||
sync.log
|
sync.log
|
||||||
main.py
|
main.py
|
||||||
.vscode/launch.json
|
.vscode/launch.json
|
||||||
|
*.swp
|
||||||
|
*.swo
|
||||||
|
*.swn
|
||||||
|
6
lib.py
6
lib.py
@ -56,6 +56,9 @@ class Server:
|
|||||||
"keys": self.client.get_keys(),
|
"keys": self.client.get_keys(),
|
||||||
}
|
}
|
||||||
self.log = logging.getLogger(f'OutFleet.server[{self.data["name"]}]')
|
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:
|
def info(self) -> ServerDict:
|
||||||
return self.data
|
return self.data
|
||||||
@ -121,8 +124,9 @@ class Server:
|
|||||||
)
|
)
|
||||||
|
|
||||||
def create_key(self, key_name):
|
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)
|
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):
|
def rename_key(self, key_id, new_name):
|
||||||
self.log.info("Key %s renamed: %s", key_id, new_name)
|
self.log.info("Key %s renamed: %s", key_id, new_name)
|
||||||
|
22
main.py
22
main.py
@ -31,7 +31,7 @@ log = logging.getLogger("OutFleet")
|
|||||||
|
|
||||||
SERVERS = list()
|
SERVERS = list()
|
||||||
CLIENTS = dict()
|
CLIENTS = dict()
|
||||||
VERSION = '1'
|
VERSION = '2'
|
||||||
HOSTNAME = ""
|
HOSTNAME = ""
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
CORS(app)
|
CORS(app)
|
||||||
@ -132,6 +132,7 @@ def clients():
|
|||||||
"clients.html",
|
"clients.html",
|
||||||
SERVERS=SERVERS,
|
SERVERS=SERVERS,
|
||||||
CLIENTS=CLIENTS,
|
CLIENTS=CLIENTS,
|
||||||
|
VERSION=VERSION,
|
||||||
nt=request.args.get("nt"),
|
nt=request.args.get("nt"),
|
||||||
nl=request.args.get("nl"),
|
nl=request.args.get("nl"),
|
||||||
selected_client=request.args.get("selected_client"),
|
selected_client=request.args.get("selected_client"),
|
||||||
@ -199,8 +200,9 @@ def del_server():
|
|||||||
config = yaml.safe_load(file) or {}
|
config = yaml.safe_load(file) or {}
|
||||||
|
|
||||||
local_server_id = request.form.get("local_server_id")
|
local_server_id = request.form.get("local_server_id")
|
||||||
|
server_name = None
|
||||||
try:
|
try:
|
||||||
config["servers"].pop(local_server_id)
|
server_name = config["servers"].pop(local_server_id)["name"]
|
||||||
except KeyError as e:
|
except KeyError as e:
|
||||||
pass
|
pass
|
||||||
for client_id, client_config in config["clients"].items():
|
for client_id, client_config in config["clients"].items():
|
||||||
@ -211,9 +213,9 @@ def del_server():
|
|||||||
|
|
||||||
with open(CFG_PATH, "w") as file:
|
with open(CFG_PATH, "w") as file:
|
||||||
yaml.safe_dump(config, 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()
|
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"])
|
@app.route("/add_client", methods=["POST"])
|
||||||
@ -380,6 +382,11 @@ def sync():
|
|||||||
)
|
)
|
||||||
if request.method == "POST":
|
if request.method == "POST":
|
||||||
log = logging.getLogger("sync")
|
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 = logging.FileHandler("sync.log")
|
||||||
file_handler.setLevel(logging.DEBUG)
|
file_handler.setLevel(logging.DEBUG)
|
||||||
formatter = logging.Formatter(
|
formatter = logging.Formatter(
|
||||||
@ -392,21 +399,20 @@ def sync():
|
|||||||
for server in SERVERS:
|
for server in SERVERS:
|
||||||
server_hash[server.data["local_server_id"]] = server
|
server_hash[server.data["local_server_id"]] = server
|
||||||
for key, client in CLIENTS.items():
|
for key, client in CLIENTS.items():
|
||||||
log.info(f"Sync client `{client['name']}`")
|
|
||||||
for u_server_id in client["servers"]:
|
for u_server_id in client["servers"]:
|
||||||
if u_server_id in server_hash:
|
if u_server_id in server_hash:
|
||||||
if not server_hash[u_server_id].check_client(client["name"]):
|
if not server_hash[u_server_id].check_client(client["name"]):
|
||||||
log.warning(
|
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"])
|
server_hash[u_server_id].create_key(client["name"])
|
||||||
else:
|
else:
|
||||||
log.info(
|
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:
|
else:
|
||||||
log.info(
|
log.info(
|
||||||
f"Client `{client['name']}` incorrect server_id `{u_server_id}`"
|
f"Client {client['name']} incorrect server_id {u_server_id}"
|
||||||
)
|
)
|
||||||
update_state()
|
update_state()
|
||||||
return redirect(url_for("sync"))
|
return redirect(url_for("sync"))
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
<a href="#" id="menuLink" class="nav-menu-button">Menu</a>
|
<a href="#" id="menuLink" class="nav-menu-button">Menu</a>
|
||||||
|
|
||||||
<div class="nav-inner">
|
<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">
|
<div class="pure-menu custom-restricted-width">
|
||||||
<ul class="pure-menu-list">
|
<ul class="pure-menu-list">
|
||||||
|
@ -1,5 +1,12 @@
|
|||||||
<h1>Last sync log</h1>
|
<h1>Last sync log</h1>
|
||||||
<form action="/sync" class="pure-form pure-form-stacked" method="POST">
|
<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>
|
<button type="submit" class="pure-button button-error pure-input-1 ">Sync now</button>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
@ -7,4 +14,4 @@
|
|||||||
<code>
|
<code>
|
||||||
{% for line in lines %}{{ line }}{% endfor %}
|
{% for line in lines %}{{ line }}{% endfor %}
|
||||||
</code>
|
</code>
|
||||||
</pre>
|
</pre>
|
||||||
|
Reference in New Issue
Block a user