fix: Update authorization IP regular expression (#10179)

Refs #10173
This commit is contained in:
ssongliu 2025-08-28 18:52:10 +08:00 committed by GitHub
parent a1311a2a0d
commit acbb151b15
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 15 additions and 12 deletions

View file

@ -83,6 +83,7 @@
<el-option :label="$t('commons.status.waiting')" value="Waiting" /> <el-option :label="$t('commons.status.waiting')" value="Waiting" />
<el-option :label="$t('commons.status.failed')" value="Failed" /> <el-option :label="$t('commons.status.failed')" value="Failed" />
</el-select> </el-select>
<TableRefresh @search="search(false)" />
</template> </template>
<template #main> <template #main>
<div class="mainClass"> <div class="mainClass">

View file

@ -20,7 +20,7 @@ import i18n from '@/lang';
import { MsgSuccess } from '@/utils/message'; import { MsgSuccess } from '@/utils/message';
import { updateSetting } from '@/api/modules/setting'; import { updateSetting } from '@/api/modules/setting';
import { ElMessageBox, FormInstance } from 'element-plus'; import { ElMessageBox, FormInstance } from 'element-plus';
import { checkCidr, checkIpV4V6 } from '@/utils/util'; import { checkCidr, checkCidrV6, checkIpV4V6 } from '@/utils/util';
const emit = defineEmits<{ (e: 'search'): void }>(); const emit = defineEmits<{ (e: 'search'): void }>();
@ -28,26 +28,28 @@ const form = reactive({
allowIPs: '', allowIPs: '',
}); });
const rules = reactive({ const rules = reactive({
allowIPs: [{ validator: checkAddress, trigger: 'blur' }], allowIPs: [{ validator: checkIPs, trigger: 'blur' }],
}); });
function checkAddress(rule: any, value: any, callback: any) { function checkIPs(rule: any, value: any, callback: any) {
if (form.allowIPs !== '') { if (typeof value === 'string' && value.trim() !== '') {
let addrs = form.allowIPs.split('\n'); let addr = value.split('\n');
for (const item of addrs) { for (const item of addr) {
if (item === '') { if (item === '') {
continue; continue;
} }
if (item === '0.0.0.0') { if (item === '0.0.0.0' || item === '::') {
return callback(new Error(i18n.global.t('firewall.addressFormatError'))); return callback(new Error(i18n.global.t('firewall.addressFormatError')));
} }
if (item.indexOf('/') !== -1) { if (item.indexOf('/') !== -1) {
if (checkCidr(item)) { if (item.indexOf(':') !== -1) {
return callback(new Error(i18n.global.t('firewall.addressFormatError'))); if (checkCidrV6(item)) {
} return callback(new Error(i18n.global.t('firewall.addressFormatError')));
} else { }
if (checkIpV4V6(item)) { } else if (checkCidr(item)) {
return callback(new Error(i18n.global.t('firewall.addressFormatError'))); return callback(new Error(i18n.global.t('firewall.addressFormatError')));
} }
} else if (checkIpV4V6(item)) {
return callback(new Error(i18n.global.t('firewall.addressFormatError')));
} }
} }
} }