Support for policy upload/download

Plus a small bugfix for groups
This commit is contained in:
2024-12-17 12:10:40 +01:00
parent 7fa17adfb1
commit 31910dc034
10 changed files with 646 additions and 508 deletions

View File

@ -41,16 +41,16 @@
</div>
<div class="col col-6">
<i class="fas fa-angle-right"></i>
{% if auth.groups[0] in config['ADMIN_GROUPS'] %}
{% if not auth.groups[0] or auth.groups[0] in config['ADMIN_GROUPS'] %}
<span class="badge badge-pill badge-warning">
{% else %}
<span class="badge badge-pill badge-dark">
{% endif %}
{{ auth.groups[0]}}
{{ auth.groups[0] | default('no group')}}
</span>
</div>
</div>
{% for group in auth.groups[1:] |sort %}
{% for group in auth.groups[1:] | default([]) |sort %}
<div class="row data">
<div class="col col-2">
&nbsp;

View File

@ -5,10 +5,12 @@
<div class="col col-4">
<h3>nodes</h3>
</div>
<div class="col col-2">
<span data-toggle="tooltip" data-placement="right" title="Recheck all IP addresses of all nodes">
<button type="button" class="btn btn-outline-primary btn-sm" onClick="backfillips(this);">Backfill IP addresses</button>
</span>
<div class="col col-4">
<div class="float-right">
<span data-toggle="tooltip" data-placement="right" title="Recheck all IP addresses of all nodes">
<button type="button" class="btn btn-outline-primary btn-sm" onClick="backfillips(this);">Backfill IP addresses</button>
</span>
</div>
</div>
</div>
<hr>

View File

@ -1,13 +1,30 @@
{% extends "base.html" %}
{% block content %}
<h3>policy</h3>
<footer class="blockquote-footer">
for more info see <a href="https://tailscale.com/kb/1337/acl-syntax" target="_blank">tailscale docs</a>
</footer>
<div class="row data justify-content-between">
<div class="col col-4">
<h3>policy</h3>
<footer class="blockquote-footer">
for more info see <a href="https://tailscale.com/kb/1337/acl-syntax" target="_blank">tailscale docs</a>
</footer>
</div>
<div class="col col-4">
<div class="float-right">
last update:
<span data-toggle="tooltip"
data-placement="right"
title="{{ policy.updatedAt | fmt_datetime }}">
{{policy.updatedAt | htime_dt }}
</span>
<div>
<button type="button" class="btn btn-outline-primary btn-sm plain"><a class="plain" href="/policy/view" target="_blank">View</a></button>
<button type="button" class="btn btn-outline-primary btn-sm plain"><a class="plain" href="/policy/download">Download</a></button>
<button type="button" class="btn btn-outline-primary btn-sm plain" data-toggle="modal" data-target="#uploadACL">Upload</button>
</div>
</div>
</div>
</div>
<hr>
<div class="row">
<div class="col col-6">
<div class="row">
@ -79,8 +96,29 @@
</div>
</div>
<!-- <textarea readonly rows="30" style="width: 80%; height: 80%;">
{{ policy.json }}
</textarea> -->
<!-- upload acl modal -->
<div class="modal fade" id="uploadACL" tabindex="-1" role="dialog" aria-labelledby="uploadACL" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="renameModalLabel">upload ACL</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="form-check form-check-inline">
<input class="form-check-input" type="file" name="upload" id="upload">
</div>
<div>
<span id="output"></span>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary" onClick="uploadACL(this);">Upload</button>
</div>
</div>
</div>
</div>
{% endblock %}