From 82cb1095dc69198cef6839ad2cc7934886ae0dec Mon Sep 17 00:00:00 2001 From: Sheng Yang Date: Mon, 27 Aug 2012 14:32:41 -0700 Subject: [PATCH] CS-16188: S2S VPN: Limit VPN customer gateway name duplicate checking within account Reviewed-by: Anthony Xu Conflicts: server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java --- .../dao/Site2SiteCustomerGatewayDao.java | 2 +- .../dao/Site2SiteCustomerGatewayDaoImpl.java | 3 ++- .../network/vpn/Site2SiteVpnManagerImpl.java | 19 ++++++++++++++----- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/server/src/com/cloud/network/dao/Site2SiteCustomerGatewayDao.java b/server/src/com/cloud/network/dao/Site2SiteCustomerGatewayDao.java index c716961fc39..997322b6846 100644 --- a/server/src/com/cloud/network/dao/Site2SiteCustomerGatewayDao.java +++ b/server/src/com/cloud/network/dao/Site2SiteCustomerGatewayDao.java @@ -23,6 +23,6 @@ import com.cloud.utils.db.GenericDao; public interface Site2SiteCustomerGatewayDao extends GenericDao { Site2SiteCustomerGatewayVO findByGatewayIp(String ip); - Site2SiteCustomerGatewayVO findByName(String name); + Site2SiteCustomerGatewayVO findByNameAndAccountId(String name, long accountId); List listByAccountId(long accountId); } diff --git a/server/src/com/cloud/network/dao/Site2SiteCustomerGatewayDaoImpl.java b/server/src/com/cloud/network/dao/Site2SiteCustomerGatewayDaoImpl.java index 971c7075680..bf6900d87ee 100644 --- a/server/src/com/cloud/network/dao/Site2SiteCustomerGatewayDaoImpl.java +++ b/server/src/com/cloud/network/dao/Site2SiteCustomerGatewayDaoImpl.java @@ -49,9 +49,10 @@ public class Site2SiteCustomerGatewayDaoImpl extends GenericDaoBase sc = AllFieldsSearch.create(); sc.setParameters("name", name); + sc.setParameters("accountId", accountId); return findOneBy(sc); } diff --git a/server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java b/server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java index ba4d974bcba..db678ae694c 100644 --- a/server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java +++ b/server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java @@ -210,7 +210,7 @@ public class Site2SiteVpnManagerImpl implements Site2SiteVpnManager, Manager { } Long espLifetime = cmd.getEspLifetime(); if (espLifetime == null) { - // Default value of lifetime is 1 day + // Default value of lifetime is 1 hour espLifetime = (long) 3600; } if (espLifetime > 86400) { @@ -222,16 +222,17 @@ public class Site2SiteVpnManagerImpl implements Site2SiteVpnManager, Manager { dpd = false; } + long accountId = owner.getAccountId(); if (_customerGatewayDao.findByGatewayIp(gatewayIp) != null) { - throw new InvalidParameterValueException("The customer gateway with ip " + gatewayIp + " already existed!"); + throw new InvalidParameterValueException("The customer gateway with ip " + gatewayIp + " already existed in the system!"); } - if (_customerGatewayDao.findByName(name) != null) { + if (_customerGatewayDao.findByNameAndAccountId(name, accountId) != null) { throw new InvalidParameterValueException("The customer gateway with name " + name + " already existed!"); } checkCustomerGatewayCidrList(guestCidrList); - Site2SiteCustomerGatewayVO gw = new Site2SiteCustomerGatewayVO(name, owner.getAccountId(), owner.getDomainId(), gatewayIp, guestCidrList, ipsecPsk, + Site2SiteCustomerGatewayVO gw = new Site2SiteCustomerGatewayVO(name, accountId, owner.getDomainId(), gatewayIp, guestCidrList, ipsecPsk, ikePolicy, espPolicy, ikeLifetime, espLifetime, dpd); _customerGatewayDao.persist(gw); return gw; @@ -454,7 +455,7 @@ public class Site2SiteVpnManagerImpl implements Site2SiteVpnManager, Manager { } Long espLifetime = cmd.getEspLifetime(); if (espLifetime == null) { - // Default value of lifetime is 1 day + // Default value of lifetime is 1 hour espLifetime = (long) 3600; } if (espLifetime > 86400) { @@ -467,6 +468,14 @@ public class Site2SiteVpnManagerImpl implements Site2SiteVpnManager, Manager { } checkCustomerGatewayCidrList(guestCidrList); + + long accountId = gw.getAccountId(); + if (_customerGatewayDao.findByGatewayIp(gatewayIp) != null) { + throw new InvalidParameterValueException("The customer gateway with ip " + gatewayIp + " already existed in the system!"); + } + if (_customerGatewayDao.findByNameAndAccountId(name, accountId) != null) { + throw new InvalidParameterValueException("The customer gateway with name " + name + " already existed!"); + } gw.setName(name); gw.setGatewayIp(gatewayIp);