73 lines
2.9 KiB
HTML
73 lines
2.9 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="de">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<title>Zentrales Caddy-Dashboard</title>
|
|
<script src="https://cdn.tailwindcss.com"></script>
|
|
<script>
|
|
function toggleServer(id) {
|
|
let section = document.getElementById("server-" + id);
|
|
section.classList.toggle("hidden");
|
|
}
|
|
|
|
function filterEntries() {
|
|
let query = document.getElementById("search").value.toLowerCase();
|
|
let rows = document.querySelectorAll("tbody tr");
|
|
rows.forEach(row => {
|
|
let domain = row.dataset.domain.toLowerCase();
|
|
row.style.display = domain.includes(query) ? "" : "none";
|
|
});
|
|
}
|
|
|
|
function deleteServer(serverName) {
|
|
fetch('/delete', {
|
|
method: 'POST',
|
|
headers: {'Content-Type': 'application/json'},
|
|
body: JSON.stringify({"server": serverName})
|
|
}).then(response => {
|
|
if (response.ok) {
|
|
document.getElementById("server-box-" + serverName).remove();
|
|
}
|
|
});
|
|
}
|
|
</script>
|
|
</head>
|
|
<body class="bg-gray-900 text-gray-100">
|
|
<header class="bg-indigo-700 text-white p-4 text-center">
|
|
<h1 class="text-2xl font-bold">Zentrales Caddy-Dashboard</h1>
|
|
</header>
|
|
|
|
<div class="container mx-auto p-6">
|
|
<input type="text" id="search" class="w-full p-2 mb-4 text-gray-900 rounded-md" placeholder="🔍 Suche nach einer Subdomain..." onkeyup="filterEntries()">
|
|
|
|
{% for server, entries in proxies.items() %}
|
|
<div id="server-box-{{ server }}" class="bg-gray-800 p-4 rounded-md mb-6">
|
|
<div class="flex justify-between">
|
|
<button onclick="toggleServer('{{ server }}')" class="text-lg font-semibold text-indigo-400">
|
|
{{ server }}
|
|
</button>
|
|
<button onclick="deleteServer('{{ server }}')" class="bg-red-500 text-white px-3 py-1 rounded-md">🗑️ Löschen</button>
|
|
</div>
|
|
<div id="server-{{ server }}" class="mt-2 hidden">
|
|
<table class="w-full mt-3">
|
|
<thead>
|
|
<tr class="text-cyan-400">
|
|
<th class="text-left p-2">Domain</th>
|
|
<th class="text-left p-2">Ziel</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{% for domain, target in entries.items() %}
|
|
<tr data-domain="{{ domain }}">
|
|
<td class="p-2"><a href="https://{{ domain }}" target="_blank" class="text-indigo-400">{{ domain }}</a></td>
|
|
<td class="p-2">{{ target }}</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
{% endfor %}
|
|
</div>
|
|
</body>
|
|
</html>
|