2022-08-16 23:30:23 +08:00
|
|
|
import i18n from '@/lang';
|
|
|
|
import { FormItemRule } from 'element-plus';
|
|
|
|
|
2022-08-18 18:51:27 +08:00
|
|
|
const checkIp = (rule: any, value: any, callback: any) => {
|
|
|
|
if (value === '' || typeof value === 'undefined' || value == null) {
|
|
|
|
callback(new Error(i18n.global.t('commons.rule.requiredInput')));
|
|
|
|
} else {
|
|
|
|
const reg =
|
|
|
|
/^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/;
|
|
|
|
if (!reg.test(value) && value !== '') {
|
|
|
|
callback(new Error(i18n.global.t('commons.rule.ip')));
|
|
|
|
} else {
|
|
|
|
callback();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2023-07-07 17:41:13 +08:00
|
|
|
const checkIpV4V6 = (rule: any, value: any, callback: any) => {
|
|
|
|
if (value === '' || typeof value === 'undefined' || value == null) {
|
|
|
|
callback(new Error(i18n.global.t('commons.rule.requiredInput')));
|
|
|
|
} else {
|
|
|
|
const IPv4SegmentFormat = '(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])';
|
|
|
|
const IPv4AddressFormat = `(${IPv4SegmentFormat}[.]){3}${IPv4SegmentFormat}`;
|
|
|
|
const IPv4AddressRegExp = new RegExp(`^${IPv4AddressFormat}$`);
|
|
|
|
const IPv6SegmentFormat = '(?:[0-9a-fA-F]{1,4})';
|
|
|
|
const IPv6AddressRegExp = new RegExp(
|
|
|
|
'^(' +
|
|
|
|
`(?:${IPv6SegmentFormat}:){7}(?:${IPv6SegmentFormat}|:)|` +
|
|
|
|
`(?:${IPv6SegmentFormat}:){6}(?:${IPv4AddressFormat}|:${IPv6SegmentFormat}|:)|` +
|
|
|
|
`(?:${IPv6SegmentFormat}:){5}(?::${IPv4AddressFormat}|(:${IPv6SegmentFormat}){1,2}|:)|` +
|
|
|
|
`(?:${IPv6SegmentFormat}:){4}(?:(:${IPv6SegmentFormat}){0,1}:${IPv4AddressFormat}|(:${IPv6SegmentFormat}){1,3}|:)|` +
|
|
|
|
`(?:${IPv6SegmentFormat}:){3}(?:(:${IPv6SegmentFormat}){0,2}:${IPv4AddressFormat}|(:${IPv6SegmentFormat}){1,4}|:)|` +
|
|
|
|
`(?:${IPv6SegmentFormat}:){2}(?:(:${IPv6SegmentFormat}){0,3}:${IPv4AddressFormat}|(:${IPv6SegmentFormat}){1,5}|:)|` +
|
|
|
|
`(?:${IPv6SegmentFormat}:){1}(?:(:${IPv6SegmentFormat}){0,4}:${IPv4AddressFormat}|(:${IPv6SegmentFormat}){1,6}|:)|` +
|
|
|
|
`(?::((?::${IPv6SegmentFormat}){0,5}:${IPv4AddressFormat}|(?::${IPv6SegmentFormat}){1,7}|:))` +
|
|
|
|
')(%[0-9a-zA-Z-.:]{1,})?$',
|
|
|
|
);
|
|
|
|
if (!IPv4AddressRegExp.test(value) && !IPv6AddressRegExp.test(value) && value !== '') {
|
|
|
|
callback(new Error(i18n.global.t('commons.rule.ip')));
|
|
|
|
} else {
|
|
|
|
callback();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2023-03-17 10:54:16 +08:00
|
|
|
const checkHost = (rule: any, value: any, callback: any) => {
|
|
|
|
if (value === '' || typeof value === 'undefined' || value == null) {
|
|
|
|
callback(new Error(i18n.global.t('commons.rule.requiredInput')));
|
|
|
|
} else {
|
|
|
|
const regIP =
|
|
|
|
/^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/;
|
|
|
|
const regHost = /^(?=^.{3,255}$)[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+$/;
|
|
|
|
if (!regIP.test(value) && !regHost.test(value)) {
|
|
|
|
callback(new Error(i18n.global.t('commons.rule.host')));
|
|
|
|
} else {
|
|
|
|
callback();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2023-06-26 17:24:06 +08:00
|
|
|
const checkIllegal = (rule: any, value: any, callback: any) => {
|
|
|
|
if (value === '' || typeof value === 'undefined' || value == null) {
|
|
|
|
callback(new Error(i18n.global.t('commons.rule.requiredInput')));
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (
|
|
|
|
value.indexOf('&') !== -1 ||
|
|
|
|
value.indexOf('|') !== -1 ||
|
|
|
|
value.indexOf(';') !== -1 ||
|
|
|
|
value.indexOf('$') !== -1 ||
|
|
|
|
value.indexOf("'") !== -1 ||
|
|
|
|
value.indexOf('`') !== -1 ||
|
|
|
|
value.indexOf('(') !== -1 ||
|
|
|
|
value.indexOf(')') !== -1
|
|
|
|
) {
|
|
|
|
callback(new Error(i18n.global.t('commons.rule.illegalInput')));
|
|
|
|
} else {
|
|
|
|
callback();
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2022-09-16 16:00:49 +08:00
|
|
|
const complexityPassword = (rule: any, value: any, callback: any) => {
|
|
|
|
if (value === '' || typeof value === 'undefined' || value == null) {
|
|
|
|
callback(new Error(i18n.global.t('commons.rule.complexityPassword')));
|
|
|
|
} else {
|
2023-03-01 19:11:51 +08:00
|
|
|
const reg = /^(?![\d]+$)(?![a-zA-Z]+$)(?![^\da-zA-Z]+$).{8,30}$/;
|
2022-09-16 16:00:49 +08:00
|
|
|
if (!reg.test(value) && value !== '') {
|
|
|
|
callback(new Error(i18n.global.t('commons.rule.complexityPassword')));
|
|
|
|
} else {
|
|
|
|
callback();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
const checkName = (rule: any, value: any, callback: any) => {
|
|
|
|
if (value === '' || typeof value === 'undefined' || value == null) {
|
|
|
|
callback(new Error(i18n.global.t('commons.rule.commonName')));
|
|
|
|
} else {
|
2023-07-11 18:21:10 +08:00
|
|
|
const reg = /^[a-zA-Z0-9\u4e00-\u9fa5]{1}[a-zA-Z0-9_.\u4e00-\u9fa5-]{0,29}$/;
|
2022-09-16 16:00:49 +08:00
|
|
|
if (!reg.test(value) && value !== '') {
|
|
|
|
callback(new Error(i18n.global.t('commons.rule.commonName')));
|
|
|
|
} else {
|
|
|
|
callback();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2023-03-01 14:05:55 +08:00
|
|
|
const checkUserName = (rule: any, value: any, callback: any) => {
|
|
|
|
if (value === '' || typeof value === 'undefined' || value == null) {
|
|
|
|
callback(new Error(i18n.global.t('commons.rule.userName')));
|
|
|
|
} else {
|
2023-03-11 17:50:26 +08:00
|
|
|
const reg = /[a-zA-Z0-9_\u4e00-\u9fa5]{3,30}$/;
|
2023-03-01 14:05:55 +08:00
|
|
|
if (!reg.test(value) && value !== '') {
|
|
|
|
callback(new Error(i18n.global.t('commons.rule.userName')));
|
|
|
|
} else {
|
|
|
|
callback();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2022-12-21 13:03:49 +08:00
|
|
|
const checkSimpleName = (rule: any, value: any, callback: any) => {
|
|
|
|
if (value === '' || typeof value === 'undefined' || value == null) {
|
|
|
|
callback(new Error(i18n.global.t('commons.rule.simpleName')));
|
|
|
|
} else {
|
|
|
|
const reg = /^[a-zA-Z0-9]{1}[a-zA-Z0-9_]{0,30}$/;
|
|
|
|
if (!reg.test(value) && value !== '') {
|
|
|
|
callback(new Error(i18n.global.t('commons.rule.simpleName')));
|
|
|
|
} else {
|
|
|
|
callback();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
const checkDBName = (rule: any, value: any, callback: any) => {
|
|
|
|
if (value === '' || typeof value === 'undefined' || value == null) {
|
|
|
|
callback(new Error(i18n.global.t('commons.rule.dbName')));
|
|
|
|
} else {
|
2023-07-05 14:12:12 +08:00
|
|
|
const reg = /^[a-zA-Z0-9\u4e00-\u9fa5]{1}[a-zA-Z0-9_.\u4e00-\u9fa5-]{0,64}$/;
|
2022-12-21 13:03:49 +08:00
|
|
|
if (!reg.test(value) && value !== '') {
|
|
|
|
callback(new Error(i18n.global.t('commons.rule.dbName')));
|
|
|
|
} else {
|
|
|
|
callback();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2022-12-02 16:38:36 +08:00
|
|
|
const checkImageName = (rule: any, value: any, callback: any) => {
|
|
|
|
if (value === '' || typeof value === 'undefined' || value == null) {
|
2022-12-21 13:03:49 +08:00
|
|
|
callback(new Error(i18n.global.t('commons.rule.imageName')));
|
2022-12-02 16:38:36 +08:00
|
|
|
} else {
|
2023-03-10 00:27:41 +08:00
|
|
|
const reg = /^[a-zA-Z0-9]{1}[a-z:A-Z0-9_/.-]{0,150}$/;
|
2022-12-02 16:38:36 +08:00
|
|
|
if (!reg.test(value) && value !== '') {
|
|
|
|
callback(new Error(i18n.global.t('commons.rule.imageName')));
|
|
|
|
} else {
|
|
|
|
callback();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2023-02-24 12:26:23 +08:00
|
|
|
const checkVolumeName = (rule: any, value: any, callback: any) => {
|
|
|
|
if (value === '' || typeof value === 'undefined' || value == null) {
|
|
|
|
callback(new Error(i18n.global.t('commons.rule.volumeName')));
|
|
|
|
} else {
|
2023-07-10 14:45:08 +08:00
|
|
|
const reg = /^[a-zA-Z0-9]{1}[a-zA-Z0-9_.-]{1,30}$/;
|
2023-02-24 12:26:23 +08:00
|
|
|
if (!reg.test(value) && value !== '') {
|
|
|
|
callback(new Error(i18n.global.t('commons.rule.volumeName')));
|
|
|
|
} else {
|
|
|
|
callback();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2022-11-25 15:55:31 +08:00
|
|
|
const checkLinuxName = (rule: any, value: any, callback: any) => {
|
|
|
|
if (value === '' || typeof value === 'undefined' || value == null) {
|
2023-03-08 22:28:21 +08:00
|
|
|
callback(new Error(i18n.global.t('commons.rule.linuxName', ['/\\:*?\'"<>|'])));
|
2022-11-25 15:55:31 +08:00
|
|
|
} else {
|
2023-07-14 11:48:11 +08:00
|
|
|
const reg = /^[^/\\\"'|<>?*]{1,128}$/;
|
2022-11-25 15:55:31 +08:00
|
|
|
if (!reg.test(value) && value !== '') {
|
2023-03-08 22:28:21 +08:00
|
|
|
callback(new Error(i18n.global.t('commons.rule.linuxName', ['/\\:*?\'"<>|'])));
|
2022-11-25 15:55:31 +08:00
|
|
|
} else {
|
|
|
|
callback();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2022-12-23 14:50:28 +08:00
|
|
|
const checkDatabaseName = (rule: any, value: any, callback: any) => {
|
2022-12-12 15:51:55 +08:00
|
|
|
if (value === '' || typeof value === 'undefined' || value == null) {
|
2022-12-23 14:50:28 +08:00
|
|
|
callback(new Error(i18n.global.t('commons.rule.databaseName')));
|
2022-12-12 15:51:55 +08:00
|
|
|
} else {
|
2022-12-23 14:50:28 +08:00
|
|
|
const reg = /^[a-zA-Z0-9]{1}[a-zA-Z0-9_]{0,30}$/;
|
2022-12-12 15:51:55 +08:00
|
|
|
if (!reg.test(value) && value !== '') {
|
2022-12-23 14:50:28 +08:00
|
|
|
callback(new Error(i18n.global.t('commons.rule.databaseName')));
|
2022-12-12 15:51:55 +08:00
|
|
|
} else {
|
|
|
|
callback();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2023-03-08 22:41:45 +08:00
|
|
|
const checkAppName = (rule: any, value: any, callback: any) => {
|
|
|
|
if (value === '' || typeof value === 'undefined' || value == null) {
|
|
|
|
callback(new Error(i18n.global.t('commons.rule.appName')));
|
|
|
|
} else {
|
|
|
|
const reg = /^(?![_-])[a-zA-Z0-9_-]{1,29}[a-zA-Z0-9]$/;
|
|
|
|
if (!reg.test(value) && value !== '') {
|
|
|
|
callback(new Error(i18n.global.t('commons.rule.appName')));
|
|
|
|
} else {
|
|
|
|
callback();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2022-12-23 14:50:28 +08:00
|
|
|
const checkDomain = (rule: any, value: any, callback: any) => {
|
2022-12-20 23:18:33 +08:00
|
|
|
if (value === '' || typeof value === 'undefined' || value == null) {
|
2022-12-23 14:50:28 +08:00
|
|
|
callback(new Error(i18n.global.t('commons.rule.domain')));
|
2022-12-20 23:18:33 +08:00
|
|
|
} else {
|
2022-12-23 14:50:28 +08:00
|
|
|
const reg =
|
|
|
|
/^([\w\u4e00-\u9fa5\-\*]{1,100}\.){1,10}([\w\u4e00-\u9fa5\-]{1,24}|[\w\u4e00-\u9fa5\-]{1,24}\.[\w\u4e00-\u9fa5\-]{1,24})$/;
|
2022-12-20 23:18:33 +08:00
|
|
|
if (!reg.test(value) && value !== '') {
|
2022-12-23 14:50:28 +08:00
|
|
|
callback(new Error(i18n.global.t('commons.rule.domain')));
|
2022-12-20 23:18:33 +08:00
|
|
|
} else {
|
|
|
|
callback();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2023-03-11 17:50:26 +08:00
|
|
|
const checkIntegerNumber = (rule: any, value: any, callback: any) => {
|
|
|
|
if (value === '' || typeof value === 'undefined' || value == null) {
|
|
|
|
callback(new Error(i18n.global.t('commons.rule.integer')));
|
|
|
|
} else {
|
|
|
|
const reg = /^[1-9]\d*$/;
|
|
|
|
if (!reg.test(value) && value !== '') {
|
|
|
|
callback(new Error(i18n.global.t('commons.rule.integer')));
|
|
|
|
} else {
|
|
|
|
callback();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2023-07-11 10:59:13 +08:00
|
|
|
const checkIntegerNumberWith0 = (rule: any, value: any, callback: any) => {
|
|
|
|
if (value === '' || typeof value === 'undefined' || value == null) {
|
|
|
|
callback(new Error(i18n.global.t('commons.rule.integer')));
|
|
|
|
} else {
|
|
|
|
const reg = /^[0-9]*$/;
|
|
|
|
if (!reg.test(value) && value !== '') {
|
|
|
|
callback(new Error(i18n.global.t('commons.rule.integer')));
|
|
|
|
} else {
|
|
|
|
callback();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2023-07-10 14:45:08 +08:00
|
|
|
const checkFloatNumber = (rule: any, value: any, callback: any) => {
|
|
|
|
if (value === '' || typeof value === 'undefined' || value == null) {
|
|
|
|
callback(new Error(i18n.global.t('commons.rule.integer')));
|
|
|
|
} else {
|
|
|
|
const reg = /^\d+(\.\d+)?$/;
|
|
|
|
if (!reg.test(value) && value !== '') {
|
|
|
|
callback(new Error(i18n.global.t('commons.rule.number')));
|
|
|
|
} else {
|
|
|
|
callback();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2023-03-01 17:36:42 +08:00
|
|
|
const checkParamCommon = (rule: any, value: any, callback: any) => {
|
|
|
|
if (value === '' || typeof value === 'undefined' || value == null) {
|
|
|
|
callback(new Error(i18n.global.t('commons.rule.paramName')));
|
|
|
|
} else {
|
2023-05-30 15:04:57 +08:00
|
|
|
const reg = /^[a-zA-Z0-9]{1}[a-zA-Z0-9._-]{1,63}$/;
|
2023-03-01 17:36:42 +08:00
|
|
|
if (!reg.test(value) && value !== '') {
|
|
|
|
callback(new Error(i18n.global.t('commons.rule.paramName')));
|
|
|
|
} else {
|
|
|
|
callback();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
const checkParamComplexity = (rule: any, value: any, callback: any) => {
|
|
|
|
if (value === '' || typeof value === 'undefined' || value == null) {
|
2023-03-10 15:34:26 +08:00
|
|
|
callback(new Error(i18n.global.t('commons.rule.paramComplexity', ['.%@$!&~_-'])));
|
2023-03-01 17:36:42 +08:00
|
|
|
} else {
|
2023-05-30 15:04:57 +08:00
|
|
|
const reg = /^[a-zA-Z0-9]{1}[a-zA-Z0-9.%@$!&~_-]{5,127}$/;
|
2023-03-01 17:36:42 +08:00
|
|
|
if (!reg.test(value) && value !== '') {
|
2023-03-10 15:34:26 +08:00
|
|
|
callback(new Error(i18n.global.t('commons.rule.paramComplexity', ['.%@$!&~_-'])));
|
2023-03-01 17:36:42 +08:00
|
|
|
} else {
|
|
|
|
callback();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
const checkParamUrlAndPort = (rule: any, value: any, callback: any) => {
|
|
|
|
if (value === '' || typeof value === 'undefined' || value == null) {
|
|
|
|
callback(new Error(i18n.global.t('commons.rule.paramUrlAndPort')));
|
|
|
|
} else {
|
|
|
|
const reg =
|
|
|
|
/^(https?:\/\/)?((localhost)|([a-zA-Z0-9_-]+\.)*[a-zA-Z0-9_-]+)(:[1-9]\d{0,3}|:[1-5]\d{4}|:6[0-4]\d{3}|:65[0-4]\d{2}|:655[0-2]\d|:6553[0-5])?(\/\S*)?$/;
|
|
|
|
if (!reg.test(value) && value !== '') {
|
|
|
|
callback(new Error(i18n.global.t('commons.rule.paramUrlAndPort')));
|
|
|
|
} else {
|
|
|
|
callback();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2023-03-08 22:28:21 +08:00
|
|
|
const checkPort = (rule: any, value: any, callback: any) => {
|
|
|
|
if (value === '' || typeof value === 'undefined' || value == null) {
|
|
|
|
callback(new Error(i18n.global.t('commons.rule.port')));
|
|
|
|
} else {
|
|
|
|
const reg = /^([1-9](\d{0,3}))$|^([1-5]\d{4})$|^(6[0-4]\d{3})$|^(65[0-4]\d{2})$|^(655[0-2]\d)$|^(6553[0-5])$/;
|
|
|
|
if (!reg.test(value) && value !== '') {
|
|
|
|
callback(new Error(i18n.global.t('commons.rule.port')));
|
|
|
|
} else {
|
|
|
|
callback();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2023-03-08 18:30:50 +08:00
|
|
|
const checkDoc = (rule: any, value: any, callback: any) => {
|
|
|
|
if (value === '' || typeof value === 'undefined' || value == null) {
|
|
|
|
callback(new Error(i18n.global.t('commons.rule.nginxDoc')));
|
|
|
|
} else {
|
2023-05-30 16:24:57 +08:00
|
|
|
const reg = /^[A-Za-z0-9\n./]+$/;
|
2023-03-08 18:30:50 +08:00
|
|
|
if (!reg.test(value) && value !== '') {
|
|
|
|
callback(new Error(i18n.global.t('commons.rule.nginxDoc')));
|
|
|
|
} else {
|
|
|
|
callback();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2023-03-02 15:46:42 +08:00
|
|
|
export function checkNumberRange(min: number, max: number): FormItemRule {
|
|
|
|
return {
|
2023-05-17 13:46:28 +08:00
|
|
|
required: false,
|
2023-03-02 15:46:42 +08:00
|
|
|
trigger: 'blur',
|
|
|
|
min: min,
|
|
|
|
max: max,
|
|
|
|
type: 'number',
|
|
|
|
message: i18n.global.t('commons.rule.numberRange', [min, max]),
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
2023-07-10 14:45:08 +08:00
|
|
|
export function checkFloatNumberRange(min: number, max: number): FormItemRule {
|
|
|
|
let validatorFunc = function (rule: any, value: any, callback: any) {
|
|
|
|
if (value === '' || typeof value === 'undefined' || value == null) {
|
|
|
|
callback(new Error(i18n.global.t('commons.rule.disableFunction')));
|
|
|
|
} else {
|
|
|
|
if ((Number(value) < min || Number(value) > max) && value !== '') {
|
|
|
|
callback(new Error(i18n.global.t('commons.rule.disableFunction')));
|
|
|
|
} else {
|
|
|
|
callback();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
return {
|
|
|
|
required: false,
|
|
|
|
trigger: 'blur',
|
|
|
|
validator: validatorFunc,
|
|
|
|
message: i18n.global.t('commons.rule.numberRange', [min, max]),
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
2023-05-30 15:30:57 +08:00
|
|
|
const checkContainerName = (rule: any, value: any, callback: any) => {
|
2023-05-17 13:46:28 +08:00
|
|
|
if (value === '' || typeof value === 'undefined' || value == null) {
|
|
|
|
callback();
|
|
|
|
} else {
|
|
|
|
const reg = /^[a-zA-Z0-9][a-zA-Z0-9_.-]{1,127}$/;
|
|
|
|
if (!reg.test(value) && value !== '') {
|
2023-05-30 15:30:57 +08:00
|
|
|
callback(new Error(i18n.global.t('commons.rule.containerName')));
|
2023-05-17 13:46:28 +08:00
|
|
|
} else {
|
|
|
|
callback();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2023-05-24 16:31:18 +08:00
|
|
|
const checkDisableFunctions = (rule: any, value: any, callback: any) => {
|
|
|
|
if (value === '' || typeof value === 'undefined' || value == null) {
|
|
|
|
callback(new Error(i18n.global.t('commons.rule.disableFunction')));
|
|
|
|
} else {
|
|
|
|
const reg = /^[a-zA-Z,]+$/;
|
|
|
|
if (!reg.test(value) && value !== '') {
|
|
|
|
callback(new Error(i18n.global.t('commons.rule.disableFunction')));
|
|
|
|
} else {
|
|
|
|
callback();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2023-05-26 10:40:21 +08:00
|
|
|
const checkLeechExts = (rule: any, value: any, callback: any) => {
|
|
|
|
if (value === '' || typeof value === 'undefined' || value == null) {
|
|
|
|
callback(new Error(i18n.global.t('commons.rule.leechExts')));
|
|
|
|
} else {
|
|
|
|
const reg = /^[a-zA-Z0-9,]+$/;
|
|
|
|
if (!reg.test(value) && value !== '') {
|
|
|
|
callback(new Error(i18n.global.t('commons.rule.leechExts')));
|
|
|
|
} else {
|
|
|
|
callback();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2023-05-30 15:04:57 +08:00
|
|
|
const checkParamSimple = (rule: any, value: any, callback: any) => {
|
|
|
|
if (value === '' || typeof value === 'undefined' || value == null) {
|
|
|
|
callback();
|
|
|
|
} else {
|
2023-07-14 11:48:11 +08:00
|
|
|
const reg = /^[a-z0-9][a-z0-9]{1,128}$/;
|
2023-05-30 15:04:57 +08:00
|
|
|
if (!reg.test(value) && value !== '') {
|
|
|
|
callback(new Error(i18n.global.t('commons.rule.paramSimple')));
|
|
|
|
} else {
|
|
|
|
callback();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2022-08-16 23:30:23 +08:00
|
|
|
interface CommonRule {
|
2022-08-18 18:51:27 +08:00
|
|
|
requiredInput: FormItemRule;
|
|
|
|
requiredSelect: FormItemRule;
|
2022-11-02 18:18:20 +08:00
|
|
|
requiredSelectBusiness: FormItemRule;
|
2022-08-16 23:30:23 +08:00
|
|
|
name: FormItemRule;
|
2023-03-01 14:05:55 +08:00
|
|
|
userName: FormItemRule;
|
2022-12-21 13:03:49 +08:00
|
|
|
simpleName: FormItemRule;
|
|
|
|
dbName: FormItemRule;
|
2022-12-02 16:38:36 +08:00
|
|
|
imageName: FormItemRule;
|
2023-02-24 12:26:23 +08:00
|
|
|
volumeName: FormItemRule;
|
2022-11-25 15:55:31 +08:00
|
|
|
linuxName: FormItemRule;
|
2022-09-16 16:00:49 +08:00
|
|
|
password: FormItemRule;
|
2022-08-16 23:30:23 +08:00
|
|
|
email: FormItemRule;
|
2022-09-14 23:27:17 +08:00
|
|
|
number: FormItemRule;
|
2023-03-11 17:50:26 +08:00
|
|
|
integerNumber: FormItemRule;
|
2023-07-11 10:59:13 +08:00
|
|
|
integerNumberWith0: FormItemRule;
|
2023-07-10 14:45:08 +08:00
|
|
|
floatNumber: FormItemRule;
|
2022-08-18 18:51:27 +08:00
|
|
|
ip: FormItemRule;
|
2023-07-07 17:41:13 +08:00
|
|
|
ipV4V6: FormItemRule;
|
2023-03-17 10:54:16 +08:00
|
|
|
host: FormItemRule;
|
2023-06-26 17:24:06 +08:00
|
|
|
illegal: FormItemRule;
|
2022-08-18 18:51:27 +08:00
|
|
|
port: FormItemRule;
|
2022-12-12 15:51:55 +08:00
|
|
|
domain: FormItemRule;
|
2022-12-20 23:18:33 +08:00
|
|
|
databaseName: FormItemRule;
|
2023-03-08 18:30:50 +08:00
|
|
|
nginxDoc: FormItemRule;
|
2023-03-08 22:41:45 +08:00
|
|
|
appName: FormItemRule;
|
2023-05-17 13:46:28 +08:00
|
|
|
containerName: FormItemRule;
|
2023-05-24 16:31:18 +08:00
|
|
|
disabledFunctions: FormItemRule;
|
2023-05-26 10:40:21 +08:00
|
|
|
leechExts: FormItemRule;
|
2023-03-01 17:36:42 +08:00
|
|
|
|
|
|
|
paramCommon: FormItemRule;
|
|
|
|
paramComplexity: FormItemRule;
|
|
|
|
paramPort: FormItemRule;
|
|
|
|
paramExtUrl: FormItemRule;
|
2023-05-30 15:04:57 +08:00
|
|
|
paramSimple: FormItemRule;
|
2022-08-16 23:30:23 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
export const Rules: CommonRule = {
|
2022-08-18 18:51:27 +08:00
|
|
|
requiredInput: {
|
2022-08-16 23:30:23 +08:00
|
|
|
required: true,
|
2022-08-18 18:51:27 +08:00
|
|
|
message: i18n.global.t('commons.rule.requiredInput'),
|
2022-08-16 23:30:23 +08:00
|
|
|
trigger: 'blur',
|
|
|
|
},
|
2022-08-18 18:51:27 +08:00
|
|
|
requiredSelect: {
|
|
|
|
required: true,
|
|
|
|
message: i18n.global.t('commons.rule.requiredSelect'),
|
|
|
|
trigger: 'change',
|
|
|
|
},
|
2022-11-02 18:18:20 +08:00
|
|
|
requiredSelectBusiness: {
|
|
|
|
required: true,
|
|
|
|
min: 1,
|
|
|
|
max: 65535,
|
|
|
|
type: 'number',
|
|
|
|
message: i18n.global.t('commons.rule.requiredSelect'),
|
|
|
|
trigger: 'change',
|
|
|
|
},
|
2022-12-21 13:03:49 +08:00
|
|
|
simpleName: {
|
|
|
|
required: true,
|
|
|
|
validator: checkSimpleName,
|
|
|
|
trigger: 'blur',
|
|
|
|
},
|
|
|
|
dbName: {
|
|
|
|
required: true,
|
|
|
|
validator: checkDBName,
|
|
|
|
trigger: 'blur',
|
|
|
|
},
|
2022-12-02 16:38:36 +08:00
|
|
|
imageName: {
|
|
|
|
required: true,
|
|
|
|
validator: checkImageName,
|
|
|
|
trigger: 'blur',
|
|
|
|
},
|
2023-02-24 12:26:23 +08:00
|
|
|
volumeName: {
|
|
|
|
required: true,
|
|
|
|
validator: checkVolumeName,
|
|
|
|
trigger: 'blur',
|
|
|
|
},
|
2022-08-16 23:30:23 +08:00
|
|
|
name: {
|
2022-09-16 18:53:45 +08:00
|
|
|
required: true,
|
2022-09-16 16:00:49 +08:00
|
|
|
validator: checkName,
|
|
|
|
trigger: 'blur',
|
2023-03-01 14:05:55 +08:00
|
|
|
},
|
|
|
|
userName: {
|
|
|
|
required: true,
|
|
|
|
validator: checkUserName,
|
|
|
|
trigger: 'blur',
|
2022-09-16 16:00:49 +08:00
|
|
|
},
|
2022-11-25 15:55:31 +08:00
|
|
|
linuxName: {
|
|
|
|
required: true,
|
|
|
|
validator: checkLinuxName,
|
|
|
|
trigger: 'blur',
|
|
|
|
},
|
2022-12-20 23:18:33 +08:00
|
|
|
databaseName: {
|
|
|
|
required: true,
|
|
|
|
validator: checkDatabaseName,
|
|
|
|
trigger: 'blur',
|
|
|
|
},
|
2022-09-16 16:00:49 +08:00
|
|
|
password: {
|
|
|
|
validator: complexityPassword,
|
2022-08-16 23:30:23 +08:00
|
|
|
trigger: 'blur',
|
|
|
|
},
|
|
|
|
email: {
|
2022-09-16 16:00:49 +08:00
|
|
|
required: true,
|
2022-08-16 23:30:23 +08:00
|
|
|
type: 'email',
|
|
|
|
message: i18n.global.t('commons.rule.email'),
|
|
|
|
trigger: 'blur',
|
|
|
|
},
|
2022-09-14 23:27:17 +08:00
|
|
|
number: {
|
|
|
|
required: true,
|
|
|
|
trigger: 'blur',
|
|
|
|
min: 0,
|
|
|
|
type: 'number',
|
|
|
|
message: i18n.global.t('commons.rule.number'),
|
|
|
|
},
|
2023-03-11 17:50:26 +08:00
|
|
|
integerNumber: {
|
|
|
|
required: true,
|
|
|
|
validator: checkIntegerNumber,
|
|
|
|
trigger: 'blur',
|
|
|
|
},
|
2023-07-11 10:59:13 +08:00
|
|
|
integerNumberWith0: {
|
|
|
|
required: true,
|
|
|
|
validator: checkIntegerNumberWith0,
|
|
|
|
trigger: 'blur',
|
|
|
|
},
|
2023-07-10 14:45:08 +08:00
|
|
|
floatNumber: {
|
|
|
|
required: true,
|
|
|
|
validator: checkFloatNumber,
|
|
|
|
trigger: 'blur',
|
|
|
|
min: 0,
|
|
|
|
message: i18n.global.t('commons.rule.number'),
|
|
|
|
},
|
2022-08-18 18:51:27 +08:00
|
|
|
ip: {
|
|
|
|
validator: checkIp,
|
|
|
|
required: true,
|
|
|
|
trigger: 'blur',
|
|
|
|
},
|
2023-07-07 17:41:13 +08:00
|
|
|
ipV4V6: {
|
|
|
|
validator: checkIpV4V6,
|
|
|
|
required: true,
|
|
|
|
trigger: 'blur',
|
|
|
|
},
|
2023-03-17 10:54:16 +08:00
|
|
|
host: {
|
|
|
|
validator: checkHost,
|
|
|
|
required: true,
|
|
|
|
trigger: 'blur',
|
|
|
|
},
|
2023-06-26 17:24:06 +08:00
|
|
|
illegal: {
|
|
|
|
validator: checkIllegal,
|
|
|
|
required: true,
|
|
|
|
trigger: 'blur',
|
|
|
|
},
|
2022-08-18 18:51:27 +08:00
|
|
|
port: {
|
|
|
|
required: true,
|
|
|
|
trigger: 'blur',
|
|
|
|
min: 1,
|
|
|
|
max: 65535,
|
|
|
|
type: 'number',
|
|
|
|
message: i18n.global.t('commons.rule.port'),
|
|
|
|
},
|
2022-12-12 15:51:55 +08:00
|
|
|
domain: {
|
|
|
|
required: true,
|
|
|
|
validator: checkDomain,
|
|
|
|
trigger: 'blur',
|
|
|
|
},
|
2023-03-01 17:36:42 +08:00
|
|
|
paramCommon: {
|
|
|
|
required: true,
|
|
|
|
validator: checkParamCommon,
|
|
|
|
trigger: 'blur',
|
|
|
|
},
|
|
|
|
paramComplexity: {
|
|
|
|
required: true,
|
|
|
|
validator: checkParamComplexity,
|
|
|
|
trigger: 'blur',
|
|
|
|
},
|
|
|
|
paramPort: {
|
|
|
|
required: true,
|
|
|
|
trigger: 'blur',
|
2023-03-08 22:28:21 +08:00
|
|
|
validator: checkPort,
|
2023-03-01 17:36:42 +08:00
|
|
|
},
|
|
|
|
paramExtUrl: {
|
|
|
|
required: true,
|
|
|
|
validator: checkParamUrlAndPort,
|
|
|
|
trigger: 'blur',
|
|
|
|
},
|
2023-03-08 18:30:50 +08:00
|
|
|
nginxDoc: {
|
|
|
|
required: true,
|
|
|
|
validator: checkDoc,
|
|
|
|
trigger: 'blur',
|
|
|
|
},
|
2023-03-08 22:41:45 +08:00
|
|
|
appName: {
|
|
|
|
required: true,
|
|
|
|
trigger: 'blur',
|
|
|
|
validator: checkAppName,
|
|
|
|
},
|
2023-05-17 13:46:28 +08:00
|
|
|
containerName: {
|
|
|
|
required: false,
|
|
|
|
trigger: 'blur',
|
2023-05-30 15:30:57 +08:00
|
|
|
validator: checkContainerName,
|
2023-05-17 13:46:28 +08:00
|
|
|
},
|
2023-05-24 16:31:18 +08:00
|
|
|
disabledFunctions: {
|
|
|
|
required: true,
|
|
|
|
trigger: 'blur',
|
|
|
|
validator: checkDisableFunctions,
|
|
|
|
},
|
2023-05-26 10:40:21 +08:00
|
|
|
leechExts: {
|
|
|
|
required: true,
|
|
|
|
trigger: 'blur',
|
|
|
|
validator: checkLeechExts,
|
|
|
|
},
|
2023-05-30 15:04:57 +08:00
|
|
|
paramSimple: {
|
|
|
|
required: true,
|
|
|
|
trigger: 'blur',
|
|
|
|
validator: checkParamSimple,
|
|
|
|
},
|
2022-08-16 23:30:23 +08:00
|
|
|
};
|