From 883dc6856d57539c652c06468503357deb59aebd Mon Sep 17 00:00:00 2001 From: root Date: Fri, 6 Mar 2026 18:30:03 +0100 Subject: [PATCH] working resman version --- backend/public/index.html | 598 ++++++++++++++------------------ backend/routes/domainMapping.js | 33 ++ backend/routes/domains.js | 120 +++++++ backend/server.js | 7 + 4 files changed, 424 insertions(+), 334 deletions(-) create mode 100644 backend/routes/domainMapping.js create mode 100644 backend/routes/domains.js diff --git a/backend/public/index.html b/backend/public/index.html index ecb278c..0dafcc7 100644 --- a/backend/public/index.html +++ b/backend/public/index.html @@ -1,379 +1,272 @@ + - ResMan - -

Resource Manager

+

ResMan

- +

Create Resource

+ +
+ + + + + + + + + +

Active Resources

- - + - - - +
ID Name ProviderProdukt CPU RAM Disk IPs Actions
-

Cancelled Resources

- + - - - - - - - - +
ID Name ProviderProduktCPURAMDiskIPsActions
+

Domains

- +
- + + + + + + + + + + + + + + +
IDDomainProviderIPServerActions
+ +

Domain → Server Mapping

+ + + + + + + + + + + + + +
DomainIPServer
diff --git a/backend/routes/domainMapping.js b/backend/routes/domainMapping.js new file mode 100644 index 0000000..cc1af7a --- /dev/null +++ b/backend/routes/domainMapping.js @@ -0,0 +1,33 @@ +const express = require('express') +const router = express.Router() +const db = require('../db') + +router.get('/', async (req, res) => { + +try { + +const [rows] = await db.query(` +SELECT +d.id AS domain_id, +d.domain_name, +d.ip_address, +r.id AS resource_id, +r.name AS server_name +FROM domains d +LEFT JOIN resource_ips ip ON d.ip_address = ip.ip +LEFT JOIN resources r ON ip.resource_id = r.id +ORDER BY d.domain_name +`) + +res.json(rows) + +} catch(err){ + +console.error(err) +res.status(500).json({error:"DB error"}) + +} + +}) + +module.exports = router diff --git a/backend/routes/domains.js b/backend/routes/domains.js new file mode 100644 index 0000000..7ea3b4d --- /dev/null +++ b/backend/routes/domains.js @@ -0,0 +1,120 @@ +const express = require('express'); +const router = express.Router(); +const pool = require('../db'); + + +// GET ALL DOMAINS +router.get('/', async (req, res) => { + try { + const [rows] = await pool.query(` + SELECT + d.id, + d.domain_name, + d.provider, + d.ip_address, + d.yearly_cost, + d.notes, + r.name AS resource_name + FROM domains d + LEFT JOIN resource_ips ip ON d.ip_address = ip.ip + LEFT JOIN resources r ON ip.resource_id = r.id + ORDER BY d.domain_name + `); + + res.json(rows); + + } catch (err) { + console.error("GET domains error:", err); + res.status(500).json({ error: "DB error" }); + } +}); + + +// GET SINGLE DOMAIN +router.get('/:id', async (req, res) => { + try { + const [rows] = await pool.query( + `SELECT * FROM domains WHERE id = ?`, + [req.params.id] + ); + + if (rows.length === 0) { + return res.status(404).json({ error: "Domain not found" }); + } + + res.json(rows[0]); + + } catch (err) { + console.error("GET domain error:", err); + res.status(500).json({ error: "DB error" }); + } +}); + + +// CREATE DOMAIN +router.post('/', async (req, res) => { + try { + const { domain_name, provider, ip_address, yearly_cost, notes } = req.body; + + const [result] = await pool.query( + `INSERT INTO domains + (domain_name, provider, ip_address, yearly_cost, notes) + VALUES (?, ?, ?, ?, ?)`, + [domain_name, provider, ip_address, yearly_cost, notes] + ); + + res.json({ + message: "Domain created", + id: result.insertId + }); + + } catch (err) { + console.error("CREATE domain error:", err); + res.status(500).json({ error: "DB error" }); + } +}); + + +// UPDATE DOMAIN +router.put('/:id', async (req, res) => { + try { + const { domain_name, provider, ip_address, yearly_cost, notes } = req.body; + + await pool.query( + `UPDATE domains SET + domain_name = ?, + provider = ?, + ip_address = ?, + yearly_cost = ?, + notes = ? + WHERE id = ?`, + [domain_name, provider, ip_address, yearly_cost, notes, req.params.id] + ); + + res.json({ message: "Domain updated" }); + + } catch (err) { + console.error("UPDATE domain error:", err); + res.status(500).json({ error: "DB error" }); + } +}); + + +// DELETE DOMAIN +router.delete('/:id', async (req, res) => { + try { + await pool.query( + `DELETE FROM domains WHERE id = ?`, + [req.params.id] + ); + + res.json({ message: "Domain deleted" }); + + } catch (err) { + console.error("DELETE domain error:", err); + res.status(500).json({ error: "DB error" }); + } +}); + + +module.exports = router; diff --git a/backend/server.js b/backend/server.js index 8298702..02b1450 100644 --- a/backend/server.js +++ b/backend/server.js @@ -4,6 +4,8 @@ const path = require("path"); const resourceRoutes = require("./routes/resources"); const ipRoutes = require("./routes/ips"); +const domainsRoutes = require('./routes/domains'); +const domainMapping = require('./routes/domainMapping') const app = express(); @@ -29,6 +31,11 @@ app.use("/resman/api/resources", resourceRoutes); app.use("/resman/api", ipRoutes); +app.use('/resman/api/domains', domainsRoutes); + +app.use('/resman/api/domainmap', domainMapping) + + app.use((err, req, res, next) => { console.error("EXPRESS ERROR:");