summaryrefslogtreecommitdiffstats
path: root/server/api/groups.js
diff options
context:
space:
mode:
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))