add-domain-setup-validation #71
@ -5,7 +5,6 @@ import net.hostsharing.hsadminng.hs.hosting.asset.HsHostingAssetType;
|
|||||||
|
|
||||||
import java.util.regex.Pattern;
|
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.ArrayProperty.arrayOf;
|
||||||
import static net.hostsharing.hsadminng.hs.validation.BooleanProperty.booleanProperty;
|
import static net.hostsharing.hsadminng.hs.validation.BooleanProperty.booleanProperty;
|
||||||
import static net.hostsharing.hsadminng.hs.validation.IntegerProperty.integerProperty;
|
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 {
|
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_NAME = "([a-z0-9\\.-]+|@)\\s+";
|
||||||
static final String RR_REGEX_TTL = "(([1-9][0-9]*[mMhHdDwW]{0,1})+\\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_REGEX_IN = "IN\\s+"; // record class IN for Internet
|
||||||
static final String RR_RECORD_TYPE = "[A-Z]+\\s+";
|
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_COMMENT = "(;.*)*";
|
||||||
|
|
||||||
static final String RR_REGEX_TTL_IN =
|
static final String RR_REGEX_TTL_IN =
|
||||||
@ -36,12 +37,16 @@ class HsDomainDnsSetupHostingAssetValidator extends HsHostingAssetEntityValidato
|
|||||||
booleanProperty("auto-SOA-RR").withDefault(true),
|
booleanProperty("auto-SOA-RR").withDefault(true),
|
||||||
booleanProperty("auto-NS-RR").withDefault(true),
|
booleanProperty("auto-NS-RR").withDefault(true),
|
||||||
booleanProperty("auto-MX-RR").withDefault(true),
|
booleanProperty("auto-MX-RR").withDefault(true),
|
||||||
booleanProperty("auto-A+AAAA-RR").withDefault(true),
|
booleanProperty("auto-A-RR").withDefault(true),
|
||||||
booleanProperty("auto-MAILSERVICES-RR").withDefault(true), // TODO. specl: incl. AUTOCONFIG_RR, AUTODISCOVER_RR?
|
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-DKIM-RR").withDefault(true),
|
||||||
booleanProperty("auto-SPF-RR").withDefault(true),
|
booleanProperty("auto-SPF-RR").withDefault(true),
|
||||||
booleanProperty("auto-WILDCARD-MX-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-DKIM-RR").withDefault(true), // TODO.spec: @Peter
|
||||||
booleanProperty("auto-WILDCARD-SPF-RR").withDefault(true),
|
booleanProperty("auto-WILDCARD-SPF-RR").withDefault(true),
|
||||||
arrayOf(
|
arrayOf(
|
||||||
@ -70,5 +75,4 @@ class HsDomainDnsSetupHostingAssetValidator extends HsHostingAssetEntityValidato
|
|||||||
.replace("{ttl}", getPropertyValue(assetEntity, "TTL"))
|
.replace("{ttl}", getPropertyValue(assetEntity, "TTL"))
|
||||||
.replace("{userRRs}", getPropertyValues(assetEntity, "user-RR") );
|
.replace("{userRRs}", getPropertyValues(assetEntity, "user-RR") );
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -122,6 +122,7 @@ class HsDomainDnsSetupHostingAssetValidatorUnitTest {
|
|||||||
|
|
||||||
assertThat("example.com.").matches(RR_RECORD_DATA);
|
assertThat("example.com.").matches(RR_RECORD_DATA);
|
||||||
assertThat("123.123.123.123").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("\"some more complex argument; including a semicolon\"").matches(RR_RECORD_DATA);
|
||||||
|
|
||||||
assertThat("; whatever ; \" really anything").matches(RR_COMMENT);
|
assertThat("; whatever ; \" really anything").matches(RR_COMMENT);
|
||||||
|
Loading…
Reference in New Issue
Block a user