nowa funkcja / domyslne wpisy

This commit is contained in:
Mateusz Gruszczyński
2025-03-10 12:04:22 +01:00
parent 7fb796357f
commit 9cffcb0ca6
7 changed files with 363 additions and 82 deletions

View File

@ -68,7 +68,7 @@
<!-- Pliki /etc/hosts -->
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="filesDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
Pliki /etc/hosts (beta)
Pliki /etc/hosts
</a>
<ul class="dropdown-menu" aria-labelledby="filesDropdown">
<li><a class="dropdown-item" href="{{ url_for('list_hosts_files') }}">Lista plików</a></li>
@ -84,6 +84,18 @@
<li><a class="dropdown-item" href="{{ url_for('backups') }}">Lista kopii</a></li>
</ul>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="filesDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
Domyślne wpisy
</a>
<ul class="dropdown-menu" aria-labelledby="filesDropdown">
<li><a class="nav-link" href="{{ url_for('local_defaults') }}">Domyślne /etc/hosts</a></li>
<li><a class="nav-link" href="{{ url_for('dynamic_variables') }}">Dynamiczne zmienne</a></li>
</ul>
</li>
<!-- Ustawienia -->
<li class="nav-item">
<a class="nav-link" href="{{ url_for('settings') }}">Ustawienia</a>

View File

@ -0,0 +1,57 @@
{% extends "base.html" %}
{% block title %}Zarządzanie zmiennymi dynamicznymi{% endblock %}
{% block content %}
<div class="card">
<div class="card-header">
<h3>Definiowanie zmiennych dynamicznych</h3>
<p class="text-muted">Te zmienne mogą być używane w konfiguracji <code>/etc/hosts</code>, np. <code>${app_name}</code>, <code>${hostname}</code>.</p>
</div>
<div class="card-body">
<form method="POST">
<div class="row">
<div class="col-md-5">
<label class="form-label">Nazwa zmiennej</label>
<input type="text" class="form-control" name="variable_name" placeholder="np. app_name" required>
</div>
<div class="col-md-5">
<label class="form-label">Wartość zmiennej</label>
<input type="text" class="form-control" name="variable_value" placeholder="np. MojaAplikacja" required>
</div>
<div class="col-md-2 d-flex align-items-end">
<button type="submit" class="btn btn-primary w-100">Dodaj</button>
</div>
</div>
</form>
<table class="table table-striped mt-4">
<thead>
<tr>
<th>ID</th>
<th>Nazwa zmiennej</th>
<th>Wartość</th>
<th>Akcje</th>
</tr>
</thead>
<tbody>
{% for var in variables %}
<tr>
<td>{{ var.id }}</td>
<td><code>${{ var.variable_name }}</code></td>
<td>{{ var.variable_value }}</td>
<td>
<form method="POST" action="{{ url_for('delete_dynamic_variable', variable_id=var.id) }}" onsubmit="return confirm('Usunąć zmienną?');">
<button class="btn btn-danger btn-sm">Usuń</button>
</form>
</td>
</tr>
{% else %}
<tr>
<td colspan="4">Brak zdefiniowanych zmiennych.</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
{% endblock %}

View File

@ -0,0 +1,59 @@
{% extends "base.html" %}
{% block title %}Definiowanie wpisów z dynamicznymi zmiennymi{% endblock %}
{% block content %}
<div class="card">
<div class="card-header">
<h3>Ustaw domyślne wpisy /etc/hosts z dynamicznymi zmiennymi</h3>
</div>
<div class="card-body">
<form method="POST">
<div class="row">
<div class="col-md-4">
<label class="form-label">Adres IP</label>
<input type="text" class="form-control" name="ip_address" placeholder="np. 127.0.0.1" required>
</div>
<div class="col-md-4">
<label class="form-label">Hostname</label>
<input type="text" class="form-control" name="hostname" placeholder="np. localhost" required>
</div>
<div class="col-md-4">
<label class="form-label">Dynamiczna zmienna (opcjonalnie)</label>
<input type="text" class="form-control" name="dynamic_variable" placeholder="np. ${app_name}">
<small class="form-text">Dostępne zmienne: ${resolved_hostname}, ${hostname}, ${app_name}, ${function}, ${user}</small>
</div>
</div>
<button type="submit" class="btn btn-primary mt-3">Dodaj wpis</button>
</form>
<table class="table table-striped mt-4">
<thead>
<tr>
<th>ID</th>
<th>Adres IP</th>
<th>Hostname</th>
<th>Zmienna dynamiczna</th>
<th>Akcje</th>
</tr>
</thead>
<tbody>
{% for e in entries %}
<tr>
<td>{{ e.id }}</td>
<td>{{ e.ip_address }}</td>
<td>{{ e.hostname }}</td>
<td>{{ e.dynamic_variable or '—' }}</td>
<td>
<form method="POST" action="{{ url_for('delete_local_default', entry_id=e.id) }}" onsubmit="return confirm('Usunąć wpis?');">
<button class="btn btn-danger btn-sm">Usuń</button>
</form>
</td>
</tr>
{% else %}
<tr><td colspan="5">Brak zdefiniowanych wpisów.</td></tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
{% endblock %}

View File

@ -50,7 +50,8 @@
<th>Wybrany /etc/hosts</th>
<th>Auto Deploy</th>
<th>Auto Backup</th>
<th>Wyłącz CIDR / regex</th>
<th>Wyłącz <a href="{{ url_for('list_regex_hosts') }}">CIDR / regex</a></th>
<th>Wyłącz <a href="{{ url_for('local_defaults') }}">local-defaults</a></th>
<th>Akcje</th>
</tr>
</thead>
@ -152,7 +153,17 @@
</div>
</form>
</td>
<td>
<form method="POST" action="{{ url_for('update_host_automation', id=h.id) }}" class="d-flex justify-content-center">
<input type="hidden" name="setting" value="disable_local_default">
<div class="form-check form-switch">
<input class="form-check-input" type="checkbox" id="disableLocalDefaultCheckbox{{ h.id }}" name="enabled" value="1" onchange="this.form.submit()" {% if h.disable_local_default %}checked{% endif %}>
<label class="form-check-label" for="disableLocalDefaultCheckbox{{ h.id }}"></label>
</div>
</form>
</td>
<td>
<div class="d-flex flex-wrap gap-1">
<a href="{{ url_for('edit_server', id=h.id) }}" class="btn btn-primary btn-sm btn-action">Edytuj</a>