This commit is contained in:
ryan
2026-07-13 15:08:40 +08:00
parent 08e8eea932
commit 1eff7878a1
441 changed files with 26491 additions and 18405 deletions
@@ -8,45 +8,53 @@
export function resolveZoneDomainInput(
rawInput: string,
zoneRoot: string,
): {domain: string; error?: string} {
): { domain: string; error?: string } {
const input = rawInput.trim().toLowerCase();
const root = zoneRoot.trim().toLowerCase();
if (!root) {
return {domain: '', error: '请先选择 Zone'};
return { domain: '', error: '请先选择 Zone' };
}
if (!input) {
return {domain: '', error: '请输入域名'};
return { domain: '', error: '请输入域名' };
}
if (input.includes('*')) {
return {domain: '', error: 'Zone 域名不支持通配符'};
return { domain: '', error: 'Zone 域名不支持通配符' };
}
if (input.includes('://') || input.includes('/') || input.includes('?') || input.includes('#')) {
return {domain: '', error: '域名格式不合法'};
if (
input.includes('://') ||
input.includes('/') ||
input.includes('?') ||
input.includes('#')
) {
return { domain: '', error: '域名格式不合法' };
}
if (input === '@') {
return {domain: root};
return { domain: root };
}
// Short label: no dots → prefix under zone root
if (!input.includes('.')) {
if (!/^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/i.test(input)) {
return {domain: '', error: '子域名称格式不合法'};
return { domain: '', error: '子域名称格式不合法' };
}
return {domain: `${input}.${root}`};
return { domain: `${input}.${root}` };
}
// Full FQDN
if (input === root || input.endsWith(`.${root}`)) {
return {domain: input};
return { domain: input };
}
return {domain: '', error: `域名必须属于 Zone ${root}`};
return { domain: '', error: `域名必须属于 Zone ${root}` };
}
/** Live preview string for the input helper text. */
export function previewZoneDomainInput(rawInput: string, zoneRoot: string): string {
export function previewZoneDomainInput(
rawInput: string,
zoneRoot: string,
): string {
const resolved = resolveZoneDomainInput(rawInput, zoneRoot);
if (resolved.error || !resolved.domain) {
return '';