From 105bd2313cd5413df047aab7aa734e964664d98e Mon Sep 17 00:00:00 2001 From: Michael Hoennig Date: Thu, 4 Jul 2024 13:01:22 +0200 Subject: [PATCH] split A+AAAA RRs and add parenthesis-variant in record-data --- .../HsDomainDnsSetupHostingAssetValidator.java | 16 ++++++++++------ ...ainDnsSetupHostingAssetValidatorUnitTest.java | 1 + 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/validators/HsDomainDnsSetupHostingAssetValidator.java b/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/validators/HsDomainDnsSetupHostingAssetValidator.java index d0dbf8ca..f15404e5 100644 --- a/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/validators/HsDomainDnsSetupHostingAssetValidator.java +++ b/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/validators/HsDomainDnsSetupHostingAssetValidator.java @@ -5,7 +5,6 @@ import net.hostsharing.hsadminng.hs.hosting.asset.HsHostingAssetType; import java.util.regex.Pattern; -import static java.util.Arrays.stream; import static net.hostsharing.hsadminng.hs.validation.ArrayProperty.arrayOf; import static net.hostsharing.hsadminng.hs.validation.BooleanProperty.booleanProperty; import static net.hostsharing.hsadminng.hs.validation.IntegerProperty.integerProperty; @@ -13,11 +12,13 @@ import static net.hostsharing.hsadminng.hs.validation.StringProperty.stringPrope class HsDomainDnsSetupHostingAssetValidator extends HsHostingAssetEntityValidator { + // according to RFC 1035 (section 5) and RFC 1034 static final String RR_REGEX_NAME = "([a-z0-9\\.-]+|@)\\s+"; static final String RR_REGEX_TTL = "(([1-9][0-9]*[mMhHdDwW]{0,1})+\\s+)*"; static final String RR_REGEX_IN = "IN\\s+"; // record class IN for Internet static final String RR_RECORD_TYPE = "[A-Z]+\\s+"; - static final String RR_RECORD_DATA = "([a-z0-9\\.-]+|\"[^\"]*\")\\s*"; + static final String RR_RECORD_DATA_X = "([a-z0-9\\.-]+|\"[^\"]*\")\\s*"; // FIXME: (...) and multiline? + static final String RR_RECORD_DATA = "([a-z0-9\\.-]+|\\([^\\)]*\\)|\"[^\"]*\")\\s*"; static final String RR_COMMENT = "(;.*)*"; static final String RR_REGEX_TTL_IN = @@ -36,12 +37,16 @@ class HsDomainDnsSetupHostingAssetValidator extends HsHostingAssetEntityValidato booleanProperty("auto-SOA-RR").withDefault(true), booleanProperty("auto-NS-RR").withDefault(true), booleanProperty("auto-MX-RR").withDefault(true), - booleanProperty("auto-A+AAAA-RR").withDefault(true), - booleanProperty("auto-MAILSERVICES-RR").withDefault(true), // TODO. specl: incl. AUTOCONFIG_RR, AUTODISCOVER_RR? + booleanProperty("auto-A-RR").withDefault(true), + booleanProperty("auto-AAAA-RR").withDefault(true), + booleanProperty("auto-MAILSERVICES-RR").withDefault(true), + booleanProperty("auto-AUTOCONFIG-RR").withDefault(true), // TODO.spec: does that already exist? + booleanProperty("auto-AUTODISCOVER-RR").withDefault(true), booleanProperty("auto-DKIM-RR").withDefault(true), booleanProperty("auto-SPF-RR").withDefault(true), booleanProperty("auto-WILDCARD-MX-RR").withDefault(true), - booleanProperty("auto-WILDCARD-A+AAAA-RR").withDefault(true), + booleanProperty("auto-WILDCARD-A-RR").withDefault(true), + booleanProperty("auto-WILDCARD-AAAA-RR").withDefault(true), booleanProperty("auto-WILDCARD-DKIM-RR").withDefault(true), // TODO.spec: @Peter booleanProperty("auto-WILDCARD-SPF-RR").withDefault(true), arrayOf( @@ -70,5 +75,4 @@ class HsDomainDnsSetupHostingAssetValidator extends HsHostingAssetEntityValidato .replace("{ttl}", getPropertyValue(assetEntity, "TTL")) .replace("{userRRs}", getPropertyValues(assetEntity, "user-RR") ); } - } diff --git a/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/validators/HsDomainDnsSetupHostingAssetValidatorUnitTest.java b/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/validators/HsDomainDnsSetupHostingAssetValidatorUnitTest.java index abe5fff9..bea9bc8f 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/validators/HsDomainDnsSetupHostingAssetValidatorUnitTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/validators/HsDomainDnsSetupHostingAssetValidatorUnitTest.java @@ -122,6 +122,7 @@ class HsDomainDnsSetupHostingAssetValidatorUnitTest { assertThat("example.com.").matches(RR_RECORD_DATA); assertThat("123.123.123.123").matches(RR_RECORD_DATA); + assertThat("(some more complex argument in parenthesis)").matches(RR_RECORD_DATA); assertThat("\"some more complex argument; including a semicolon\"").matches(RR_RECORD_DATA); assertThat("; whatever ; \" really anything").matches(RR_COMMENT);