From f18a37ad47fc13c791bab676fa713b70f7341e4b Mon Sep 17 00:00:00 2001 From: zhengkunwang <31820853+zhengkunwang223@users.noreply.github.com> Date: Tue, 25 Feb 2025 14:34:29 +0800 Subject: [PATCH] feat: Resolve issue with bulk domain generation failure (#7992) --- frontend/src/views/website/ssl/index.vue | 1 + .../views/website/website/domain-create/index.vue | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/frontend/src/views/website/ssl/index.vue b/frontend/src/views/website/ssl/index.vue index e2a88154b..0e7c44a80 100644 --- a/frontend/src/views/website/ssl/index.vue +++ b/frontend/src/views/website/ssl/index.vue @@ -36,6 +36,7 @@ fix show-overflow-tooltip prop="primaryDomain" + min-width="150px" > import { Rules, checkNumberRange } from '@/global/form-rules'; +import i18n from '@/lang'; +import { MsgError } from '@/utils/message'; import { ref } from 'vue'; const props = defineProps({ @@ -105,10 +107,20 @@ const removeDomain = (index: number) => { create.value.domains.splice(index, 1); }; +const checkDomain = (domain: string) => { + const reg = + /^([\w\u4e00-\u9fa5\-\*]{1,100}\.){1,10}([\w\u4e00-\u9fa5\-]{1,24}|[\w\u4e00-\u9fa5\-]{1,24}\.[\w\u4e00-\u9fa5\-]{1,24})(:\d{1,5})?$/; + return reg.test(domain); +}; + const gengerateDomains = () => { const lines = create.value.domainStr.split(/\r?\n/); lines.forEach((line) => { const [domain, port] = line.split(':'); + if (!checkDomain(domain)) { + MsgError(line + i18n.global.t('commons.rule.domain')); + return; + } const exists = (domain: string, port: number): boolean => { return create.value.domains.some((info) => info.domain === domain && info.port === port); };