From 201a9803442b43f0264b75e6b8b52cd21a297aae Mon Sep 17 00:00:00 2001 From: Felix Stupp Date: Sat, 29 Dec 2018 18:36:54 +0100 Subject: [PATCH] Added ping router --- app.js | 1 + routes/ping.js | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 routes/ping.js diff --git a/app.js b/app.js index 76b6153..b1cddd2 100644 --- a/app.js +++ b/app.js @@ -79,6 +79,7 @@ function route(path, route) { } route("/ssh", "ssh"); +route("/ping", "ping"); // catch 404 and forward to error handler app.use(function (req, res, next) { diff --git a/routes/ping.js b/routes/ping.js new file mode 100644 index 0000000..33918a6 --- /dev/null +++ b/routes/ping.js @@ -0,0 +1,28 @@ +let express = require("express"); +let ipaddr = require("ipaddr.js"); +let db = require("../libs/Database").instance(); +let router = express.Router(); + +router.use((req, res, next) => { + res.type('plain/txt'); + next(); +}); + +router.get("/:fqdn", (req, res) => { + db.q.select(["ipv4", "ipv6"]).from("addresses").where("fqdn", req.params.fqdn).first((e, d) => { + if (e) return res.status(400).send("Error"); + if (!d) return res.status(404).send("Unknown FQDN"); + res.send(d.ipv4 ? (d.ipv6 ? d.ipv4 + "\n" + d.ipv6 : d.ipv4) : (d.ipv6 ? d.ipv6 : "")); + }); +}); + +router.get("/:fqdn/:code", (req, res) => { + let addr = ipaddr.parse(req.ip); + if (!["ipv4", "ipv6"].includes(addr.kind())) return res.status(400).send("Invalid protocoll"); + db.query("UDPATE addresses SET " + addr.kind() + " = ? WHERE fqdn = ? AND code = ?", [addr.toString(), req.params.fqdn, req.params.code], (e, d) => { + if (e) return res.status(400).send("Error"); + res.send(d); + }); +}); + +module.exports = router;