async function loadResources(){
const resources = await api(API + "/resources/active");
const mappings = await api(API + "/domainmap");
const table = document.getElementById("resources");
table.innerHTML = "";
resources.forEach(r => {
let ips = "";
if(Array.isArray(r.ips)){
ips = r.ips.map(ip =>
"" + (ip.type || "") + " " + ip.ip + ""
).join("");
}
let domains = mappings
.filter(m => m.resource_id == r.id)
.map(m => "🌐 " + m.domain_name + "")
.join("");
const tr = document.createElement("tr");
tr.innerHTML = `
${r.name} |
${r.produkt || ""} |
${r.provider || ""} |
... |
${r.cpu ? r.cpu + " CPU" : ""}
${r.ram ? " • " + r.ram + " RAM" : ""}
${r.disk ? " • " + r.disk : ""}
${r.os ? " • " + r.os : ""}
|
${domains} |
${ips}
|
|
`;
table.appendChild(tr);
});
}
async function loadDomains(){
const domains = await api(API + "/domains");
const table = document.getElementById("domains");
table.innerHTML = "";
domains.forEach(d => {
const tr = document.createElement("tr");
tr.innerHTML = `
${d.domain_name} |
${d.provider || ""}
|
${d.ip_address || ""} |
${d.resource_name ?
d.resource_name :
"⚠ no server"}
|
... |
${d.yearly_cost || ""} |
|
`;
table.appendChild(tr);
});
}
async function deleteDomain(id){
if(!confirm("Domain löschen?")) return;
await api(API + "/domains/" + id, {
method: "DELETE"
});
loadDomains();
}
async function loadMapping(){
const data = await api(API + "/domainmap");
const table = document.getElementById("mapping");
table.innerHTML = "";
data.forEach(m => {
const tr = document.createElement("tr");
tr.innerHTML = `
${m.domain_name} |
${m.ip_address} |
${m.server_name || ""} |
`;
table.appendChild(tr);
});
}
loadResources();
loadDomains();
loadMapping();