Compare commits

...

5 Commits

Author SHA1 Message Date
Felix Stupp 447431f180
npm: Updated packages for fixing audit 5 years ago
Felix Stupp f108987bf6
ping: Added endpoint for register new fqdn's
- Added environment variable REGISTER_PASS for authorize register
- Added endpoint /:fqdn/:code/:pass for register new fqdn's
5 years ago
Felix Stupp 4d2266e8a7
ping: Changed status code for invalid token to 403 5 years ago
Felix Stupp 9af27ac110
ping.js: Changed tabs to spaces 5 years ago
Felix Stupp b0d3fcc672
ping: Changed date output format to ISO 5 years ago

@ -6,4 +6,5 @@ module.exports = {
password: process.env.DATABASE_PASSWORD,
database: process.env.DATABASE_NAME,
},
registerPass: process.env.REGISTER_PASS,
};

32
package-lock.json generated

@ -309,7 +309,7 @@
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
"requires": {
"ms": "2.0.0"
},
@ -442,7 +442,7 @@
"express-minify": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/express-minify/-/express-minify-1.0.0.tgz",
"integrity": "sha512-04/iYxB79jGeNZBBkbAW7L7FMG4Wtu78F1SayXIKiJD6MfqYnOI3DD8no7QOntgedYCdYUpj+Skg8QWR/2WnMQ==",
"integrity": "sha1-KMkOy4rdX42g1dUDc5ZG+1S+VwQ=",
"requires": {
"clean-css": "^4.1.7",
"on-headers": "^1.0.1",
@ -678,20 +678,20 @@
"integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk="
},
"hbs": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/hbs/-/hbs-4.0.4.tgz",
"integrity": "sha512-esVlyV/V59mKkwFai5YmPRSNIWZzhqL5YMN0++ueMxyK1cCfPa5f6JiHtapPKAIVAhQR6rpGxow0troav9WMEg==",
"version": "4.0.5",
"resolved": "https://registry.npmjs.org/hbs/-/hbs-4.0.5.tgz",
"integrity": "sha512-lzyXY0HalmVqHyhty05cLoPqxY51gNnCI6cMlXiPbrIKvB3BTJh3waQ9de86x25jX9QhU/tkAojsOO4KB6vPfg==",
"requires": {
"handlebars": "4.0.14",
"walk": "2.3.9"
"handlebars": "4.3.3",
"walk": "2.3.14"
},
"dependencies": {
"handlebars": {
"version": "4.0.14",
"resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.14.tgz",
"integrity": "sha512-E7tDoyAA8ilZIV3xDJgl18sX3M8xB9/fMw8+mfW4msLW8jlX97bAnWgT3pmaNXuvzIEgSBMnAHfuXsB2hdzfow==",
"version": "4.3.3",
"resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.3.3.tgz",
"integrity": "sha512-VupOxR91xcGojfINrzMqrvlyYbBs39sXIrWa7YdaQWeBudOlvKEGvCczMfJPgnuwHE/zyH1M6J+IUP6cgDVyxg==",
"requires": {
"async": "^2.5.0",
"neo-async": "^2.6.0",
"optimist": "^0.6.1",
"source-map": "^0.6.1",
"uglify-js": "^3.1.4"
@ -858,7 +858,7 @@
"less-middleware": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/less-middleware/-/less-middleware-3.0.1.tgz",
"integrity": "sha512-FCG4zGd7c/lKMWGDzzkfU9Lcndfjc4TcSnuRwUtJ4E+NxPMuDGe7lJA1rOn+SI9x2lak+s4b6sQkcPa45eqKiw==",
"integrity": "sha1-DM61JlZ1Q/Z7FQx/pXmLYpFpyo4=",
"requires": {
"less": "~3.0.4",
"mkdirp": "~0.5.1",
@ -965,7 +965,7 @@
},
"mkdirp": {
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
"resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
"requires": {
"minimist": "0.0.8"
@ -4683,9 +4683,9 @@
}
},
"walk": {
"version": "2.3.9",
"resolved": "https://registry.npmjs.org/walk/-/walk-2.3.9.tgz",
"integrity": "sha1-MbTbZnjyrgHDnqn7hyWpAx5Vins=",
"version": "2.3.14",
"resolved": "https://registry.npmjs.org/walk/-/walk-2.3.14.tgz",
"integrity": "sha512-5skcWAUmySj6hkBdH6B6+3ddMjVQYH5Qy9QGbPmN8kVmLteXk+yVXg+yfk1nbX30EYakahLrr8iPcCxJQSCBeg==",
"requires": {
"foreachasync": "^3.0.0"
}

@ -19,7 +19,7 @@
"express-session": "^1.15.6",
"express-validator": "^5.3.0",
"handlebars": "^4.1.0",
"hbs": "^4.0.3",
"hbs": "^4.0.5",
"http-errors": "~1.6.2",
"ical-generator": "^1.0.4",
"ipaddr.js": "^1.8.1",

@ -1,9 +1,12 @@
let express = require("express");
let ipaddr = require("ipaddr.js");
let moment = require("moment");
let conf = require("../libs/configuration");
let db = require("../libs/Database").instance();
let router = express.Router();
const IP_TYPES = ["ipv4", "ipv6"];
const REGISTER_PASS = conf.registerPass;
function combineToList(a, b) {
return a + "\n" + b;
@ -14,41 +17,54 @@ function toList(array) {
}
function testIP(req, res, next) {
let addr = ipaddr.parse(req.ip);
let addr = ipaddr.parse(req.ip);
if (!IP_TYPES.includes(addr.kind())) return res.status(400).send("Invalid ip address");
req.params.addr = addr;
next();
req.params.addr = addr;
next();
}
router.use((req, res, next) => {
res.type('text/plain');
next();
next();
});
router.get("/", testIP, (req, res) => {
res.send(req.params.addr.toString());
res.send(req.params.addr.toString());
});
router.get("/:fqdn", (req, res) => {
db.q.select(IP_TYPES.concat(IP_TYPES.map(e => e + "LastPing"))).from("addresses").filter("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.ipv4 : "0.0.0.0",
d.ipv4LastPing,
d.ipv6 ? d.ipv6 : "::",
d.ipv6LastPing,
].reduce((a, b) => a + "\n" + b));
});
if (e) return res.status(400).send("Error");
if (!d) return res.status(404).send("Unknown FQDN");
res.send([
d.ipv4 ? d.ipv4 : "0.0.0.0",
moment(d.ipv4LastPing).toISOString(),
d.ipv6 ? d.ipv6 : "::",
moment(d.ipv6LastPing).toISOString(),
].reduce((a, b) => a + "\n" + b));
});
});
router.get("/:fqdn/:code", testIP, (req, res) => {
let addr = req.params.addr;
let addr = req.params.addr;
db.query("UPDATE addresses SET " + addr.kind() + " = ?, " + addr.kind() + "LastPing = CURRENT_TIMESTAMP WHERE fqdn = ? AND code = ?", [addr.toString(), req.params.fqdn, req.params.code], (e, d) => {
if (e) return res.status(400).send("Error");
if (d.affectedRows <= 0) return res.status(400).send("Invalid token");
res.send(addr.toString());
});
if (e) return res.status(400).send("Error");
if (d.affectedRows <= 0) return res.status(403).send("Invalid token");
res.send(addr.toString());
});
});
router.get("/:fqdn/:code/:pass", (req, res) => {
const pass = req.params.pass;
const fqdn = req.params.fqdn;
const code = req.params.code;
if (REGISTER_PASS === "" || pass !== REGISTER_PASS) return res.status(403).send("Invalid token");
db.query("INSERT INTO addresses SET fqdn = ?, code = ? ON DUPLICATE KEY UPDATE code = ?", [fqdn, code, code], (e, d) => {
if (e) return res.status(400).send("Error");
if (d.insertId <= 0) return res.send("Already registered");
if (d.affectedRows >= 2) return res.send("Successful changed code");
res.send("Successful registered");
})
});
module.exports = router;

Loading…
Cancel
Save