mirror of
https://github.com/ntop/ntopng.git
synced 2026-04-30 16:09:32 +00:00
Added Vite to frontend builds
This commit is contained in:
parent
daf007c161
commit
2b5d2d7949
118 changed files with 10172 additions and 34001 deletions
|
|
@ -5,160 +5,162 @@
|
|||
/* ****************************************************** */
|
||||
|
||||
const regexes = {
|
||||
ipv4: String.raw`^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$`,
|
||||
ipv6: String.raw`^(?:(?:[a-fA-F\d]{1,4}:){7}(?:[a-fA-F\d]{1,4}|:)|(?:[a-fA-F\d]{1,4}:){6}(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|:[a-fA-F\d]{1,4}|:)|(?:[a-fA-F\d]{1,4}:){5}(?::(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,2}|:)|(?:[a-fA-F\d]{1,4}:){4}(?:(?::[a-fA-F\d]{1,4}){0,1}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,3}|:)|(?:[a-fA-F\d]{1,4}:){3}(?:(?::[a-fA-F\d]{1,4}){0,2}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,4}|:)|(?:[a-fA-F\d]{1,4}:){2}(?:(?::[a-fA-F\d]{1,4}){0,3}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,5}|:)|(?:[a-fA-F\d]{1,4}:){1}(?:(?::[a-fA-F\d]{1,4}){0,4}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,6}|:)|(?::(?:(?::[a-fA-F\d]{1,4}){0,5}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,7}|:)))(?:%[0-9a-zA-Z]{1,})?$`,
|
||||
mac_address: String.raw`^([0-9A-Fa-f]{2}:){5}([0-9A-Fa-f]{2})$`,
|
||||
comma_separted_port_regex: String.raw`^(\d{1,5})(,\s*\d{1,5})*$`,
|
||||
port_range_regex: String.raw`^(\d{1,5})-(\d{1,5})$`,
|
||||
host_name: String.raw`^(?!\s*$)[a-zA-Z0-9._: \-\/]{1,250}|^[a-zA-Z0-9._: \-\/]{1,250}@[0-9]{0,5}`,
|
||||
singleword: String.raw`^(?=[a-zA-Z0-9._:\-]{3,253}$)(?!.*[_.:\-]{2})[^_.:\-].*[^_.:\-]$`,
|
||||
url: String.raw`^(https?\:\/\/[^\/\s]+(\/.*)?)$`,
|
||||
}
|
||||
ipv4: String.raw`^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$`,
|
||||
ipv6: String.raw`^(?:(?:[a-fA-F\d]{1,4}:){7}(?:[a-fA-F\d]{1,4}|:)|(?:[a-fA-F\d]{1,4}:){6}(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|:[a-fA-F\d]{1,4}|:)|(?:[a-fA-F\d]{1,4}:){5}(?::(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,2}|:)|(?:[a-fA-F\d]{1,4}:){4}(?:(?::[a-fA-F\d]{1,4}){0,1}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,3}|:)|(?:[a-fA-F\d]{1,4}:){3}(?:(?::[a-fA-F\d]{1,4}){0,2}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,4}|:)|(?:[a-fA-F\d]{1,4}:){2}(?:(?::[a-fA-F\d]{1,4}){0,3}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,5}|:)|(?:[a-fA-F\d]{1,4}:){1}(?:(?::[a-fA-F\d]{1,4}){0,4}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,6}|:)|(?::(?:(?::[a-fA-F\d]{1,4}){0,5}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,7}|:)))(?:%[0-9a-zA-Z]{1,})?$`,
|
||||
mac_address: String.raw`^([0-9A-Fa-f]{2}:){5}([0-9A-Fa-f]{2})$`,
|
||||
comma_separted_port_regex: String.raw`^(\d{1,5})(,\s*\d{1,5})*$`,
|
||||
port_range_regex: String.raw`^(\d{1,5})-(\d{1,5})$`,
|
||||
host_name: String.raw`^(?!\s*$)[a-zA-Z0-9._: \-\/]{1,250}|^[a-zA-Z0-9._: \-\/]{1,250}@[0-9]{0,5}`,
|
||||
singleword: String.raw`^(?=[a-zA-Z0-9._:\-]{3,253}$)(?!.*[_.:\-]{2})[^_.:\-].*[^_.:\-]$`,
|
||||
url: String.raw`^(https?\:\/\/[^\/\s]+(\/.*)?)$`,
|
||||
};
|
||||
|
||||
/* ****************************************************** */
|
||||
|
||||
const validateIP = (ip) => {
|
||||
return (validateIPv4(ip) || validateIPv6(ip));
|
||||
}
|
||||
return (validateIPv4(ip) || validateIPv6(ip));
|
||||
};
|
||||
|
||||
/* ****************************************************** */
|
||||
|
||||
const validateCIDR = (network) => {
|
||||
const network_split = network.split('/');
|
||||
if (network_split.length == 2) {
|
||||
const subnet = network_split[1];
|
||||
const ip = network_split[0];
|
||||
const num = Number(subnet);
|
||||
if (validateIPv4(ip) || validateIPv6(ip)) {
|
||||
return (!isNaN(num) && num >= 1 && num <= 128 && Number.isInteger(num));
|
||||
}
|
||||
const network_split = network.split('/');
|
||||
if (network_split.length == 2) {
|
||||
const subnet = network_split[1];
|
||||
const ip = network_split[0];
|
||||
const num = Number(subnet);
|
||||
if (validateIPv4(ip) || validateIPv6(ip)) {
|
||||
return (!isNaN(num) && num >= 1 && num <= 128 && Number.isInteger(num));
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
/* ****************************************************** */
|
||||
|
||||
const validateNetwork = (ip) => {
|
||||
const ipv4 = new RegExp(regexes.ipv4);
|
||||
const ipv4 = new RegExp(regexes.ipv4);
|
||||
|
||||
return ipv4.test(ip);
|
||||
}
|
||||
return ipv4.test(ip);
|
||||
};
|
||||
|
||||
/* ****************************************************** */
|
||||
|
||||
const validateIPv4 = (ip) => {
|
||||
const ipv4 = new RegExp(regexes.ipv4);
|
||||
const ipv4 = new RegExp(regexes.ipv4);
|
||||
|
||||
return ipv4.test(ip);
|
||||
}
|
||||
return ipv4.test(ip);
|
||||
};
|
||||
|
||||
/* ****************************************************** */
|
||||
|
||||
const validateIPv6 = (ip) => {
|
||||
const ipv6 = new RegExp(regexes.ipv6);
|
||||
const ipv6 = new RegExp(regexes.ipv6);
|
||||
|
||||
return ipv6.test(ip);
|
||||
}
|
||||
return ipv6.test(ip);
|
||||
};
|
||||
|
||||
const validateHostName = (host_name) => {
|
||||
const host_name_regexp = new RegExp(regexes.host_name);
|
||||
const host_name_regexp = new RegExp(regexes.host_name);
|
||||
|
||||
return host_name_regexp.test(host_name);
|
||||
}
|
||||
return host_name_regexp.test(host_name);
|
||||
};
|
||||
|
||||
/* ****************************************************** */
|
||||
|
||||
const validateCommaSeparatedPortList = (ports) => {
|
||||
const port_list = new RegExp(regexes.comma_separted_port_regex);
|
||||
const port_list = new RegExp(regexes.comma_separted_port_regex);
|
||||
|
||||
return port_list.test(ports);
|
||||
}
|
||||
return port_list.test(ports);
|
||||
};
|
||||
|
||||
const validateSingleWord = (word) => {
|
||||
const singelWordRegex = new RegExp(regexes.singleword)
|
||||
const singelWordRegex = new RegExp(regexes.singleword);
|
||||
|
||||
return singelWordRegex.test(word);
|
||||
}
|
||||
return singelWordRegex.test(word);
|
||||
};
|
||||
|
||||
const validateURL = (url) => {
|
||||
const urlRegex = new RegExp(regexes.url)
|
||||
const urlRegex = new RegExp(regexes.url);
|
||||
|
||||
return urlRegex.test(url);
|
||||
}
|
||||
return urlRegex.test(url);
|
||||
};
|
||||
|
||||
const validateMAC = (mac_address) => {
|
||||
const macRegex = new RegExp(regexes.mac_address)
|
||||
const macRegex = new RegExp(regexes.mac_address);
|
||||
|
||||
return macRegex.test(mac_address);
|
||||
}
|
||||
return macRegex.test(mac_address);
|
||||
};
|
||||
|
||||
/* ****************************************************** */
|
||||
|
||||
const validatePortRange = (ports) => {
|
||||
const port_array = ports.split("-", 2);
|
||||
const low = Number(port_array[0]);
|
||||
const high = Number(port_array[1]);
|
||||
const port_array = ports.split('-', 2);
|
||||
const low = Number(port_array[0]);
|
||||
const high = Number(port_array[1]);
|
||||
|
||||
if ((isNaN(low)) || (isNaN(high)))
|
||||
return false;
|
||||
if ((isNaN(low)) || (isNaN(high))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ((low > 0) && (low < high) && (high < 65536))
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
if ((low > 0) && (low < high) && (high < 65536)) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
/* ****************************************************** */
|
||||
|
||||
import NtopUtils from "./ntop-utils.js";
|
||||
import NtopUtils from './ntop-utils.js';
|
||||
|
||||
const Utils = NtopUtils;
|
||||
function get_data_pattern(type) {
|
||||
if (type == "text") {
|
||||
return `.*`;
|
||||
} else if (type == "vlan") {
|
||||
let vlan = String.raw`@(([1-9])|([1-9][0-9]{1,2})|([1-3][0-9]{3})|(40[0-8][0-9])|(409[0-5]))`;
|
||||
return vlan;
|
||||
} else if (type == "ip" || type == "cidr") {
|
||||
let vlan = get_data_pattern("vlan");
|
||||
let r_ipv4 = Utils.REGEXES.ipv4;
|
||||
let r_ipv4_vlan = r_ipv4.replaceAll("$", `${vlan}$`);
|
||||
let r_ipv6 = Utils.REGEXES.ipv6;
|
||||
let r_ipv6_vlan = r_ipv6.replaceAll("$", `${vlan}$`);
|
||||
if (type == "cidr") {
|
||||
let network_ipv4 = String.raw`(\/(([1-9])|([1-2][0-9])|(3[0-2])))`;
|
||||
let ipv4_cidr = r_ipv4.replaceAll("$", `${network_ipv4}$`);
|
||||
let ipv4_cidr_vlan = r_ipv4.replaceAll("$", `${network_ipv4}${vlan}$`);
|
||||
let network_ipv6 = String.raw`(\/(([1-9])|([1-9][0-9])|(1[0-1][0-9])|(12[0-8])))`;
|
||||
let ipv6_cidr = r_ipv6.replaceAll("$", `${network_ipv6}$`);
|
||||
let ipv6_cidr_vlan = r_ipv6.replaceAll("$", `${network_ipv6}${vlan}$`);
|
||||
return `(${ipv4_cidr}|${ipv4_cidr_vlan}|${ipv6_cidr}|${ipv6_cidr_vlan})`;
|
||||
}
|
||||
return `(${r_ipv4})|(${r_ipv4_vlan})|(${r_ipv6})|(${r_ipv6_vlan})`;
|
||||
} else if (type == "mac") {
|
||||
return Utils.REGEXES["macAddress"];
|
||||
} else if (type == "ip,cidr") {
|
||||
let ip = get_data_pattern("ip");
|
||||
let cidr = get_data_pattern("cidr");
|
||||
return `(${ip})|(${cidr})`;
|
||||
if (type == 'text') {
|
||||
return `.*`;
|
||||
} else if (type == 'vlan') {
|
||||
const vlan = String.raw`@(([1-9])|([1-9][0-9]{1,2})|([1-3][0-9]{3})|(40[0-8][0-9])|(409[0-5]))`;
|
||||
return vlan;
|
||||
} else if (type == 'ip' || type == 'cidr') {
|
||||
const vlan = get_data_pattern('vlan');
|
||||
const r_ipv4 = Utils.REGEXES.ipv4;
|
||||
const r_ipv4_vlan = r_ipv4.replaceAll('$', `${vlan}$`);
|
||||
const r_ipv6 = Utils.REGEXES.ipv6;
|
||||
const r_ipv6_vlan = r_ipv6.replaceAll('$', `${vlan}$`);
|
||||
if (type == 'cidr') {
|
||||
const network_ipv4 = String.raw`(\/(([1-9])|([1-2][0-9])|(3[0-2])))`;
|
||||
const ipv4_cidr = r_ipv4.replaceAll('$', `${network_ipv4}$`);
|
||||
const ipv4_cidr_vlan = r_ipv4.replaceAll('$', `${network_ipv4}${vlan}$`);
|
||||
const network_ipv6 = String.raw`(\/(([1-9])|([1-9][0-9])|(1[0-1][0-9])|(12[0-8])))`;
|
||||
const ipv6_cidr = r_ipv6.replaceAll('$', `${network_ipv6}$`);
|
||||
const ipv6_cidr_vlan = r_ipv6.replaceAll('$', `${network_ipv6}${vlan}$`);
|
||||
return `(${ipv4_cidr}|${ipv4_cidr_vlan}|${ipv6_cidr}|${ipv6_cidr_vlan})`;
|
||||
}
|
||||
return Utils.REGEXES[type];
|
||||
return `(${r_ipv4})|(${r_ipv4_vlan})|(${r_ipv6})|(${r_ipv6_vlan})`;
|
||||
} else if (type == 'mac') {
|
||||
return Utils.REGEXES['macAddress'];
|
||||
} else if (type == 'ip,cidr') {
|
||||
const ip = get_data_pattern('ip');
|
||||
const cidr = get_data_pattern('cidr');
|
||||
return `(${ip})|(${cidr})`;
|
||||
}
|
||||
return Utils.REGEXES[type];
|
||||
}
|
||||
|
||||
const regexValidation = function () {
|
||||
return {
|
||||
get_data_pattern,
|
||||
validateIP,
|
||||
validateIPv4,
|
||||
validateIPv6,
|
||||
validateHostName,
|
||||
validateCommaSeparatedPortList,
|
||||
validatePortRange,
|
||||
validateSingleWord,
|
||||
validateURL,
|
||||
validateCIDR,
|
||||
validateMAC
|
||||
};
|
||||
const regexValidation = function() {
|
||||
return {
|
||||
get_data_pattern,
|
||||
validateIP,
|
||||
validateIPv4,
|
||||
validateIPv6,
|
||||
validateHostName,
|
||||
validateCommaSeparatedPortList,
|
||||
validatePortRange,
|
||||
validateSingleWord,
|
||||
validateURL,
|
||||
validateCIDR,
|
||||
validateMAC,
|
||||
};
|
||||
}();
|
||||
|
||||
export default regexValidation;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue