GUI: allow deleting external peers from client list

This commit is contained in:
Ruslan
2026-04-14 12:50:47 +03:00
parent 8e124be1f0
commit 22680a0df5
2 changed files with 25 additions and 1 deletions

View File

@@ -444,6 +444,27 @@ def peer_delete(peer_id: int):
return redirect(url_for("index"))
@app.post("/peers/delete-by-key")
def peer_delete_by_key():
pk = (request.form.get("public_key") or "").strip()
if not pk:
flash("Не найден public key", "error")
return redirect(url_for("index"))
try:
run(["/usr/local/sbin/wg-peerctl", "remove", "--client-public-key", pk])
except Exception:
pass
with db_conn() as conn:
cur = conn.cursor()
cur.execute("DELETE FROM peers WHERE public_key = ?", (pk,))
conn.commit()
flash("Peer удален", "ok")
return redirect(url_for("index"))
@app.route("/scripts")
def scripts():
commands = {

View File

@@ -28,7 +28,10 @@
<button type="submit" class="danger">Удалить</button>
</form>
{% else %}
-
<form method="post" action="{{ url_for('peer_delete_by_key') }}" style="display:inline" onsubmit="return confirm('Удалить peer?')">
<input type="hidden" name="public_key" value="{{ p.public_key }}" />
<button type="submit" class="danger">Удалить</button>
</form>
{% endif %}
</td>
</tr>