ntopng/http_src/validators/ntopng-validators-utils.js
Matteo Biscosi 4e31f600f6 Revert "Added Vite to frontend builds"
This reverts commit 2b5d2d7949.
2025-05-22 15:32:21 +02:00

138 lines
3.3 KiB
JavaScript

export function makeUniqueValidator(items_function) {
return function(field) {
var cmp_name = field.val();
var count = 0;
// this will be checked separately, with 'required' argument
if(! cmp_name)
return true;
items_function(field).each(function() {
var name = $(this).val();
if (name == cmp_name)
count = count + 1;
});
return count == 1;
}
}
export function memberValueValidator(input) {
var member = input.val();
if (member === "") return true;
return NtopUtils.is_mac_address(member) || NtopUtils.is_network_mask(member, true);
}
export function makePasswordPatternValidator(pattern) {
return function passwordPatternValidator(input) {
// required is checked separately
if(!input.val()) return true;
return $(input).val().match(pattern);
}
}
export function passwordMatchValidator(input) {
var other_input = $(input).closest("form").find("[data-passwordmatch]").not(input);
if(!input.val() || !other_input.val()) return true;
return other_input.val() === input.val();
}
export function poolnameValidator(input) {
// required is checked separately
if(!input.val()) return true;
return $(input).val().match(/^[a-z0-9_]*$/);
}
export function passwordMatchRecheck(form) {
var items = $(form).find("[data-passwordmatch]");
var not_empty = 0;
items.each(function() {
if($(this).val() != "") not_empty++;
});
if(not_empty == items.length) items.trigger('input');
}
export function hostOrMacValidator(input) {
var host = input.val();
/* Handled separately */
if (host === "") return true;
return NtopUtils.is_mac_address(host) || NtopUtils.is_good_ipv4(host) || NtopUtils.is_good_ipv6(host);
}
export function ipAddressValidator(input) {
var host = input.val();
/* Handled separately */
if (host === "") return true;
return NtopUtils.is_good_ipv4(host) || NtopUtils.is_good_ipv6(host);
}
var filters_to_validate = {};
export function bpfValidator(filter_field, sync = false) {
var filter = filter_field.val();
if (filter.trim() === "") {
return true;
}
var key = filter_field.attr("name");
var timeout = 250;
if (!filters_to_validate[key])
filters_to_validate[key] = {ajax_obj:null, valid:true, timer:null, submit_remind:false, last_val:null};
var status = filters_to_validate[key];
var sendAjax = function () {
status.timer = null;
var finally_check = function (valid) {
status.ajax_obj = null;
status.valid = valid;
status.last_val = filter;
}
if (status.last_val !== filter) {
if (status.ajax_obj)
status.ajax_obj.abort();
status.ajax_obj = $.ajax({
type: "GET",
url: `${http_prefix}/lua/pro/rest/v2/check/filter.lua`,
async: !sync,
data: {
query: filter,
}, error: function() {
finally_check(status.valid);
}, success: function(data) {
var valid = data.response ? true : false;
finally_check(valid);
}
});
} else {
// possibly process the reminder
finally_check(status.valid);
}
};
if (sync) {
sendAjax();
} else if (status.last_val === filter) {
// Ignoring
} else {
if (status.timer) {
clearTimeout(status.timer);
status.submit_remind = false;
}
status.timer = setTimeout(sendAjax, timeout);
}
return status.valid;
}