ResMan update

This commit is contained in:
ecki
2026-03-08 16:45:16 +01:00
parent aa320fb20a
commit bffb8eaaeb
4 changed files with 82 additions and 1 deletions
+36 -1
View File
@@ -165,6 +165,7 @@ Domains jährlich: <span id="costDomain">0</span> €<br>
<th>Name</th>
<th>Produkt</th>
<th>Provider</th>
<th>Status</th>
<th>System</th>
<th>Domains</th>
<th>IPs</th>
@@ -417,6 +418,7 @@ ${r.name}
</td>
<td>${r.produkt||""}</td>
<td><span class="provider">${r.provider || ""}</span></td>
<td id="status-${r.id}">...</td>
<td>
<div class="system">
@@ -444,7 +446,7 @@ ${ips}
`
table.appendChild(tr)
checkServerStatus(r)
})
}
@@ -541,6 +543,17 @@ const ip=document.getElementById("new_ip").value
const type=document.getElementById("new_type").value
const comment=document.getElementById("new_comment").value
const check = await fetch(API+"/ipcheck/"+ip)
const result = await check.json()
if(result.length){
if(!confirm("IP existiert bereits. Trotzdem speichern?")){
return
}
}
await fetch(`/resman/api/resources/${resourceId}/ips`,{
method:"POST",
@@ -1064,6 +1077,28 @@ document.getElementById("serverDetailModal").style.display="none"
}
async function checkServerStatus(resource){
if(!Array.isArray(resource.ips)) return
const ip = resource.ips.find(i=>i.type==="public")
if(!ip) return
const res = await fetch(API+"/ping/"+ip.ip)
const data = await res.json()
let icon="🔴"
if(data.status==="online"){
icon="🟢"
}
document.getElementById("status-"+resource.id).innerHTML=icon
}
loadResources()
loadCancelled()
loadDomains()
+18
View File
@@ -0,0 +1,18 @@
const express = require("express")
const router = express.Router()
const db = require("../db")
router.get("/:ip", async (req,res)=>{
const ip=req.params.ip
const [rows]=await db.query(
"SELECT resource_id FROM resource_ips WHERE ip=?",
[ip]
)
res.json(rows)
})
module.exports=router
+21
View File
@@ -0,0 +1,21 @@
const express = require("express")
const router = express.Router()
const { exec } = require("child_process")
router.get("/:ip", (req,res)=>{
const ip=req.params.ip
exec(`ping -c 1 -W 1 ${ip}`, (err)=>{
if(err){
return res.json({status:"offline"})
}
res.json({status:"online"})
})
})
module.exports = router
+7
View File
@@ -7,6 +7,8 @@ const ipRoutes = require("./routes/ips");
const domainsRoutes = require('./routes/domains');
const domainMapping = require('./routes/domainMapping')
const dnsRoutes = require("./routes/dns")
const pingRoutes = require("./routes/ping")
const ipCheck = require("./routes/ipcheck")
const app = express();
@@ -38,6 +40,11 @@ app.use('/resman/api/domainmap', domainMapping)
app.use("/resman/api/dns", dnsRoutes)
app.use("/resman/api/ping", pingRoutes)
app.use("/resman/api/ipcheck", ipCheck)
app.use((err, req, res, next) => {
console.error("EXPRESS ERROR:");