From 80e8668d5a96db38563c1b37e2ec157ddbf55c7b Mon Sep 17 00:00:00 2001 From: Jonathan Cobb Date: Mon, 7 Dec 2020 16:17:09 -0500 Subject: [PATCH] handle empty forkHost name --- .../resources/bill/AccountPlansResource.java | 36 +++++++++++-------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/bubble-server/src/main/java/bubble/resources/bill/AccountPlansResource.java b/bubble-server/src/main/java/bubble/resources/bill/AccountPlansResource.java index 7cd3787d..2fe1a8f2 100644 --- a/bubble-server/src/main/java/bubble/resources/bill/AccountPlansResource.java +++ b/bubble-server/src/main/java/bubble/resources/bill/AccountPlansResource.java @@ -162,26 +162,32 @@ public class AccountPlansResource extends AccountOwnedResource forkHost.equals("." + d.getName())) - .findFirst().orElse(null); - if (foundDomain == null) { - errors.addViolation("err.forkHost.domainNotFound"); - } else { - request.setDomain(foundDomain.getUuid()); - } + if (empty(forkHost)) { + request.setName(newNodeHostname()+"."+newNetworkName()+"."+domain.getName()); + request.setDomain(domain.getUuid()); - } else if (domain != null) { - request.setName(domain.networkFromFqdn(forkHost, errors)); - validateName(request, errors); + } else { + if (!validateRegexMatches(HOST_PATTERN, forkHost)) { + errors.addViolation("err.forkHost.invalid"); + } else if (domain != null && !forkHost.endsWith("." + domain.getName())) { + final BubbleDomain foundDomain = domainDAO.findByAccount(caller.getUuid()).stream() + .filter(d -> forkHost.equals("." + d.getName())) + .findFirst().orElse(null); + if (foundDomain == null) { + errors.addViolation("err.forkHost.domainNotFound"); + } else { + request.setDomain(foundDomain.getUuid()); + } + + } else if (domain != null) { + request.setName(domain.networkFromFqdn(forkHost, errors)); + validateName(request, errors); + } } } final String adminEmail = request.getAdminEmail();