Reman mit DNS Lookup

This commit is contained in:
ecki 2026-03-08 16:11:13 +01:00
parent 47c95ad539
commit aa320fb20a
3 changed files with 88 additions and 12 deletions

View File

@ -154,7 +154,7 @@ Domains jährlich: <span id="costDomain">0</span> €<br>
<section>
<h2>Active Ressourcen</h2>
<h2>Aktive Ressourcen</h2>
<button onclick="openCreate()">Neue Resource</button>
@ -201,6 +201,7 @@ Domains jährlich: <span id="costDomain">0</span> €<br>
<th>Provider</th>
<th>IP</th>
<th>Server</th>
<th>DNS</th>
<th>Kosten/Jahr</th>
<th>Aktionen</th>
</tr>
@ -676,32 +677,37 @@ loadResources()
}
async function loadDomains(){
const res=await fetch(API+"/domains")
const data=await res.json()
const res = await fetch(API+"/domains")
const data = await res.json()
const table=document.getElementById("domains")
const table = document.getElementById("domains")
table.innerHTML=""
data.forEach(d=>{
data.forEach(async d=>{
const tr=document.createElement("tr")
const tr = document.createElement("tr")
tr.innerHTML=`
<td>${d.domain_name}</td>
<td><span class="provider">${d.provider || ""}</span></td>
<td>${d.ip_address||""}</td>
<td>
<td>
<span class="provider">${d.provider || ""}</span>
</td>
<td>${d.ip_address || ""}</td>
<td id="server-${d.id}">
${d.resource_name ?
d.resource_name :
"<span style='color:red'>⚠ no server</span>"}
</td>
<td>${d.yearly_cost||""}</td>
<td id="dns-${d.id}">...</td>
<td>${d.yearly_cost || ""}</td>
<td>
@ -715,6 +721,46 @@ d.resource_name :
table.appendChild(tr)
/* DNS Check */
try{
const dnsRes = await fetch(API+"/dns/"+d.domain_name)
const result = await dnsRes.json()
let status="❌"
if(result.ips && result.ips.length){
let ipList=result.ips.join("<br>")
if(d.ip_address && result.ips.includes(d.ip_address)){
status="✅ "+ipList
}else{
status="⚠ "+ipList
}
document.getElementById("dns-"+d.id).innerHTML=status
/* automatisch Server erkennen */
const mapRes = await fetch(API+"/domainmap")
const mappings = await mapRes.json()
const server = mappings.find(m=>m.ip_address==result.ips[0])
if(server){
document.getElementById("server-"+d.id).innerHTML=server.server_name
}
}
}catch(e){
document.getElementById("dns-"+d.id).innerHTML="❌"
}
})
}

28
backend/routes/dns.js Normal file
View File

@ -0,0 +1,28 @@
const express = require("express")
const router = express.Router()
const dns = require("dns").promises
router.get("/:domain", async (req,res)=>{
try{
const records = await dns.resolve4(req.params.domain)
res.json({
domain:req.params.domain,
ips:records
})
}catch(err){
res.json({
domain:req.params.domain,
ips:[],
error:true
})
}
})
module.exports = router

View File

@ -6,6 +6,7 @@ const resourceRoutes = require("./routes/resources");
const ipRoutes = require("./routes/ips");
const domainsRoutes = require('./routes/domains');
const domainMapping = require('./routes/domainMapping')
const dnsRoutes = require("./routes/dns")
const app = express();
@ -35,6 +36,7 @@ app.use('/resman/api/domains', domainsRoutes);
app.use('/resman/api/domainmap', domainMapping)
app.use("/resman/api/dns", dnsRoutes)
app.use((err, req, res, next) => {