summaryrefslogtreecommitdiffstats
path: root/server/api/groups.js
diff options
context:
space:
mode:
authorJannik Schönartz2019-03-06 03:56:58 +0100
committerJannik Schönartz2019-03-06 03:56:58 +0100
commit7aae6acdc3dacb4e80d61421a2956e20fa8f94ef (patch)
treefa2293eb43bca093d7bd320956615752f1f6c39e /server/api/groups.js
parent[server] Fix ipxe sendlog. Fix idoit missing try catch. (diff)
downloadbas-7aae6acdc3dacb4e80d61421a2956e20fa8f94ef.tar.gz
bas-7aae6acdc3dacb4e80d61421a2956e20fa8f94ef.tar.xz
bas-7aae6acdc3dacb4e80d61421a2956e20fa8f94ef.zip
[server/ipranges] Store ipranges as integers in the db. Add converting ip -> int & int -> ip
Diffstat (limited to 'server/api/groups.js')
-rw-r--r--server/api/groups.js13
1 files changed, 12 insertions, 1 deletions
diff --git a/server/api/groups.js b/server/api/groups.js
index 325169d..6dbddc7 100644
--- a/server/api/groups.js
+++ b/server/api/groups.js
@@ -2,6 +2,7 @@
var path = require('path')
var db = require(path.join(__appdir, 'lib', 'sequelize'))
var groupUtil = require(path.join(__appdir, 'lib', 'grouputil'))
+const ip = require(path.join(__appdir, 'lib', 'ip'))
var express = require('express')
const { decorateApp } = require('@awaitjs/express')
var router = decorateApp(express.Router())
@@ -17,8 +18,13 @@ router.getAsync('', async (req, res) => {
router.getAsync('/:id', async (req, res) => {
const all = req.query.all !== undefined && req.query.all !== 'false'
if (req.params.id > 0) {
- const group = await db.group.findOne({ where: { id: req.params.id }, include: ['parents', 'ipranges', 'subgroups', 'clients'] })
+ let group = await db.group.findOne({ where: { id: req.params.id }, include: ['parents', 'ipranges', 'subgroups', 'clients'] })
if (group) {
+ // Convert ipranges in readable strings.
+ group.ipranges.forEach(iprange => {
+ iprange.startIp = ip.toString(iprange.startIp)
+ iprange.endIp = ip.toString(iprange.endIp)
+ })
if (all) res.status(200).send({ ...group.get({ plain: true }), ...await groupUtil.getAllChildren([group]) })
else res.status(200).send(group)
} else {
@@ -63,6 +69,11 @@ router.postAsync(['', '/:id'], async (req, res) => {
// Update existing ipranges and create the new ones
req.body.ipranges.forEach(iprange => {
if (!iprange.startIp || !iprange.endIp) return
+
+ // Convert valid ip addresses to integer values.
+ if (!ip.isIpv4(iprange.startIp) || !ip.isIpv4(iprange.endIp)) return
+ iprange.startIp = ip.toInt(iprange.startIp)
+ iprange.endIp = ip.toInt(iprange.endIp)
if (iprange.id) {
if (iprangeIdMap[iprange.id]) {
promises.push(iprangeIdMap[iprange.id].update(iprange))