ntopng/http_src/utilities/regex-validation.js
2023-04-05 09:36:06 +00:00

42 lines
1.5 KiB
JavaScript

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})`;
}
return Utils.REGEXES[type];
}
const regexValidation = function() {
return {
get_data_pattern,
};
}();
export default regexValidation;