Improve domain name limitations checks
This commit is contained in:
parent
3506f744b8
commit
e505e002d0
|
@ -61,7 +61,7 @@
|
|||
value = "";
|
||||
}
|
||||
|
||||
export let dn: string;
|
||||
export let dn: string = "";
|
||||
export let origin: Domain | DomainInList;
|
||||
export let value: string = "";
|
||||
export let zone: Zone;
|
||||
|
@ -70,10 +70,7 @@
|
|||
$: newDomainState = value?validateNewSubdomain(value):undefined;
|
||||
|
||||
let endsWithOrigin = false;
|
||||
$: endsWithOrigin = value.length > origin.domain.length && (
|
||||
value.substring(value.length - origin.domain.length) === origin.domain ||
|
||||
value.substring(value.length - origin.domain.length + 1) === origin.domain.substring(0, origin.domain.length - 1)
|
||||
)
|
||||
$: endsWithOrigin = value.endsWith(origin.domain) || value.endsWith(origin.domain.substring(0, origin.domain.length - 1));
|
||||
|
||||
let newDomainAppend: string | null = null;
|
||||
$: {
|
||||
|
@ -90,7 +87,7 @@
|
|||
// Check domain is valid
|
||||
newDomainState = validateDomain(
|
||||
value,
|
||||
(value.length > origin.domain.length && value.substring(value.length - origin.domain.length) === origin.domain)?origin.domain:""
|
||||
origin.domain
|
||||
);
|
||||
|
||||
// Check domain doesn't already exists
|
||||
|
|
|
@ -45,9 +45,9 @@
|
|||
export let step: number;
|
||||
export let service: ServiceCombined | null = null;
|
||||
export let form = "addSvcForm";
|
||||
export let origin: Domain | DomainInList | undefined;
|
||||
export let origin: Domain | DomainInList | undefined = undefined;
|
||||
export let update = false;
|
||||
export let zoneId: number | undefined;
|
||||
export let zoneId: number | undefined = undefined;
|
||||
export let canDelete = false;
|
||||
export let canContinue = false;
|
||||
|
||||
|
|
|
@ -58,10 +58,7 @@
|
|||
$: newDomainState = value?validateNewSubdomain(value):undefined;
|
||||
|
||||
let endsWithOrigin = false;
|
||||
$: endsWithOrigin = value.length > origin.domain.length && (
|
||||
value.substring(value.length - origin.domain.length) === origin.domain ||
|
||||
value.substring(value.length - origin.domain.length + 1) === origin.domain.substring(0, origin.domain.length - 1)
|
||||
)
|
||||
$: endsWithOrigin = value.endsWith(origin.domain) || value.endsWith(origin.domain.substring(0, origin.domain.length - 1));
|
||||
|
||||
let newDomainAppend: string | null = null;
|
||||
$: {
|
||||
|
@ -77,7 +74,7 @@
|
|||
function validateNewSubdomain(value: string): boolean | undefined {
|
||||
newDomainState = validateDomain(
|
||||
value,
|
||||
(value.length > origin.domain.length && value.substring(value.length - origin.domain.length) === origin.domain)?origin.domain:""
|
||||
origin.domain
|
||||
);
|
||||
return newDomainState;
|
||||
}
|
||||
|
|
|
@ -213,24 +213,28 @@ export function nsrrtype(input: number | string): string {
|
|||
}
|
||||
}
|
||||
|
||||
export function validateDomain(dn: string, subdomain: string = ""): boolean | undefined {
|
||||
export function validateDomain(dn: string, origin: string = "", hostname: boolean = false): boolean | undefined {
|
||||
let ret: boolean | undefined = undefined;
|
||||
if (dn.length !== 0) {
|
||||
dn = fqdn(dn, origin);
|
||||
if (!dn.endsWith(origin)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
ret = dn.length >= 1 && dn.length <= 254;
|
||||
|
||||
if (ret) {
|
||||
const domains = dn.split('.');
|
||||
|
||||
// Remove the last . if any, it's ok
|
||||
if (!subdomain && domains[domains.length - 1] === '') {
|
||||
if (domains[domains.length - 1] === '') {
|
||||
domains.pop();
|
||||
}
|
||||
|
||||
let newDomainState: boolean = ret
|
||||
domains.forEach(function (domain) {
|
||||
newDomainState = newDomainState && domain.length >= 1 && domain.length <= 63;
|
||||
newDomainState = newDomainState && domain[0] !== '-' && domain[domain.length - 1] !== '-';
|
||||
newDomainState = newDomainState && /^(\*|_?[a-zA-Z0-9]([a-zA-Z0-9-]?[a-zA-Z0-9])*)$/.test(domain);
|
||||
newDomainState = newDomainState && (!hostname || /^(\*|_?[a-zA-Z0-9]([a-zA-Z0-9-]?[a-zA-Z0-9])*)$/.test(domain));
|
||||
})
|
||||
ret = newDomainState;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue