diff --git a/lib/routes/api/sip-gateways.js b/lib/routes/api/sip-gateways.js index 3c92a09..16162f3 100644 --- a/lib/routes/api/sip-gateways.js +++ b/lib/routes/api/sip-gateways.js @@ -4,6 +4,7 @@ const {DbErrorBadRequest, DbErrorForbidden} = require('../../utils/errors'); //const {parseSipGatewaySid} = require('./utils'); const decorate = require('./decorate'); const sysError = require('../error'); +const net = require('net'); const checkUserScope = async(req, voip_carrier_sid) => { const {lookupCarrierBySid} = req.app.locals; @@ -41,7 +42,7 @@ const checkUserScope = async(req, voip_carrier_sid) => { const validate = async(req, sid) => { const {lookupSipGatewayBySid} = req.app.locals; - const {netmask} = req.body; + const {netmask, ipv4, inbound, outbound} = req.body; let voip_carrier_sid; if (sid) { @@ -59,6 +60,12 @@ const validate = async(req, sid) => { throw new DbErrorBadRequest( `netmask required to have value equal or greater than ${process.env.JAMBONZ_MIN_GATEWAY_NETMASK}`); } + if (inbound && !net.isIPv4(ipv4)) { + throw new DbErrorBadRequest('Inbound gateway must be IPv4 address'); + } + if (!inbound && outbound && (netmask && netmask != 32)) { + throw new DbErrorBadRequest('For outbound only gateway netmask can only be 32'); + } await checkUserScope(req, voip_carrier_sid); };