ResMan update
This commit is contained in:
@@ -165,6 +165,7 @@ Domains jährlich: <span id="costDomain">0</span> €<br>
|
|||||||
<th>Name</th>
|
<th>Name</th>
|
||||||
<th>Produkt</th>
|
<th>Produkt</th>
|
||||||
<th>Provider</th>
|
<th>Provider</th>
|
||||||
|
<th>Status</th>
|
||||||
<th>System</th>
|
<th>System</th>
|
||||||
<th>Domains</th>
|
<th>Domains</th>
|
||||||
<th>IPs</th>
|
<th>IPs</th>
|
||||||
@@ -417,6 +418,7 @@ ${r.name}
|
|||||||
</td>
|
</td>
|
||||||
<td>${r.produkt||""}</td>
|
<td>${r.produkt||""}</td>
|
||||||
<td><span class="provider">${r.provider || ""}</span></td>
|
<td><span class="provider">${r.provider || ""}</span></td>
|
||||||
|
<td id="status-${r.id}">...</td>
|
||||||
<td>
|
<td>
|
||||||
<div class="system">
|
<div class="system">
|
||||||
|
|
||||||
@@ -444,7 +446,7 @@ ${ips}
|
|||||||
`
|
`
|
||||||
|
|
||||||
table.appendChild(tr)
|
table.appendChild(tr)
|
||||||
|
checkServerStatus(r)
|
||||||
})
|
})
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -541,6 +543,17 @@ const ip=document.getElementById("new_ip").value
|
|||||||
const type=document.getElementById("new_type").value
|
const type=document.getElementById("new_type").value
|
||||||
const comment=document.getElementById("new_comment").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`,{
|
await fetch(`/resman/api/resources/${resourceId}/ips`,{
|
||||||
|
|
||||||
method:"POST",
|
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()
|
loadResources()
|
||||||
loadCancelled()
|
loadCancelled()
|
||||||
loadDomains()
|
loadDomains()
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -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,6 +7,8 @@ const ipRoutes = require("./routes/ips");
|
|||||||
const domainsRoutes = require('./routes/domains');
|
const domainsRoutes = require('./routes/domains');
|
||||||
const domainMapping = require('./routes/domainMapping')
|
const domainMapping = require('./routes/domainMapping')
|
||||||
const dnsRoutes = require("./routes/dns")
|
const dnsRoutes = require("./routes/dns")
|
||||||
|
const pingRoutes = require("./routes/ping")
|
||||||
|
const ipCheck = require("./routes/ipcheck")
|
||||||
|
|
||||||
const app = express();
|
const app = express();
|
||||||
|
|
||||||
@@ -38,6 +40,11 @@ app.use('/resman/api/domainmap', domainMapping)
|
|||||||
|
|
||||||
app.use("/resman/api/dns", dnsRoutes)
|
app.use("/resman/api/dns", dnsRoutes)
|
||||||
|
|
||||||
|
app.use("/resman/api/ping", pingRoutes)
|
||||||
|
|
||||||
|
app.use("/resman/api/ipcheck", ipCheck)
|
||||||
|
|
||||||
|
|
||||||
app.use((err, req, res, next) => {
|
app.use((err, req, res, next) => {
|
||||||
|
|
||||||
console.error("EXPRESS ERROR:");
|
console.error("EXPRESS ERROR:");
|
||||||
|
|||||||
Reference in New Issue
Block a user