summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--server/api/groups.js13
-rw-r--r--server/migrations/20190223034423-create-iprange.js4
-rw-r--r--server/models/iprange.js4
3 files changed, 16 insertions, 5 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))
diff --git a/server/migrations/20190223034423-create-iprange.js b/server/migrations/20190223034423-create-iprange.js
index 75d6d6f..d38a4ac 100644
--- a/server/migrations/20190223034423-create-iprange.js
+++ b/server/migrations/20190223034423-create-iprange.js
@@ -9,10 +9,10 @@ module.exports = {
type: Sequelize.INTEGER
},
startIp: {
- type: Sequelize.STRING
+ type: Sequelize.BIGINT
},
endIp: {
- type: Sequelize.STRING(2048)
+ type: Sequelize.BIGINT
},
groupId: {
allowNull: false,
diff --git a/server/models/iprange.js b/server/models/iprange.js
index 0792a15..decb63a 100644
--- a/server/models/iprange.js
+++ b/server/models/iprange.js
@@ -7,8 +7,8 @@ module.exports = (sequelize, DataTypes) => {
primaryKey: true,
type: DataTypes.INTEGER
},
- startIp: DataTypes.STRING,
- endIp: DataTypes.STRING
+ startIp: DataTypes.BIGINT,
+ endIp: DataTypes.BIGINT
}, {
timestamps: false
})