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.failed')" value="Failed" />
</el-select>
<TableRefresh @search="search(false)" />
</template>
<template #main>
<div class="mainClass">

View file

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