diff --git a/httpdocs/js/ntop.min.js b/httpdocs/js/ntop.min.js index b3d027f93c..9167f13351 100644 --- a/httpdocs/js/ntop.min.js +++ b/httpdocs/js/ntop.min.js @@ -1,2 +1,2 @@ -function aysHandleForm(form_selector,options){if(!form_selector)form_selector="form";if(form_selector==="form"){form_selector='form:not([data-ays-ignore="true"])'}var default_options={submit_selector:'button[type="submit"]:not([data-ays-ignore="true"])',on_dirty_callback:$.noop,on_clean_callback:$.noop,handle_submit_buttons:true,handle_datatable:false,handle_tabs:false,disable_on_dirty:"",ays_options:{}};var o=$.extend(true,{},default_options,options);o.form_selector=form_selector;$(function(){$(o.form_selector).areYouSure(o.ays_options);if(o.handle_submit_buttons)$(o.form_selector).find(o.submit_selector).attr("disabled","disabled");$(o.form_selector).on("dirty.areYouSure",function(){if(o.handle_submit_buttons)$(this).find(o.submit_selector).removeAttr("disabled");if(o.handle_datatable){$(this).find("a.dropdown-toggle").attr("disabled","disabled");$(this).find("ul.pagination a").css("pointer-events","none").css("cursor","default")}if(o.handle_tabs){$(".nav-tabs").find("a").each(function(){if(!$(this).closest("li").hasClass("active"))$(this).removeAttr("data-toggle").closest("li").addClass("disabled")})}$(o.disable_on_dirty).addClass("disabled");o.on_dirty_callback.bind(this)()});$(o.form_selector).on("clean.areYouSure",function(){if(o.handle_submit_buttons)$(this).find(o.submit_selector).attr("disabled","disabled");if(o.handle_datatable){$(this).find("a.dropdown-toggle").removeAttr("disabled");$(this).find("ul.pagination a").css("pointer-events","").css("cursor","")}if(o.handle_tabs){$(".nav-tabs").find("a").each(function(){$(this).attr("data-toggle","tab").closest("li").removeClass("disabled")})}$(o.disable_on_dirty).removeClass("disabled");o.on_clean_callback.bind(this)()})})}function aysResetForm(form_selector){$(form_selector).trigger("reinitialize.areYouSure")}function aysUpdateForm(form_selector){$(form_selector).trigger("rescan.areYouSure")}function aysRecheckForm(form_selector){$(form_selector).trigger("checkform.areYouSure")}function aysGetDirty(form_selector,fields_selector){fields_selector=fields_selector||":input:not(input[type=submit]):not(input[type=button])";var getValue=function($field){if($field.hasClass("ays-ignore")||$field.hasClass("aysIgnore")||$field.attr("data-ays-ignore")||$field.attr("name")===undefined){return null}if($field.is(":disabled")){return"ays-disabled"}var val;var type=$field.attr("type");if($field.is("select")){type="select"}switch(type){case"checkbox":case"radio":val=$field.is(":checked");break;case"select":val="";$field.find("option").each(function(o){var $option=$(this);if($option.is(":selected")){val+=$option.val()}});break;default:val=$field.val()}return val};var isFieldDirty=function($field){var origValue=$field.data("ays-orig");var curValue=getValue($field);var dirty=undefined!==origValue&&origValue!=curValue;return{dirty:dirty,origValue:origValue,curValue:curValue}};var l=[];$(form_selector).find(fields_selector).each(function(){var dirty_status=isFieldDirty($(this));if(dirty_status.dirty){dirty_status.input=$(this);l.push(dirty_status)}});return l}String.prototype.capitalizeSingleWord=function(){var uc=this.toUpperCase();if(uc=="ASN"||uc=="OS")return uc;else return this.charAt(0).toUpperCase()+this.slice(1)};String.prototype.capitalize=function(){var res=this.split(" ");for(var i in res){res[i]=res[i].capitalizeSingleWord()}return res.join(" ")};String.prototype.startsWith=function(string){return this.indexOf(string)===0};String.prototype.sformat=function(){var args=arguments;return this.replace(/{(\d+)}/g,function(match,number){return typeof args[number]!="undefined"?args[number]:match})};if(typeof String.prototype.contains==="undefined"){String.prototype.contains=function(s){return this.indexOf(s)!==-1}}Date.prototype.format=function(format){var o={"M+":this.getMonth()+1,"d+":this.getDate(),"h+":this.getHours(),"m+":this.getMinutes(),"s+":this.getSeconds(),"q+":Math.floor((this.getMonth()+3)/3),S:this.getMilliseconds()};if(/(y+)/.test(format))format=format.replace(RegExp.$1,(this.getFullYear()+"").substr(4-RegExp.$1.length));for(var k in o)if(new RegExp("("+k+")").test(format))format=format.replace(RegExp.$1,RegExp.$1.length==1?o[k]:("00"+o[k]).substr((""+o[k]).length));return format};jQuery.fn.extend({disable:function(state){return this.each(function(){var $this=$(this);if($this.is("input, button, textarea, select"))this.disabled=state;else $this.toggleClass("disabled",state)})}});const NTOPNG_MIN_VISUAL_VALUE=.005;const REGEXES={ipv4:"^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9]).){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])$",ipv6:"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]):){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:)))(%.+)?s*$",domainName:"^(([a-zA-Z]{1})|([a-zA-Z]{1}[a-zA-Z]{1})|([a-zA-Z]{1}[0-9]{1})|([0-9]{1}[a-zA-Z]{1})|([a-zA-Z0-9][-_.a-zA-Z0-9]{1,61}[a-zA-Z0-9])).([a-zA-Z]{2,13}|[a-zA-Z0-9-]{2,30}.[a-zA-Z]{2,3})",port:"^([0-9]{1,4}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$",url:"^(https?://[^/\\s]+(/.*)?)$",macAddress:"^([0-9A-Fa-f]{2}:){5}([0-9A-Fa-f]{2})$",username:"^(?=[a-zA-Z0-9._]{3,20}$)(?!.*[_.]{2})[^_.].*[^_.]$",singleword:"^(?=[a-zA-Z0-9._-]{3,20}$)(?!.*[_.-]{2})[^_.-].*[^_.-]$",email:"^([a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:.[a-zA-Z0-9-]+)*)$",https:"^https?://.+$",token:"^[0-9a-f]{32}"};class NtopUtils{static get REGEXES(){return REGEXES}static getIPv4RegexWithCIDR(){const length=REGEXES.ipv4.length;return`${REGEXES.ipv4.substring(0,length-1)}(\\/?)(\\b([0-9]|[12][0-9]|3[0-2])?\\b)$`}static getIPv6RegexWithCIDR(){const length=REGEXES.ipv6.length;return`${REGEXES.ipv6.substring(0,length-1)}(\\/?)\\b([0-9]|[1-9][0-9]|1[01][0-9]|12[0-8])?\\b$`}static async resolveDNS(hostname="ntop.org"){try{const request=await fetch(`${http_prefix}/lua/rest/v1/get/dns/resolve.lua?hostname=${hostname}`);const response=await request.json();return response}catch(err){console.error(`Something went wrong when resolving hostname: ${err}`)}return{rc:-1,rc_str:"FAILED_HTTP_REQUEST"}}static initDataPatterns(){$(`input[data-pattern]`).each(function(){const dataPattern=$(this).data("pattern");if(!dataPattern){console.warn(`An empty data-pattern on an input was found!`,this);return}const pattern=dataPattern.split("|").map(p=>REGEXES[p].toString()).join("|");$(this).attr("pattern",pattern);$(this).removeAttr("data-pattern")})}static is_good_ipv4(ipv4){return new RegExp(REGEXES.ipv4).test(ipv4)}static is_good_ipv6(ipv6){return new RegExp(REGEXES.ipv6).test(ipv6)}static is_mac_address(mac){return new RegExp(REGEXES.macAddress).test(mac)}static isNumeric(value){return/^\d+$/.test(value)}static is_network_mask(what,optional_mask){var elems=what.split("/");var mask=null;var ip_addr;if(elems.length!=2){if(!optional_mask)return null;else ip_addr=what}else{ip_addr=elems[0];if(!NtopUtils.isNumeric(elems[1]))return null;mask=parseInt(elems[1]);if(mask<0)return null}if(NtopUtils.is_good_ipv4(ip_addr)){if(mask===null)mask=32;else if(mask>32)return null;return{type:"ipv4",address:ip_addr,mask:mask}}else if(NtopUtils.is_good_ipv6(elems[0])){if(mask===null)mask=128;else if(mask>128)return false;return{type:"ipv6",address:ip_addr,mask:mask}}return null}static fbits(bits){const sizes=["bit/s","Kbit/s","Mbit/s","Gbit/s","Tbit/s"];if(typeof bits==="undefined")return"-";if(bits==0)return"0";if(bits>0&&bits=sizes.length){return"> "+sizes[sizes.length-1]}if(i<=1){return Math.round(bits/Math.pow(1e3,i)*100)/100+" "+sizes[i]}else{var ret=parseFloat(bits/Math.pow(1e3,i)).toFixed(2);if(ret%1==0)ret=Math.round(ret);return ret+" "+sizes[i]}}static export_rate(eps){if(typeof eps==="undefined")return"-";var sizes=["exp/s","Kexp/s"];if(eps==0)return"0";if(eps>0&&eps0&&exports0&&pps0&&pps0&&fps0&&mps'}else if(actual>before){return''}else{return''}}static abbreviateString(str,len){if(!str)return"";if(str.length=0&&bytes=kilobyte&&bytes=megabyte&&bytes=gigabyte&&bytes=terabyte)return parseFloat((bytes/terabyte).toFixed(precision))+" TB";else return parseFloat(bytes.toFixed(precision))+" Bytes"}static drawTrend(current,last,withColor){if(current==last){return''}else if(current>last){return'"}else{return''}}static toggleAllTabs(enabled){if(enabled===true)$("#historical-tabs-container").find("li").removeClass("disabled").find("a").attr("data-toggle","tab");else $("#historical-tabs-container").find("li").addClass("disabled").find("a").removeAttr("data-toggle")}static disableAllDropdownsAndTabs(){$("select").each(function(){$(this).prop("disabled",true)});NtopUtils.toggleAllTabs(false)}static enableAllDropdownsAndTabs(){$("select").each(function(){$(this).prop("disabled",false)});NtopUtils.toggleAllTabs(true)}static capitalize(s){return s&&s[0].toUpperCase()+s.slice(1)}static addCommas(nStr){nStr+="";var x=nStr.split(".");var x1=x[0];var x2=x.length>1?"."+x[1]:"";var rgx=/(\d+)(\d{3})/;while(rgx.test(x1)){x1=x1.replace(rgx,"$1"+","+"$2")}return x1+x2}static scaleValue(val,sizes,scale,decimals){if(val==0)return[0,sizes[0]];let factor=decimals?10*decimals:10;var i=parseInt(Math.floor(Math.log(val)/Math.log(scale)));if(i<0||isNaN(i)){i=0}else if(i>=sizes.length){i=sizes.length-1}return[Math.round(val/Math.pow(scale,i)*factor)/factor,sizes[i]]}static formatValue(val){var sizes=["","K","M","G","T"];if(val==0)return"0";if(val>0&&val0&&bytes0&&bits0){let years=Math.floor(days/365);if(years>0){days=days%365;msg=years+" year";if(years>1){msg+="s"}msg_array.push(msg);msg=""}msg=days+" day";if(days>1){msg+="s"}msg_array.push(msg);msg=""}if(hours>0){if(hours<10){msg="0"}msg+=hours+":"}if(minutes<10){msg+="0"}msg+=minutes+":";if(sec<10){msg+="0"}msg+=sec;msg_array.push(msg);return msg_array.join(", ")}static epoch2Seen(epoch){var d=new Date(epoch*1e3);var tdiff=Math.floor((new Date).getTime()/1e3-epoch);return d.format("dd/MM/yyyy hh:mm:ss")+" ["+NtopUtils.secondsToTime(tdiff)+" ago]"}static graphGetXAxisTicksFormat(diff_epoch){var tickFormat;if(diff_epoch<=86400){tickFormat="%H:%M:%S"}else if(diff_epoch<=2*86400){tickFormat="%b %e, %H:%M:%S"}else{tickFormat="%b %e"}return tickFormat}static paramsExtend(defaults,override){return $.extend({},defaults,override)}static paramsToForm(form,params){form=$(form);for(var k in params){if(params.hasOwnProperty(k)){var input=$('');input.appendTo(form)}}return form}static paramsPairsEncode(params){var i=0;var res={};for(var k in params){res["key_"+i]=k;res["val_"+i]=params[k];i=i+1}return res}static hostkey2hostInfo(host_key){var info;var hostinfo=[];host_key=host_key.replace(/____/g,":");host_key=host_key.replace(/___/g,"/");host_key=host_key.replace(/__/g,".");info=host_key.split("@");return info}static handle_tab_state(nav_object,default_tab){$("a",nav_object).click(function(e){e.preventDefault()});$(" > li > a",nav_object).on("shown.bs.tab",function(e){var id=$(e.target).attr("href").substr(1);if(history.replaceState){history.replaceState(null,null,"#"+id)}else{window.location.hash=id}});var hash=window.location.hash;if(!hash)hash="#"+default_tab;$('a[href="'+hash+'"]',nav_object).tab("show")}static _add_find_host_link(form,name,data){$("").attr({type:"hidden",id:name,name:name,value:data}).appendTo(form)}static makeFindHostBeforeSubmitCallback(http_prefix){return function(form,data){if(data.type=="mac"){form.attr("action",http_prefix+"/lua/mac_details.lua")}else if(data.type=="network"){form.attr("action",http_prefix+"/lua/hosts_stats.lua");NtopUtils._add_find_host_link(form,"network",data.network)}else if(data.type=="snmp"){form.attr("action",http_prefix+"/lua/pro/enterprise/snmp_interface_details.lua");NtopUtils._add_find_host_link(form,"snmp_port_idx",data.snmp_port_idx)}else if(data.type=="snmp_device"){form.attr("action",http_prefix+"/lua/pro/enterprise/snmp_device_details.lua")}else if(data.type=="asn"){form.attr("action",http_prefix+"/lua/hosts_stats.lua");NtopUtils._add_find_host_link(form,"asn",data.asn)}else{form.attr("action",http_prefix+"/lua/host_details.lua");NtopUtils._add_find_host_link(form,"mode","restore")}return true}}static tstampToDateString(html_tag,format,tdiff){tdiff=tdiff||0;var timestamp=parseInt(html_tag.html())+tdiff;var localized=d3.time.format(format)(new Date(timestamp*1e3));html_tag.html(localized).removeClass("hidden");return localized}static noHtml(s){return s.replace(/<[^>]+>/g,"")}static cleanCustomHostUrl(host){return host.replace(/^http:\/\//gi,"").replace(/^https:\/\//gi,"").replace(/^www\./gi,"").replace(/[^0-9a-zA-Z\.:\/_-]/gi,"")}static parseQuery(queryString){var query={};var pairs=(queryString[0]==="?"?queryString.substr(1):queryString).split("&");for(var i=0;i{if(response.rc<0){$("#import-error").text(response.rc_str).show();return}if(params.successCallback){params.successCallback(response)}const key=$(`input[name='configuration']:checked`).val();const body=key=="all"?i18n.manage_configurations.messagges.import_all_success:i18n.manage_configurations.messagges.import_success;ToastUtils.showToast({id:"import-configuration-alert",level:"success",title:i18n.success,body:body,delay:2e3});$("#import-modal").modal("hide")}).fail(({responseJSON:responseJSON})=>{const PARTIAL_IMPORT_RC=-28;if(params.failureCallback){params.failureCallback(responseJSON)}if(responseJSON&&responseJSON.rc>0)return;if(responseJSON.rc==PARTIAL_IMPORT_RC)$(`#import-error`).removeClass("invalid-feedback").addClass("text-warning");$("#import-error").text(i18n.rest_consts[responseJSON.rc_str]||i18n.FAILED_HTTP_REQUEST).show()}).always(()=>{$button.removeAttr("disabled")})}})}static serializeFormArray(serializedArray){const serialized={};serializedArray.forEach(obj=>{if(obj.name.includes("[]")){return}else{if(typeof obj.value==="string"){obj.value=obj.value.trim()}serialized[obj.name]=obj.value}});return serialized}static cleanForm(formSelector){$(formSelector).find("input,select,textarea").each(function(i,input){$(this).removeClass(`is-valid`).removeClass(`is-invalid`)});$(formSelector)[0].reset()}static fetchWithTimeout(uri,options={},time=5e3){const controller=new AbortController;const config={...options,signal:controller.signal};const timeout=setTimeout(()=>{controller.abort()},time);return fetch(uri,config).then(response=>{if(!response.ok){throw new Error(`${response.status}: ${response.statusText}`)}return response}).catch(error=>{if(error.name==="AbortError"){throw new Error("Response timed out")}})}static setPref(action,csrf,success,failure){if(action==undefined){console.warn("An action key must be defined to set a preference!");return}const empty=()=>{};const request=$.post(`${http_prefix}/lua/update_prefs.lua`,{action:action,csrf:csrf});request.done(success||empty);request.fail(failure||empty)}static arrayToListString(array,limit){if(array==undefined)return"";if(array.length>limit){return array.slice(0,limit).join(", ")+` ${i18n.and_x_more.replace("$num",array.length-limit)}`}return array.slice(0,limit).join(", ")}static buildURL(location,params={},hasReferer=false,refererParams={}){const url=new URL(location,window.location);for(const[name,value]of Object.entries(params)){if(!value)continue;url.searchParams.set(name,value)}if(hasReferer){const refUrl=new URL(window.location.href);for(const[name,value]of Object.entries(refererParams)){if(!value)continue;refUrl.searchParams.set(name,value)}url.searchParams.set("referer",refUrl.toString())}return url.toString()}static getEditPoolLink(href,poolId){const url=new URL(href,window.location);url.searchParams.set("pool_id",poolId);return url.toString()}static getPoolLink(poolType,poolId=0){return`${http_prefix}/lua/rest/v1/get/${poolType}/pools.lua?pool=${poolId}`}static async getPool(poolType,id=0){if(poolType===null)throw"A pool type must be defined!";try{const request=await fetch(NtopUtils.getPoolLink(poolType,id));const pool=await request.json();if(pool.rc<0){return[false,{}]}return[true,pool.rsp[0]]}catch(err){return[false,{}]}}static saveElementScale($element,scale={width:0,height:0}){const key=NtopUtils.generateScaleElementKey($element);localStorage.setItem(key,JSON.stringify(scale))}static generateScaleElementKey($element){let identificator;const page=location.pathname;const elementId=$element.attr("id");if(elementId!==""){identificator=elementId}else{const className=$element.attr("class");identificator=className}const key=`${identificator}-${page}-scale`;return key}static loadElementScale($element){const key=NtopUtils.generateScaleElementKey($element);const currentValue=localStorage.getItem(key);if(currentValue==null)return undefined;return JSON.parse(currentValue)}static fillFieldIfValid($field,value){if(value===undefined){$field.val("")}else{$field.val(value)}}}$(function(){NtopUtils.initDataPatterns()});var schema_2_label={};var data_2_label={};var graph_i18n={};function initLabelMaps(_schema_2_label,_data_2_label,_graph_i18n){schema_2_label=_schema_2_label;data_2_label=_data_2_label;graph_i18n=_graph_i18n}function getSerieLabel(schema,serie,visualization,serie_index){var data_label=serie.label;var new_label=data_2_label[data_label];if(visualization&&visualization.metrics_labels&&visualization.metrics_labels[serie_index])return visualization.metrics_labels[serie_index];if(serie.ext_label){if(new_label)return serie.ext_label+" ("+new_label+")";else return serie.ext_label}else if(schema=="top:local_senders"||schema=="top:local_receivers"){if(serie.ext_label)return serie.ext_label;else return serie.tags.host}else if(schema.startsWith("top:")){if(serie.tags.protocol)return serie.tags.protocol;else if(serie.tags.category)return serie.tags.category;else if(serie.tags.l4proto)return serie.tags.l4proto;else if(serie.tags.dscp_class)return serie.tags.dscp_class;else if(serie.tags.device&&serie.tags.if_index){if(serie.ext_label!="")return serie.ext_label;else return"("+serie.tags.if_index+")"}else if(serie.tags.device&&serie.tags.port)return serie.tags.port;else if(serie.tags.exporter&&serie.tags.ifname)return serie.tags.ifname;else if(serie.tags.profile)return serie.tags.profile;else if(serie.tags.check)return serie.tags.check;else if(serie.tags.command)return serie.tags.command.substring(4).toUpperCase()}else if(data_label!="bytes"){if(serie.tags.protocol)return serie.tags.protocol+" ("+new_label+")";else if(serie.tags.category)return serie.tags.category+" ("+new_label+")";else if(serie.tags.device&&serie.tags.if_index)return serie.ext_label+" ("+new_label+")";else if(serie.tags.device&&serie.tags.port)return serie.tags.port+" ("+new_label+")"}else{if(serie.tags.protocol)return serie.tags.protocol;else if(serie.tags.category)return serie.tags.category;else if(serie.tags.profile)return serie.tags.profile;else if(data_label=="bytes"){if(schema.contains("volume"))return graph_i18n.traffic_volume;else return graph_i18n.traffic}}if(schema_2_label[schema])return NtopUtils.capitaliseFirstLetter(schema_2_label[schema]);if(new_label)return NtopUtils.capitaliseFirstLetter(new_label);return NtopUtils.capitaliseFirstLetter(data_label)}function getValueFormatter(schema,metric_type,series,custom_formatter,stats){if(series&&series.length&&series[0].label){if(custom_formatter){var formatters=[];if(typeof custom_formatter!="object")custom_formatter=[custom_formatter];for(var i=0;icount){console.error("points mismatch: serie '"+getSerieLabel(schema_name,series[i])+"' has "+data.length+" points, expected "+count);rv=false}else if(data.length.1)return res}function buildTimeArray(start_time,end_time,step){var arr=[];for(var t=start_time;t$.now())$("#btn-jump-time-ahead").addClass("disabled");else $("#btn-jump-time-ahead").removeClass("disabled")}function showQuerySlow(){$("#query-slow-alert").show()}function hideQuerySlow(){$("#query-slow-alert").hide()}function chart_data_sum(series){return series.reduce(function(acc,x){return acc+x.values.reduce(function(acc,pt){return acc+pt[1]||0},0)},0)}function redrawExtraLines(chart,chart_id,extra_lines){d3.selectAll(chart_id+" line.extra-line").remove();if(extra_lines.length>0){var xValueScale=chart.xAxis.scale();var yValueScale=chart.yAxis1.scale();var g=d3.select(chart_id+" .stack1Wrap");for(var i=0;i0||has_initial_zoom();let extra_lines=[];let unreachable_timestamps={};var spinner=$('');$chart.parent().css("position","relative");var chart_colors_full=["#69B87F","#94CFA4","#B3DEB6","#E5F1A6","#FFFCC6","#FEDEA5","#FFB97B","#FF8D6D","#E27B85"];var chart_colors_min=["#7CC28F","#FCD384","#FD977B"];var split_directions_colors=["#69B87F","#FF7C00","#FF4700"];function format_unreachable(formatter){return function(y,d){if(d&&unreachable_timestamps[d[0]])return i18n.unreachable_host;return formatter(y)}}var num_ticks_y1=null;var num_ticks_y2=null;var domain_y1=null;var domain_y2=null;var first_run=true;var update_chart_data=function(new_data){d3_sel.datum([]).call(chart);d3_sel.datum(new_data);d3_sel.transition().duration(500).call(chart);if(first_run){num_ticks_y1=chart.yAxis1.ticks();num_ticks_y2=chart.yAxis2.ticks();domain_y1=chart.yDomain1();domain_y2=chart.yDomain2();first_run=false}if(metric_type==="gauge"){var cur_domain_y1=chart.yAxis1.scale().domain();var cur_domain_y2=chart.yAxis2.scale().domain();cur_domain_y1=cur_domain_y1[1]-cur_domain_y1[0];cur_domain_y2=cur_domain_y2[1]-cur_domain_y2[0];if(chart.yAxis1.tickFormat()!=NtopUtils.ffloat)chart.yAxis1.ticks(Math.min(cur_domain_y1,num_ticks_y1));if(chart.yAxis2.tickFormat()!=NtopUtils.ffloat)chart.yAxis2.ticks(Math.min(cur_domain_y2,num_ticks_y2))}var y1_sum=chart_data_sum(new_data.filter(function(x){return x.yAxis==1}));var y2_sum=chart_data_sum(new_data.filter(function(x){return x.yAxis==2}));if(y1_sum==0)chart.yDomain1([0,1]);else chart.yDomain1(domain_y1);if(y2_sum==0)chart.yDomain2([0,1]);else chart.yDomain2(domain_y2);d3_sel.call(chart);nv.utils.windowResize(function(){chart.update();redrawExtraLines(chart,chart_id,extra_lines)});redrawExtraLines(chart,chart_id,extra_lines);spinner.remove()};function isLegendDisabled(key,default_val){if(typeof localStorage!=="undefined"){var val=localStorage.getItem("chart_series.disabled."+key);if(val!=null)return val==="true"}return default_val}chart.legend.dispatch.on("legendClick",function(d,i){manual_trigger_extra_series[d.legend_key]=true;if(typeof localStorage!=="undefined")localStorage.setItem("chart_series.disabled."+d.legend_key,!d.disabled?true:false)});chart.dispatch.on("zoom",function(e){var cur_zoom=[params.epoch_begin,params.epoch_end];var t_start=Math.floor(e.xDomain[0]);var t_end=Math.ceil(e.xDomain[1]);var old_zoomed=chart.is_zoomed;var is_user_zoom=typeof e.is_user_zoom!=="undefined"?e.is_user_zoom:true;chart.is_zoomed=true;if(chart.updateStackedChart(t_start,t_end,false,is_user_zoom)){if(is_user_zoom||e.push_state){current_zoom_level+=1;var url=NtopUtils.getHistoryParameters({epoch_begin:t_start,epoch_end:t_end});history.pushState({zoom_level:current_zoom_level,range:[t_start,t_end]},"",url)}chart.fixChartButtons()}else chart.is_zoomed=old_zoomed});function updateZoom(zoom,is_user_zoom,force){var t_start=zoom[0];var t_end=zoom[1];chart.updateStackedChart(t_start,t_end,false,is_user_zoom,null,force);chart.fixChartButtons()}chart.zoom_in=function(){var cur_interval=params.epoch_end-params.epoch_begin;if(cur_interval>60){var delta=cur_interval/4;$("#period_begin").datetimepicker("date",new Date((params.epoch_begin+delta)*1e3));$("#period_end").datetimepicker("date",new Date((params.epoch_end-delta)*1e3));updateChartFromPickers()}};chart.zoom_out=function(){var cur_interval=params.epoch_end-params.epoch_begin;var delta=cur_interval/2;$("#period_begin").datetimepicker("date",new Date((params.epoch_begin-delta)*1e3));$("#period_end").datetimepicker("date",new Date((params.epoch_end+delta)*1e3));updateChartFromPickers()};$chart.on("dblclick",function(event){if($(event.target).hasClass("nv-legend-text"))return;chart.zoom_out()});$zoom_reset.on("click",function(){if(current_zoom_level){history.go(-current_zoom_level)}});window.addEventListener("popstate",function(e){var zoom=initial_range;if(e.state){zoom=e.state.range;current_zoom_level=e.state.zoom_level}else current_zoom_level=0;updateZoom(zoom,true,true)});chart.fixChartButtons=function(){if(current_zoom_level>0||has_initial_zoom()){$graph_zoom.find(".btn-warning:not(.custom-zoom-btn)").addClass("initial-zoom-sel").removeClass("btn-warning");$graph_zoom.find(".custom-zoom-btn").css("visibility","visible");var zoom_link=$graph_zoom.find(".custom-zoom-btn");var link=zoom_link.val().replace(/&epoch_begin=.*/,"");link+="&epoch_begin="+params.epoch_begin+"&epoch_end="+params.epoch_end;zoom_link.val(link)}else{$graph_zoom.find(".initial-zoom-sel").addClass("btn-warning");$graph_zoom.find(".custom-zoom-btn").css("visibility","hidden");chart.is_zoomed=false}fixJumpButtons(params.epoch_begin,params.epoch_end);if(current_zoom_level>0)$zoom_reset.show();else $zoom_reset.hide()};function checkQueryCompleted(){var flows_dt=$("#chart1-flows");var wait_num_queries=ts_table_shown&&$("#chart1-flows").css("display")!=="none"?2:1;query_completed+=1;if(query_completed>=wait_num_queries){if(query_timer){clearInterval(query_timer);query_timer=null}hideQuerySlow()}}chart.queryWasAborted=function(){return query_was_aborted};chart.abortQuery=function(){query_was_aborted=true;if(pending_chart_request){pending_chart_request.abort();chart.noData(i18n.query_was_aborted);update_chart_data([])}if(pending_table_request)pending_table_request.abort();if(query_timer){clearInterval(query_timer);query_timer=null}hideQuerySlow()};chart.tableRequestCompleted=function(){checkQueryCompleted();pending_table_request=null};chart.getDataUrl=function(){var data_params=jQuery.extend({},params);delete data_params.zoom;delete data_params.ts_compare;data_params.extended=1;return url+"?"+$.param(data_params,true)};var old_start,old_end,old_interval;chart.updateStackedChart=function(tstart,tend,no_spinner,is_user_zoom,on_load_callback,force_update){if(tstart)params.epoch_begin=tstart;if(tend)params.epoch_end=tend;const series_formatted_labels={};const now=Date.now()/1e3;var cur_interval=params.epoch_end-params.epoch_begin;var actual_step=findActualStep(step,params.epoch_begin);max_interval=actual_step*6;if(cur_interval=now){params.epoch_begin=params.epoch_end-max_interval}else{params.epoch_begin=Math.floor(epoch-max_interval/2);params.epoch_end=Math.floor(epoch+max_interval/2)}is_max_zoom=true;chart.zoomType(null)}}else if(cur_interval>max_interval){is_max_zoom=false;chart.zoomType("x")}old_interval=cur_interval;if(!first_load||has_initial_zoom()||force_update)align_step=null;fixTimeRange(chart,params,align_step,actual_step);if(first_load)initial_range=[params.epoch_begin,params.epoch_end];if(old_start==params.epoch_begin&&old_end==params.epoch_end&&!force_update)return false;old_start=params.epoch_begin;old_end=params.epoch_end;if(pending_table_request)pending_table_request.abort();if(pending_chart_request)pending_chart_request.abort();else if(!no_spinner)spinner.appendTo($chart.parent());$("#period_begin").datetimepicker("date",new Date(params.epoch_begin*1e3));$("#period_end").datetimepicker("date",new Date(Math.min(params.epoch_end*1e3,$.now())));if(query_timer)clearInterval(query_timer);query_timer=setInterval(showQuerySlow,seconds_before_query_slow*1e3);query_completed=0;query_was_aborted=false;chart.noData(i18n.no_data_available);hideQuerySlow();var req_params=$.extend({},params);if(!canCompareBackwards(req_params.epoch_begin,req_params.epoch_end))delete req_params.ts_compare;if(visualization.show_unreachable)req_params.no_fill=1;pending_chart_request=$.get(url,req_params,function(data){data=data.rsp;if(data&&data.error)chart.noData(data.error);if(!data||!data.series||!data.series.length||!checkSeriesConsinstency(schema_name,data.count,data.series)){update_chart_data([]);return}var tick_step=Math.ceil(chart.tick_step/data.step)*data.step;chart.xAxis.tickValues(buildTimeArray(data.start,data.start+data.count*data.step,tick_step));chart.xAxis.tickFormat(function(d){return d3.time.format(chart.x_fmt)(new Date(d*1e3))});var res=[];var series=data.series;var total_serie;var color_i=0;var chart_colors=series.length<=chart_colors_min.length?chart_colors_min:chart_colors_full;for(var j=0;jmax_cmp_over_total_ratio)is_disabled=true;res.push({key:NtopUtils.capitaliseFirstLetter(key),yAxis:1,values:values,type:"line",classed:"line-dashed line-animated",color:"#7E91A0",legend_key:key,disabled:is_disabled})}}if(visualization&&visualization.extra_series){for(var i=0;imax_line_over_total_ratio)is_disabled=true;res.push({key:serie.label,yAxis:serie.axis||1,values:arrayToNvSerie(upsampleSerie([serie.value],data.count),data.start,data.step),type:serie.type||"line",color:serie.color||"red",classed:serie.class,legend_key:serie.label,disabled:is_disabled})}}if(!data.no_trend&&has_full_data&&total_serie.length>=3){var num_smoothed_points=Math.min(Math.max(Math.floor(total_serie.length/5),3),12);var smooth_functions={};function add_smoothed_serie(fn_to_use){var options=smooth_functions[fn_to_use];var smoothed;if(fn_to_use=="rsi"){if(!past_serie)return;var delta_serie=[];for(var i=0;i0){var aligned;if(fn_to_use!="ema"&&fn_to_use!="sma"&&fn_to_use!="rsi"){var scale=d3.max(total_serie)/max_val;var scaled=$.map(smoothed,function(x){return x*scale});aligned=upsampleSerie(scaled,data.count)}else{var remaining=data.count-smoothed.length;var to_fill=remaining0){var ref_serie=res[0].values;let tok=ref_serie[0][0];let was_unreachable=false;unreachable_timestamps={};for(var i=0;i")}else val=stats_formatter(stats[stats_name])+(show_date?" ("+new Date(res[0].values[stats[stats_name+"_idx"]][0]*1e3).format(datetime_format)+")":"");if(val)cell.show().find("span").html(val);return values}var total_cell=stats_table.find(".graph-val-total");var average_cell=stats_table.find(".graph-val-average");var min_cell=stats_table.find(".graph-val-min");var max_cell=stats_table.find(".graph-val-max");var perc_cell=stats_table.find(".graph-val-95percentile");if(stats.total||total_cell.is(":visible"))splitSeriesInfo("total",total_cell);if(stats.average||average_cell.is(":visible"))splitSeriesInfo("average",average_cell);if((stats.min_val||min_cell.is(":visible"))&&res[0].values[stats.min_val_idx])splitSeriesInfo("min_val",min_cell,true);if((stats.max_val||max_cell.is(":visible"))&&res[0].values[stats.max_val_idx])splitSeriesInfo("max_val",max_cell,true);if(stats["95th_percentile"]||perc_cell.is(":visible")){splitSeriesInfo("95th_percentile",perc_cell);if(!visualization.split_directions){var values=makeFlatLineValues(data.start,data.step,data.count,stats["95th_percentile"]);res.push({key:graph_i18n["95_perc"],yAxis:1,values:values,type:"line",classed:"line-dashed line-animated",color:"#476DFF",legend_key:"95perc",disabled:isLegendDisabled("95perc",true)})}}}stats_table.show();if(visualization.show_unreachable&&last_known_t&&last_known_t+data.step>now&&now0)serie[serie.length]=[now,serie[serie.length-1][1]]}}var enabled_series=res.filter(function(d){return d.disabled!==true});if(second_axis_series.length>0||enabled_series.length==0){for(var i=0;i0){chart.legend.updateState(false)}update_chart_data(res);first_time_loaded=false;if(data.source_aggregation)$("#data-aggr-dropdown > button > span:first").html(data.source_aggregation)}).fail(function(xhr,status,error){if(xhr.statusText=="abort"){return}console.error("Error while retrieving the timeseries data ["+status+"]: "+error);chart.noData(error);update_chart_data([])}).always(function(data,status,xhr){checkQueryCompleted();pending_chart_request=null});if(first_load){first_load=false;$(function(){var flows_dt=$("#chart1-flows").data("datatable");if(flows_dt)pending_table_request=flows_dt.pendingRequest})}else{var flows_dt=$("#chart1-flows");if(ts_table_shown){updateGraphsTableView(null,params);if($("#chart1-flows").css("display")!=="none")pending_table_request=flows_dt.data("datatable").pendingRequest}}if(typeof on_load_callback==="function")on_load_callback(chart);return true}}var graph_old_view=null;var graph_old_has_nindex=null;var graph_old_nindex_query=null;function tsQueryToTags(ts_query){return ts_query.split(",").reduce(function(params,value){var pos=value.indexOf(":");if(pos!=-1){var k=value.slice(0,pos);var v=value.slice(pos+1);params[k]=v}return params},{})}function recheckGraphTableEntries(){var table_view=graph_table_views;var tdiff=graph_params.epoch_end-graph_params.epoch_begin;var reset_selection=false;$("#chart1-flows").show();$("#graphs-table-selector").show();for(view_id in table_view){var view=table_view[view_id];var elem=$("#"+view.html_id);if(tdiff<=view.min_step){if(graph_old_view.id===view_id)reset_selection=true;elem.hide()}else elem.show()}var items_ul=$("#graphs-table-active-view").closest(".btn-group").find("ul:first");items_ul.find("li.dropdown-header").each(function(idx,e){var next_item=$(e).nextAll("li").filter(function(idx,e){return $(e).css("display")!=="none"||!$(e).attr("data-view-id")}).first();var divider=$(e).nextAll(".divider").first();if(!next_item.attr("data-view-id")){$(e).hide();divider.hide()}else{$(e).show();divider.show()}});if(reset_selection){var first_view=items_ul.find("li[data-view-id]").filter(function(idx,e){return $(e).css("display")!=="none"}).first();if(first_view.length)setActiveGraphsTableView(first_view.attr("data-view-id"));else{$("#chart1-flows").hide();$("#graphs-table-selector").hide()}return false}return true}function updateGraphsTableView(view,graph_params,has_nindex,nindex_query,per_page){if(view)graph_old_view=view;if(!recheckGraphTableEntries(graph_params)){return}if(view){graph_old_has_nindex=has_nindex;graph_old_nindex_query=nindex_query}else{view=graph_old_view;has_nindex=graph_old_has_nindex;nindex_query=graph_old_nindex_query}var graph_table=$("#chart1-flows");nindex_query=nindex_query+"&begin_time_clause="+graph_params.epoch_begin+"&end_time_clause="+graph_params.epoch_end;var nindex_buttons="";var params_obj=tsQueryToTags(graph_params.ts_query);if(!params_obj.host){nindex_buttons+='
"}nindex_buttons+='
";if(view.columns){var url=http_prefix+(view.nindex_view?"/lua/pro/get_nindex_flows.lua":"/lua/pro/get_ts_table.lua");var columns=view.columns.map(function(col){return{title:col[1],field:col[0],css:{textAlign:col[2],width:col[3]},hidden:col[4]?true:false}});columns.push({title:i18n.actions,field:"drilldown",css:{width:"1%","text-align":"center"}});var old_dt=graph_table.data("datatable");if(old_dt&&old_dt.pendingRequest)old_dt.pendingRequest.abort();graph_table.removeData("datatable");graph_table.html("");graph_table.datatable({title:"",url:url,perPage:per_page,noResultsMessage:function(){if(ts_chart.queryWasAborted())return i18n.query_was_aborted;else return i18n.no_results_found},post:function(){var params=$.extend({},graph_params);delete params.ts_compare;delete params.initial_point;params.limit=1;params.detail_view=view.id;return params},loadingYOffset:40,columns:columns,buttons:view.nindex_view?[nindex_buttons]:[],tableCallback:function(){var data=this.resultset;ts_chart.tableRequestCompleted();if(!data){return}if(data.currentPage>1)graph_table.data("has_interaction",true);var stats_div=$("#chart1-flows-stats");var has_drilldown=data&&data.data.some(function(row){return row.drilldown});if(!has_drilldown)$("table td:last-child, th:last-child",graph_table).remove();if(data&&data.stats&&data.stats.query_duration_msec){$("#flows-query-time").html(data.stats.query_duration_msec/1e3);$("#flows-processed-records").html(data.stats.num_records_processed);stats_div.show()}else stats_div.hide()},rowCallback:function(row,row_data){if(typeof row_data.tags==="object"&&(params_obj.category&&row_data.tags.category===params_obj.category||params_obj.protocol&&row_data.tags.protocol===params_obj.protocol)){row.addClass("info")}return row}})}}function draw_processes_graph(http_prefix,graph_div_id,host){var links;var nodes={};var url=http_prefix+"/lua/get_processes_graph_data.lua?host="+host;d3.json(url,function(error,json){if(error)return console.warn(error);links=json;var _link;links.forEach(function(link){if(link.source_pid==-1){_link=http_prefix+"/lua/host_details.lua?host="+link.source}else{_link=http_prefix+"/lua/process_details.lua?pid="+link.source_pid+"&pid_name="+link.source_name+"&host="+host+"&page=flows"}link.source=nodes[link.source]||(nodes[link.source]={name:link.source_name,num:link.source,link:_link,type:link.source_type,pid:link.source_pid});if(link.target_pid==-1){_link=http_prefix+"/lua/host_details.lua?host="+link.target}else{_link=http_prefix+"/lua/process_details.lua?pid="+link.target_pid+"&pid_name="+link.target_name+"&host="+host+"&page=flows"}link.target=nodes[link.target]||(nodes[link.target]={name:link.target_name,num:link.target,link:_link,type:link.target_type,pid:link.target_pid})});var width=960,height=500,arrow_size=6;var color=d3.scale.category10();color["proc"]="red";color["host"]="lightsteelblue";var force=d3.layout.force().nodes(d3.values(nodes)).links(links).size([width,height]).linkDistance(120).charge(-400).on("tick",tick).start();var svg=d3.select("#"+graph_div_id).append("svg").attr("id","ebpf_graph").attr("width",width).attr("height",height);svg.append("defs").selectAll("marker").data(["proc2proc","proc2host","host2proc","host2host"]).enter().append("marker").attr("id",function(d){return d}).attr("viewBox","0 -5 10 10").attr("refX",15).attr("refY",-1.5).attr("markerWidth",arrow_size).attr("markerHeight",arrow_size).attr("orient","auto").append("path").attr("d","M0,-5L10,0L0,5");var path=svg.append("g").selectAll("path").data(force.links()).enter().append("path").attr("class",function(d){return"link "+d.type}).attr("marker-end",function(d){return"url(#"+d.type+")"});var circle=svg.append("g").selectAll("circle").data(force.nodes()).enter().append("circle").attr("class","ebpf_circle").attr("r",8).style("fill",function(d){return color[d.type]}).call(force.drag).on("dblclick",function(d){window.location.href=d.link});var text=svg.append("g").selectAll("text").data(force.nodes()).enter().append("text").attr("class","ebpf_text").attr("x",12).attr("y",".31em").text(function(d){if(d.pid>=0)return d.name+" [pid: "+d.pid+"]";else{return d.name}});function tick(){path.attr("d",linkArc);circle.attr("transform",transform);text.attr("transform",transform)}function linkArc(d){var dx=d.target.x-d.source.x,dy=d.target.y-d.source.y,dr=Math.sqrt(dx*dx+dy*dy);return"M"+d.source.x+","+d.source.y+"A"+dr+","+dr+" 0 0,1 "+d.target.x+","+d.target.y}function transform(d){return"translate("+d.x+","+d.y+")"}})}function makeUniqueValidator(items_function){return function(field){var cmp_name=field.val();var count=0;if(!cmp_name)return true;items_function(field).each(function(){var name=$(this).val();if(name==cmp_name)count=count+1});return count==1}}function memberValueValidator(input){var member=input.val();if(member==="")return true;return NtopUtils.is_mac_address(member)||NtopUtils.is_network_mask(member,true)}function makePasswordPatternValidator(pattern){return function passwordPatternValidator(input){if(!input.val())return true;return $(input).val().match(pattern)}}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()}function poolnameValidator(input){if(!input.val())return true;return $(input).val().match(/^[a-z0-9_]*$/)}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")}function hostOrMacValidator(input){var host=input.val();if(host==="")return true;return NtopUtils.is_mac_address(host)||NtopUtils.is_good_ipv4(host)||NtopUtils.is_good_ipv6(host)}function ipAddressValidator(input){var host=input.val();if(host==="")return true;return NtopUtils.is_good_ipv4(host)||NtopUtils.is_good_ipv6(host)}(function($){class ModalHandler{constructor(form,options){if(typeof options.csrf==="undefined"){throw new Error("ModalHandler::Missing CSRF token!")}this.element=form;this.dialog=$(form).closest(".modal");this.options=options;this.csrf=options.csrf;this.dontDisableSubmit=options.dontDisableSubmit;this.observer=new MutationObserver(list=>{this.bindFormValidation();this.toggleFormSubmission();this.initDataPatterns()});this.observer.observe(this.element[0],{childList:true,subtree:true});this.initialState=null;this.currentState=null;this.firstCloseAttempt=false;this.isSubmitting=false;const submitButton=$(this.element).find(`[type='submit']`);if(submitButton.length==0){throw new Error("ModalHandler::The submit button was not found inside the form!")}this.toggleFormSubmission()}initDataPatterns(){NtopUtils.initDataPatterns()}createFormSnapshot(){const snapshot={inputs:{},hidden:[]};$(this.element).find('textarea,select,input[type!="radio"]').each(function(){const type=$(this).prop("nodeName").toLowerCase();const name=$(this).attr("name");snapshot.inputs[`${type}[name='${name}']`]=$(this).val()});$(this.element).find(`[style='display: none;'], span.invalid-feedback`).each(function(){snapshot.hidden.push($(this))});return snapshot}compareFormSnaphsot(s1,s2){if(s1==null||s2==null)return true;for(let[key,value]of Object.entries(s1.inputs)){if(s2.inputs[key]!=value)return false}return true}delegateModalClosing(){const self=this;$(this.dialog).find("button.cancel").off("click").click(function(){self.firstCloseAttempt=false;$(self.element)[0].reportValidity();$(self.dialog).find(".confirm-closing").fadeOut(100,function(){$(self.dialog).find("button.close").fadeIn(100)})});$(this.dialog).off("hide.bs.modal").on("hide.bs.modal",function(event){if(self.isSubmitting){event.preventDefault();return}if(self.compareFormSnaphsot(self.currentState,self.initialState)){return}if(self.firstCloseAttempt)return;event.preventDefault();self.firstCloseAttempt=true;$(self.dialog).find("button.close").fadeOut(100,function(){$(self.dialog).find(".confirm-closing").fadeIn(100)});return});$(this.dialog).off("hidden.bs.modal").on("hidden.bs.modal",function(event){for(const[selector,value]of Object.entries(self.initialState.inputs)){$(self.dialog).find(selector).val(value);$(self.dialog).find(selector).removeClass("is-invalid")}self.initialState.hidden.forEach($hidden=>{$hidden.hide()});self.element.find(`[type='submit']`).attr("disabled","disabled");self.currentState=null;self.firstCloseAttempt=false;$(self.dialog).find(".confirm-closing").fadeOut(100,function(){$(self.dialog).find("button.close").fadeIn(100)});self.cleanForm()})}fillFormModal(){return this.options.loadFormData()}invokeModalInit(data={}){const self=this;this.delegateModalClosing();this.data=data||this.fillFormModal();this.options.onModalInit(this.data,this);$(this.element).parents(".modal").on("show.bs.modal",function(){self.options.onModalShow()});this.initialState=this.createFormSnapshot();this.currentState=null;this.delegateResetButton()}delegateSubmit(){this.bindFormValidation();const self=this;this.submitHandler=function(e){if(!self.options.isSyncRequest){e.preventDefault();e.stopPropagation();self.makeRequest()}};$(this.element).on("submit",this.submitHandler)}bindFormValidation(){const self=this;$(this.element).find(`input,select,textarea`).each(async function(i,input){const $input=$(this);let timeoutId=-1;const validHostname=async()=>{const $spinner=$input.parent().find(".spinner-border");$input.attr("readonly",true);$spinner.show();const response=await NtopUtils.resolveDNS($(input).val());$input.removeAttr("readonly");$spinner.hide();if(response.rc<0){input.setCustomValidity(response.rc_str);return[false,i18n[response.rc_str]]}input.setCustomValidity("");return[true,"Success"]};const validInput=async validation=>{if(validation.data.resolveDNS&&$input.val().match(NtopUtils.REGEXES.domainName)){return await validHostname()}if(validation.data.cannotBeEmpty&&validation.isInputEmpty){input.setCustomValidity("Please fill the input.");return[false,validation.data.validationEmptyMessage||i18n.missing_field]}if(input.validity.patternMismatch){input.setCustomValidity("Pattern mismatch.");return[false,validation.data.validationMessage||i18n.invalid_field]}if(input.validity.rangeOverflow){input.setCustomValidity("Value exceed the maximum value.");return[false,validation.data.rangeOverflowMessage||i18n.invalid_field]}if(input.validity.rangeUnderflow){input.setCustomValidity("Value is under the minimum value.");return[false,validation.data.rangeUnderflowMessage||i18n.invalid_field]}input.setCustomValidity("");return[true,"Success"]};const checkValidation=async()=>{const validation={data:{validationMessage:$input.data("validationMessage"),validationEmptyMessage:$input.data("validationEmptyMessage"),cannotBeEmpty:$input.attr("required")==="required"||$input.data("validationNotEmpty")==true,resolveDNS:$input.data("validationResolvedns"),rangeOverflowMessage:$input.data("validationRangeOverflowMessage"),rangeUnderflowMessage:$input.data("validationUnderflowOverflowMessage")},isInputEmpty:typeof $input.val()==="string"?$input.val().trim()=="":false};const[isValid,messageToShow]=await validInput(validation);let $error=$input.parent().find(`.invalid-feedback`);if($error.length==0){$error=$(``)}if(!isValid){$input.addClass("is-invalid");$input.parent().append($error);$error.text(messageToShow)}else{$input.removeClass("is-invalid");$error.fadeOut(500,function(){$(this).remove()})}};$(this).off("input").on("input",function(e){self.currentState=self.createFormSnapshot();if(timeoutId!=-1)clearTimeout(timeoutId);if(!$input.attr("formnovalidate")){timeoutId=setTimeout(()=>{checkValidation();self.toggleFormSubmission()},300);self.firstCloseAttempt=false}});$(this).off("invalid").on("invalid",function(e){e.preventDefault();if(!$input.attr("formnovalidate")){checkValidation()}})})}getModalID(){return $(this.element).parents(".modal").attr("id")}toggleFormSubmission(){let isValid=true;$(this.element).find("input:not(:disabled),select:not(:disabled),textarea:not(:disabled)").each(function(idx,input){isValid&=input.validity.valid});isValid?$(this.element).find(`[type='submit'],[type='test']`).removeAttr("disabled"):$(this.element).find(`[type='submit'],[type='test']`).attr("disabled","disabled")}cleanForm(){$(this.element).find("input,textarea,select").each(function(i,input){$(this).removeClass(`is-valid`).removeClass(`is-invalid`)});$(this.element)[0].reset()}makeRequest(){const $feedbackLabel=$(this.element).find(`.invalid-feedback`);const submitButton=$(this.element).find(`[type='submit']`);let dataToSend=this.options.beforeSumbit(this.data);dataToSend.csrf=this.csrf;dataToSend=$.extend(dataToSend,this.options.submitOptions);submitButton.attr("disabled","disabled");const self=this;if(this.options.endpoint){let request;if(self.options.method=="post"){request=$.ajax({url:this.options.endpoint,data:JSON.stringify(dataToSend),method:self.options.method,dataType:"json",contentType:"application/json; charset=utf-8"})}else{request=$.get(this.options.endpoint,dataToSend)}this.isSubmitting=true;request.done(function(response,textStatus){self.isSubmitting=false;self.currentState=null;if(self.options.resetAfterSubmit)self.cleanForm();$feedbackLabel.hide();const success=self.options.onSubmitSuccess(response,dataToSend,self);if(success){self.dialog.modal("hide")}$(self.element).off("submit",self.submitHandler);self.delegateSubmit()}).fail(function(jqxhr,textStatus,errorThrown){self.isSubmitting=false;const response=jqxhr.responseJSON;if(response.rc!==undefined&&response.rc<0){$feedbackLabel.html(i18n.rest[response.rc_str]).show()}self.options.onSubmitError(response,dataToSend,textStatus,errorThrown)}).always(function(d){submitButton.removeAttr("disabled")})}else{self.currentState=null;$feedbackLabel.hide();const success=self.options.onSubmitSuccess({},dataToSend,self);if(success){self.dialog.modal("hide")}$(self.element).off("submit",self.submitHandler);self.delegateSubmit();submitButton.removeAttr("disabled")}}delegateResetButton(){const self=this;const resetButton=$(this.element).find(`[type='reset']`);if(resetButton.length==0)return;const defaultValues=NtopUtils.serializeFormArray($(this.element).serializeArray());resetButton.click(function(e){e.preventDefault();$(self.element).find("input:visible,select").each(function(i,input){const key=$(input).attr("name");$(input).val(defaultValues[key]).removeClass("is-invalid").removeClass("is-valid")})})}}$.fn.modalHandler=function(args){if(this.length!=1)throw new Error("Only a form element can by initialized!");const options=$.extend({csrf:"",endpoint:"",resetAfterSubmit:true,dontDisableSubmit:false,isSyncRequest:false,method:"get",loadFormData:function(){},onModalInit:function(loadedData){},onModalShow:function(){},beforeSumbit:function(){return{}},onSubmitSuccess:function(response){},onSubmitError:function(sent,textStatus,errorThrown){},onModalReset:function(defaultData){}},args);const mh=new ModalHandler(this,options);mh.delegateSubmit();return mh}})(jQuery);function datatableRemoveEmptyRow(table){$("tbody tr.emptyRow",$(table)).remove()}function datatableAddEmptyRow(table,empty_str){var columns=$("thead th",$(table)).filter(function(){return $(this).css("display")!="none"}).length;$("tbody",$(table)).html(''+empty_str+"")}function datatableGetNumDisplayedItems(table){return $("tr:not(.emptyRow)",$(table)).length-1}function datatableIsEmpty(table){return datatableGetNumDisplayedItems(table)==0}function datatableGetByForm(form){return $("table",$("#dt-top-details",$(form)).parent())}function datatableUndoAddRow(new_row,empty_str,bt_to_enable,callback_str){if(bt_to_enable)$(bt_to_enable).removeAttr("disabled").removeClass("disabled");var form=$(new_row).closest("form");$(new_row).remove();aysUpdateForm(form);var dt=datatableGetByForm(form);if(datatableIsEmpty(dt))datatableAddEmptyRow(dt,empty_str);if(callback_str)window[callback_str](new_row)}function datatableForEachRow(table,callbacks){$("tr:not(:first)",table).each(function(row_i){if(typeof callbacks==="function"){callbacks.bind(this)(row_i)}else{var i;for(i=0;i"))}$("td:nth-child("+td_idx+")",$(this)).find(".d-flex").append(''+label+"")}function datatableAddDeleteButtonCallback(td_idx,callback_str,label){datatableAddButtonCallback.bind(this)(td_idx,label,"btn-danger",callback_str,"javascript:void(0)",true,"Delete")}function datatableAddActionButtonCallback(td_idx,callback_str,label,visible=true,title=""){datatableAddButtonCallback.bind(this)(td_idx,label,"btn-info",callback_str,"javascript:void(0)",visible,title)}function datatableAddFilterButtonCallback(td_idx,callback_str,label,title="",visible=true){datatableAddButtonCallback.bind(this)(td_idx,label,"btn-warning",callback_str,"javascript:void(0)",visible,title)}function datatableAddLinkButtonCallback(td_idx,link,label,title=""){datatableAddButtonCallback.bind(this)(td_idx,label,"btn-info","",link,true,title)}function datatableMakeSelectUnique(tr_obj,added_rows_prefix,options){options=NtopUtils.paramsExtend({on_change:$.noop,selector_fn:function(obj){return obj.find("select").first()}},options);function datatableForeachSelectOtherThan(this_select,added_rows_prefix,selector_fn,callback){$("[id^="+added_rows_prefix+"]").each(function(){var other=selector_fn($(this));if(other[0]!=this_select[0])callback(other)})}function datatableOptionChangeStatus(option_obj,enable){if(enable){option_obj.removeAttr("disabled")}else{var select_obj=option_obj.closest("select");var should_reset=select_obj.val()==option_obj.val();option_obj.attr("disabled","disabled");if(should_reset){var new_val=select_obj.find("option:not([disabled])").first().val();select_obj.val(new_val);select_obj.attr("data-old-val",new_val)}}}function datatableOnSelectEntryChange(added_rows_prefix,selector_fn,change_callback){var old_value=$(this).attr("data-old-val")||"";var new_value=$(this).val()||"";var others=[];if(old_value==new_value)old_value="";datatableForeachSelectOtherThan($(this),added_rows_prefix,selector_fn,function(other){datatableOptionChangeStatus(other.find("option[value='"+old_value+"']"),true);datatableOptionChangeStatus(other.find("option[value='"+new_value+"']"),false);others.push(other)});change_callback($(this),old_value,new_value,others,datatableOptionChangeStatus);$(this).attr("data-old-val",new_value)}function datatableOnAddSelectEntry(select_obj,added_rows_prefix,selector_fn){select_obj.val("");datatableForeachSelectOtherThan(select_obj,added_rows_prefix,selector_fn,function(other){other.trigger("change")});var new_sel=select_obj.find("option:not([disabled])").first();var new_val=new_sel.val();select_obj.val(new_val);select_obj.trigger("change")}var select=options.selector_fn(tr_obj);select.on("change",function(){datatableOnSelectEntryChange.bind(this)(added_rows_prefix,options.selector_fn,options.on_change)});select.on("remove",function(){$(this).val("").trigger("change")});datatableOnAddSelectEntry(select,added_rows_prefix,options.selector_fn)}function datatableOrderedInsert(table,td_idx,to_insert,to_insert_val,cmp_fn){var cmp_fn=cmp_fn||function(a,b){return b-a};var inserted=false;datatableForEachRow(table,function(){if(inserted)return;var tr=$(this);var cmp_val=parseInt($("td:nth-child("+td_idx+")",tr).html());if(!isNaN(cmp_val)&&cmp_fn(cmp_val,to_insert_val)<0){tr.before(to_insert);inserted=true}});if(!inserted)$(table).append(to_insert)}function datatableIsLastPage(table){var lastpage=$("#dt-bottom-details .pagination li:nth-last-child(3)",$(table));return!(lastpage.length==1&&lastpage.hasClass("active")==false)}function datatableGetColumn(table,id_key,id_value){var res=table.data("datatable").resultset.data.filter(function(item){return item[id_key]===id_value});if(res)return res[0]}function datatableGetColumnIndex(table,column_key){var index=table.data("datatable").options.columns.findIndex(function(item){return item.field===column_key});return index}function datatableInitRefreshRows(table,column_id,refresh_interval,trend_columns){var $dt=table.data("datatable");var rows=$dt.resultset.data;var old_timer=table.data("dt-rr-timer");var old_req=table.data("dt-rr-ajax");trend_columns=trend_columns||{};if(old_timer){clearInterval(old_timer);table.removeData("dt-rr-timer")}if(old_req){old_req.abort();table.removeData("dt-rr-ajax")}var ids=[];var id_to_row={};for(var row in rows){var data=rows[row];if(data[column_id]){var data_id=data[column_id];id_to_row[data_id]=row;ids.push(data_id)}}if(!ids)return false;var params={custom_hosts:ids.join(",")};var url=$dt.options.url;var first_load=true;var _process_result=function(result){if(typeof result==="string")result=JSON.parse(result);if(!result){console.error("Bad JSON result");return}for(var row in result.data){var data=result.data[row];var data_id=data[column_id];if(data_id&&id_to_row[data_id]){var row_idx=id_to_row[data_id];var row_html=$dt.rows[row_idx];var row_tds=$("td",row_html);for(var key in data){var col_idx=datatableGetColumnIndex(table,key);var cell=row_tds[col_idx];var $cell=$(cell);var old_val=$cell.data("dt-rr-cur-val")||$(cell).html();var trend_value_formatter=trend_columns[key];var new_val=data[key];var arrows="";if(trend_value_formatter){if(parseFloat(new_val)!=new_val)console.warn("Invalid number: "+new_val);if(!first_load)arrows=" "+NtopUtils.drawTrend(parseFloat(new_val),parseFloat(old_val));$cell.data("dt-rr-cur-val",new_val);new_val=trend_value_formatter(new_val)}$(cell).html(new_val!=0?new_val+arrows:"")}}}first_load=false;table.removeData("dt-rr-ajax")};table.data("dt-rr-timer",setInterval(function(){var old_req=table.data("dt-rr-ajax");if(old_req)return;table.data("dt-rr-ajax",$.ajax({type:"GET",url:url,data:params,cache:false,success:_process_result}))},refresh_interval));_process_result($dt.resultset)}jQuery.fn.dataTableExt.sErrMode="console";jQuery.fn.dataTableExt.formatSecondsToHHMMSS=((data,type,row)=>{if(isNaN(data))return data;if(type=="display"&&data<=0)return" ";if(type=="display")return NtopUtils.secondsToTime(data);return data});jQuery.fn.dataTableExt.absoluteFormatSecondsToHHMMSS=((data,type,row)=>{if(isNaN(data))return data;if(type=="display"&&data<=0)return" ";const delta=Math.floor(Date.now()/1e3)-data;if(type=="display")return NtopUtils.secondsToTime(delta);return data});jQuery.fn.dataTableExt.sortBytes=((byte,type,row)=>{if(type=="display")return NtopUtils.bytesToSize(byte);return byte});jQuery.fn.dataTableExt.hideIfZero=((value,type,row)=>{if(type==="display"&&parseInt(value)===0)return"";return value});jQuery.fn.dataTableExt.showProgress=((percentage,type,row)=>{if(type==="display"){const fixed=percentage.toFixed(1);return`\n
\n \n \n \n ${fixed}%\n
\n `}return percentage});$.fn.dataTable.Api.registerPlural("columns().names()","column().name()",function(setter){return this.iterator("column",function(settings,column){var col=settings.aoColumns[column];if(setter!==undefined){col.sName=setter;return this}else{return col.sName}},1)});class DataTableFiltersMenu{constructor({tableAPI:tableAPI,filterMenuKey:filterMenuKey,filterTitle:filterTitle,filters:filters,columnIndex:columnIndex}){this.rawFilters=filters;this.tableAPI=tableAPI;this.filterTitle=filterTitle;this.filterMenuKey=filterMenuKey;this.columnIndex=columnIndex;this.preventUpdate=false;this.currentFilterSelected=undefined;this.$datatableWrapper=$(tableAPI.context[0].nTableWrapper)}get selectedFilter(){return this.currentFilterSelected}init(){const self=this;this.$datatableWrapper.on("init.dt",function(){self._render(self.rawFilters)});this.tableAPI.on("draw",function(){self._update()});return self}_countEntries(regex,data=[]){if(regex===undefined){console.error("DataTableFiltersMenu::_countEntries() => the passed regex is undefined!")}const reg=new RegExp(regex);return data.filter(cellValue=>reg.test(cellValue)).length}_createMenuEntry(filter){const self=this;const $entry=$(``);if(filter.countable===undefined||filter.countable){const data=this.tableAPI.columns(this.columnIndex).data()[0];const count=this._countEntries(filter.regex,data);const $counter=$(`(${count})`);if(count==0)$entry.hide();$entry.append($counter)}$entry.click(function(e){self.preventUpdate=true;if(self.$dropdown.title.parent().find(`i.fas`).length==0){self.$dropdown.title.parent().prepend(``)}const newContent=$entry.html();self.$dropdown.title.html(newContent);self.$dropdown.container.find("li").removeClass(`active`);$entry.addClass(`active`);if(filter.callback)filter.callback();self.tableAPI.column(self.columnIndex).search(filter.regex,true,false).draw();self.currentFilterSelected=filter});return $entry}_createFilters(filters){const filtersCreated={};for(const filter of filters){const $filter=this._createMenuEntry(filter);filtersCreated[filter.key]={filter:filter,$node:$filter}}return filtersCreated}_render(filters){const $dropdownContainer=$(``);const $dropdownButton=$(``);const $dropdownTitle=$(`${this.filterTitle}`);$dropdownButton.append($dropdownTitle);this.filters=this._createFilters(filters);this.$dropdown={container:$dropdownContainer,title:$dropdownTitle,button:$dropdownButton};const $menuContainer=$(``);for(const[_,filter]of Object.entries(this.filters)){$menuContainer.append(filter.$node)}const allFilter=this._generateAllFilter();$menuContainer.prepend(this._createMenuEntry(allFilter));$dropdownContainer.append($dropdownButton);$dropdownContainer.append($menuContainer);$dropdownContainer.insertBefore(this.$datatableWrapper.find(".dataTables_filter").parent());this._selectFilterFromState(this.filterMenuKey)}_selectFilterFromState(filterKey){if(!this.tableAPI.state)return;if(!this.tableAPI.state.loaded())return;if(!this.tableAPI.state.loaded().filters)return;tableAPI.state.save()}_generateAllFilter(){return{key:"all",label:i18n.all,regex:"",countable:false,callback:()=>{this.$dropdown.title.parent().find("i.fas.fa-filter").remove();this.$dropdown.title.html(`${this.filterTitle}`)}}}_update(){if(this.filters===undefined)return;if(this.preventUpdate){this.preventUpdate=false;return}for(const[_,filter]of Object.entries(this.filters)){if(filter.countable==false)continue;const data=this.tableAPI.columns(this.columnIndex).data()[0];const count=this._countEntries(filter.filter.regex,data);count==0?filter.$node.hide():filter.$node.show();filter.$node.find(".counter").text(`(${count})`);this.$dropdown.button.find(".counter").text(`(${count})`)}}}class DataTableRangeFiltersMenu extends DataTableFiltersMenu{constructor(params){super(params);const self=this;this.selectedMin=Number.MIN_VALUE;this.selectedMax=Number.MAX_VALUE;$.fn.dataTable.ext.search.push(function(settings,data,dataIndex){const min=self.selectedMin||Number.MIN_VALUE;const max=self.selectedMax||Number.MAX_VALUE;const currentValue=parseFloat(data[params.columnIndex])||0;return isNaN(min)&&isNaN(max)||isNaN(min)&¤tValue<=max||min<=currentValue&&isNaN(max)||min<=currentValue&¤tValue<=max});this.tableAPI.draw();params.rawFilters=params.filters.map(filter=>{filter.regex="";filter.min=filter.min||Number.MIN_VALUE;filter.max=filter.max||Number.MAX_VALUE;filter.countable=false;filter.callback=(()=>{self.selectedMax=filter.max;self.selectedMin=filter.min;self.tableAPI.draw()});return filter})}_generateAllFilter(){const all=super._generateAllFilter();const oldCallback=all.callback;all.callback=(()=>{oldCallback();this.selectedMin=Number.MIN_VALUE;this.selectedMax=Number.MAX_VALUE;this.tableAPI.draw()});return all}}class DataTableUtils{static getStdDatatableConfig(dtButtons=[],dom="<'row'<'col-sm-12 col-md-6'l><'col-sm-12 col-md-6 text-end'<'dt-search'f>B>rtip>"){if(dtButtons.length==0){dom="fBrtip"}return{dom:dom,pagingType:"full_numbers",lengthMenu:[[10,25,50,-1],[10,25,50,`${i18n.all}`]],language:{info:i18n.showing_x_to_y_rows,search:i18n.script_search,infoFiltered:"",paginate:{previous:"<",next:">",first:"«",last:"»"}},saveState:true,responsive:true,buttons:{buttons:dtButtons,dom:{button:{className:"btn btn-link"},container:{className:"d-inline-block"}}}}}static createActionButtons(actions=[]){const buttons=[];actions.forEach(action=>{let button=`\n \n \n \n `;buttons.push(button)});return`
${buttons.join("")}
`}static setAjaxConfig(config,url,dataSrc="",method="get",params={}){config.ajax={url:url,type:method,dataSrc:dataSrc,data:function(d){return $.extend({},d,params)}};return config}static extendConfig(config,extension){if(extension.hasFilters){extension.stateSaveCallback=function(settings,data){localStorage.setItem("DataTables_"+settings.sInstance,JSON.stringify(data))};extension.stateLoadCallback=function(settings){return JSON.parse(localStorage.getItem("DataTables_"+settings.sInstance))};extension.stateSaveParams=function(settings,data){$("[data-filter]").each(function(){const activeFilter=$(this).find(`li.active`).data("filter-key");if(!activeFilter)return;if(!data.filters)data.filters={};data.filters[$(this).data("filter")]=activeFilter})}}return $.extend({},config,extension)}static secondsToHHMMSS(seconds){const padZeroes=n=>`${n}`.padStart(2,"0");const sec=seconds%60;const mins=Math.floor(seconds/60)%60;const hours=Math.floor(seconds/3600);return`${padZeroes(hours)}:${padZeroes(mins)}:${padZeroes(sec)}`}static openEditModalByQuery(params){const urlParams=new URLSearchParams(window.location.search);if(!urlParams.has(params.paramName))return;const dataID=urlParams.get(params.paramName);const data=params.datatableInstance.data().toArray().find(data=>data[params.paramName]==dataID);if(typeof params.cancelIf==="function"){if(params.cancelIf(data))return}const $modal=$(`#${params.modalHandler.getModalID()}`);if(data!==undefined){params.modalHandler.invokeModalInit(data);$modal.modal("show")}if(!urlParams.has("referer")){$modal.on("hidden.bs.modal",function(e){const url=new URL(window.location.href);url.searchParams.delete(params.paramName);history.replaceState({},"",url.toString())});return}const referer=urlParams.get("referer");$modal.on("hidden.bs.modal",function(e){window.location=referer})}static addToggleColumnsDropdown(tableAPI,toggleCallback=((col,visible)=>{})){if(tableAPI===undefined){throw"The $table is undefined!"}const tableID=tableAPI.table().node().id;DataTableUtils._loadColumnsVisibility(tableAPI).then(function(fetchedData){let savedColumns=[-1];if(fetchedData.success){savedColumns=fetchedData.columns.map(i=>parseInt(i))}else{console.warn(fetchedData.message)}const columns=[];const ignoredColumns=[];const $datatableWrapper=$(tableAPI.context[0].nTableWrapper);tableAPI.columns().every(function(i){if(!tableAPI.column(i).visible()){ignoredColumns.push(i);return}columns.push({index:i,name:this.header().textContent})});const $btnGroup=$(`\n
\n \n
\n `);const $dropdownMenu=$(``);const $checkboxes=$(`
`);for(let i=0;i`);const $wrapper=$(`\n
\n \n
\n `);$checkbox.on("change",function(e){const col=tableAPI.column(column.index);col.visible(!col.visible());const visible=col.visible();const hiddenColumns=[];tableAPI.columns().every(function(i){if(tableAPI.column(i).visible()||ignoredColumns.indexOf(i)!==-1)return;hiddenColumns.push(i)});$.post(`${http_prefix}/lua/datatable_columns.lua`,{action:"save",table:tableID,columns:hiddenColumns.join(","),csrf:window.__CSRF_DATATABLE__}).then(function(data){if(data.success)return;console.warn(data.message)});if(toggleCallback!==undefined){toggleCallback(col,visible)}});$wrapper.prepend($checkbox);$checkboxes.append($wrapper)}$dropdownMenu.on("click.bs.dropdown",function(e){e.stopPropagation()});$btnGroup.append($dropdownMenu.append($checkboxes));$datatableWrapper.find(".dt-search").parent().append($btnGroup)})}static async _loadColumnsVisibility(tableAPI){const tableID=tableAPI.table().node().id;return $.get(`${http_prefix}/lua/datatable_columns.lua?table=${tableID}&action=load`)}}class DataTableRenders{static alertSeverityAndType(severity,type,alert){return`${DataTableRenders.formatValueLabel(severity,type,alert)} ${DataTableRenders.formatValueLabel(alert.alert_id,type,alert)}`}static hideIfZero(obj,type,row){let color=obj.color!==undefined?obj.color:"#aaa";let value=obj.value!==undefined?obj.value:obj;if(type==="display"&&parseInt(value)===0)color="#aaa";let span=`${NtopUtils.fint(value)}`;if(obj.url!==undefined)span=`${span}`;return span}static secondsToTime(seconds,type,row){if(type==="display")return NtopUtils.secondsToTime(seconds);return seconds}static filterize(key,value,label,tag_label){return`${label||value}`}static formatValueLabel(obj,type,row){if(type!=="display")return obj.value;let cell=obj.label;if(obj.color)cell=`${cell}`;return cell}static formatSubtype(obj,type,row){if(type!=="display")return obj;let label=DataTableRenders.filterize("subtype",obj,obj);return label}static formatHost(obj,type,row){if(type!=="display")return obj;let html_ref="";if(obj.reference!==undefined)html_ref=obj.reference;let label=obj.shown_label||obj.label;label=DataTableRenders.filterize("ip",obj.value,label);if(row.role&&row.role.value=="attacker")label=label+" "+DataTableRenders.filterize("role",row.role.value,'',row.role.label);else if(row.role&&row.role.value=="victim")label=label+" "+DataTableRenders.filterize("role",row.role.value,'',row.role.label);return label+" "+html_ref}static formatFlowTuple(flow,type,row){let active_ref=flow.active_url?``:"";let historical_ref=flow.historical_url?``:"";let cliLabel=DataTableRenders.filterize("cli_ip",flow.cli_ip.value,flow.cli_ip.label);let cliPortLabel=flow.cli_port&&flow.cli_port>0?":"+DataTableRenders.filterize("cli_port",flow.cli_port,flow.cli_port):"";let srvLabel=DataTableRenders.filterize("srv_ip",flow.srv_ip.value,flow.srv_ip.label);let srvPortLabel=flow.cli_port&&flow.cli_port>0?":"+DataTableRenders.filterize("srv_port",flow.srv_port,flow.srv_port):"";let cliIcons="";let srvIcons="";if(row.cli_role){if(row.cli_role.value=="attacker")cliIcons+=DataTableRenders.filterize("roles","has_attacker",'',row.cli_role.tag_label);else if(row.cli_role.value=="victim")cliIcons+=DataTableRenders.filterize("roles","has_victim",'',row.cli_role.tag_label)}if(row.srv_role){if(row.srv_role.value=="attacker")srvIcons+=DataTableRenders.filterize("roles","has_attacker",'',row.srv_role.tag_label);else if(row.srv_role.value=="victim")srvIcons+=DataTableRenders.filterize("roles","has_victim",'',row.srv_role.tag_label)}return`${active_ref} ${historical_ref} ${cliLabel}${cliPortLabel} ${cliIcons} ${flow.cli_ip.reference} ${srvLabel}${srvPortLabel} ${srvIcons} ${flow.srv_ip.reference}`}static formatNameDescription(obj,type,row){if(type!=="display")return obj.name;let msg=DataTableRenders.filterize("alert_id",obj.value,obj.name);if(obj.description){const strip_tags=function(html){let t=document.createElement("div");t.innerHTML=html;return t.textContent||t.innerText||""};let desc=strip_tags(obj.description);if(desc.startsWith(obj.name))desc=desc.replace(obj.name,"");let name_len=strip_tags(obj.name).length;let desc_len=desc.length;let total_len=name_len+desc_len;let tooltip="";let limit=30;if(row.family!="flow"){limit=50}if(total_len>limit){if(name_len>=limit){desc=""}else{desc=desc.substr(0,limit-obj.name.length);desc=desc.replace(/\s([^\s]*)$/,"");desc=desc+"…"}tooltip=strip_tags(obj.description)}msg=msg+': '+desc+""}if(obj.configset_ref)msg=msg+obj.configset_ref;return msg}static applyCellStyle(cell,cellData,rowData,rowIndex,colIndex){if(cellData.highlight){$(cell).css("border-left","5px solid "+cellData.highlight)}}}const globalToasts={};class Toast{constructor({title:title,body:body,link:link,delay:delay=0,id:id,style:style}={}){this.title=title;this.body=body;this.link=link;this.delay=delay;this.id=id;this.style=style}render(){const self=this;const $toast=$(``);if(this.delay!==0){$toast.data("autohide",true);$toast.data("delay",this.delay)}else{$toast.data("autohide",false)}$toast.data("notification-id",this.id);const $toastHeader=$(`
\n ${this.title}\n
`);const $toastBody=$(`
${this.body}
`);if(this.action&&this.action.link!=undefined&&this.action.link!=""){const $anchor=$(`${this.action.label}`);$toastBody.append($anchor)}if(this.dismissable){$toastHeader.append(`\n \n `)}if(this.isAboveAll){$toast.css("z-index","9999")}$toast.append($toastHeader,$toastBody);$toast.toast("show");$toast.on("hidden.bs.toast",function(){ToastUtils.hideToast(self.id)});this.$element=$toast;return $toast}updateBody(body){if(this.$element==undefined)throw"The notification has not been rendered yet!";this.$element.find(".toast-body span").text(body)}destroy(){this.$element.toast("dispose");this.$element.empty()}}class ToastUtils{static initToasts(){$(`.toast.notification`).each(function(){$(this).toast("show")})}static hideToast(toastId){if(!toastId){console.warn("The toast id cannot be null!");return}if(!(toastId in globalToasts)){console.warn("The toast hasn't been found!");return}globalToasts[toastId].destroy();delete globalToasts[toastId]}static updateToast(toastId,body){if(!(toastId in globalToasts)){throw"The toast was not found!"}globalToasts[toastId].updateBody(body)}static showToast(option){const styles={warning:{bg:"warning",text:"text-dark",icon:"fa-exclamation-circle"},info:{bg:"info",text:"text-white",icon:"fa-info-circle"},success:{bg:"success",text:"text-white",icon:"fa-check-circle"},error:{bg:"danger",text:"text-white",icon:"fa-times-circle"}};option.style=styles[option.level]||styles.warning;if(option.id===undefined)throw"A toast must have an in id!";if(option.id in globalToasts)return;if(option.title===undefined)throw"A toast must have a title!";if(option.body===undefined)throw"A toast must have a body!";const toast=new Toast(option);$(`#main-container`).prepend(toast.render());globalToasts[option.id]=toast;return toast}static dismissToast(id,csrf,success,failure){if(id==undefined){console.warn("A Toast ID must be defined to dismiss a toast!");return}const empty=()=>{};const request=$.post(`${http_prefix}/lua/dismiss_toast.lua`,{toast_id:id,csrf:csrf});request.done(success||empty);request.fail(failure||empty)}} +function aysHandleForm(form_selector,options){if(!form_selector)form_selector="form";if(form_selector==="form"){form_selector='form:not([data-ays-ignore="true"])'}var default_options={submit_selector:'button[type="submit"]:not([data-ays-ignore="true"])',on_dirty_callback:$.noop,on_clean_callback:$.noop,handle_submit_buttons:true,handle_datatable:false,handle_tabs:false,disable_on_dirty:"",ays_options:{}};var o=$.extend(true,{},default_options,options);o.form_selector=form_selector;$(function(){$(o.form_selector).areYouSure(o.ays_options);if(o.handle_submit_buttons)$(o.form_selector).find(o.submit_selector).attr("disabled","disabled");$(o.form_selector).on("dirty.areYouSure",function(){if(o.handle_submit_buttons)$(this).find(o.submit_selector).removeAttr("disabled");if(o.handle_datatable){$(this).find("a.dropdown-toggle").attr("disabled","disabled");$(this).find("ul.pagination a").css("pointer-events","none").css("cursor","default")}if(o.handle_tabs){$(".nav-tabs").find("a").each(function(){if(!$(this).closest("li").hasClass("active"))$(this).removeAttr("data-toggle").closest("li").addClass("disabled")})}$(o.disable_on_dirty).addClass("disabled");o.on_dirty_callback.bind(this)()});$(o.form_selector).on("clean.areYouSure",function(){if(o.handle_submit_buttons)$(this).find(o.submit_selector).attr("disabled","disabled");if(o.handle_datatable){$(this).find("a.dropdown-toggle").removeAttr("disabled");$(this).find("ul.pagination a").css("pointer-events","").css("cursor","")}if(o.handle_tabs){$(".nav-tabs").find("a").each(function(){$(this).attr("data-toggle","tab").closest("li").removeClass("disabled")})}$(o.disable_on_dirty).removeClass("disabled");o.on_clean_callback.bind(this)()})})}function aysResetForm(form_selector){$(form_selector).trigger("reinitialize.areYouSure")}function aysUpdateForm(form_selector){$(form_selector).trigger("rescan.areYouSure")}function aysRecheckForm(form_selector){$(form_selector).trigger("checkform.areYouSure")}function aysGetDirty(form_selector,fields_selector){fields_selector=fields_selector||":input:not(input[type=submit]):not(input[type=button])";var getValue=function($field){if($field.hasClass("ays-ignore")||$field.hasClass("aysIgnore")||$field.attr("data-ays-ignore")||$field.attr("name")===undefined){return null}if($field.is(":disabled")){return"ays-disabled"}var val;var type=$field.attr("type");if($field.is("select")){type="select"}switch(type){case"checkbox":case"radio":val=$field.is(":checked");break;case"select":val="";$field.find("option").each(function(o){var $option=$(this);if($option.is(":selected")){val+=$option.val()}});break;default:val=$field.val()}return val};var isFieldDirty=function($field){var origValue=$field.data("ays-orig");var curValue=getValue($field);var dirty=undefined!==origValue&&origValue!=curValue;return{dirty:dirty,origValue:origValue,curValue:curValue}};var l=[];$(form_selector).find(fields_selector).each(function(){var dirty_status=isFieldDirty($(this));if(dirty_status.dirty){dirty_status.input=$(this);l.push(dirty_status)}});return l}String.prototype.capitalizeSingleWord=function(){var uc=this.toUpperCase();if(uc=="ASN"||uc=="OS")return uc;else return this.charAt(0).toUpperCase()+this.slice(1)};String.prototype.capitalize=function(){var res=this.split(" ");for(var i in res){res[i]=res[i].capitalizeSingleWord()}return res.join(" ")};String.prototype.startsWith=function(string){return this.indexOf(string)===0};String.prototype.sformat=function(){var args=arguments;return this.replace(/{(\d+)}/g,function(match,number){return typeof args[number]!="undefined"?args[number]:match})};if(typeof String.prototype.contains==="undefined"){String.prototype.contains=function(s){return this.indexOf(s)!==-1}}Date.prototype.format=function(format){var o={"M+":this.getMonth()+1,"d+":this.getDate(),"h+":this.getHours(),"m+":this.getMinutes(),"s+":this.getSeconds(),"q+":Math.floor((this.getMonth()+3)/3),S:this.getMilliseconds()};if(/(y+)/.test(format))format=format.replace(RegExp.$1,(this.getFullYear()+"").substr(4-RegExp.$1.length));for(var k in o)if(new RegExp("("+k+")").test(format))format=format.replace(RegExp.$1,RegExp.$1.length==1?o[k]:("00"+o[k]).substr((""+o[k]).length));return format};jQuery.fn.extend({disable:function(state){return this.each(function(){var $this=$(this);if($this.is("input, button, textarea, select"))this.disabled=state;else $this.toggleClass("disabled",state)})}});const NTOPNG_MIN_VISUAL_VALUE=.005;const REGEXES={ipv4:"^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9]).){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])$",ipv6:"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]):){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:)))(%.+)?s*$",domainName:"^(([a-zA-Z]{1})|([a-zA-Z]{1}[a-zA-Z]{1})|([a-zA-Z]{1}[0-9]{1})|([0-9]{1}[a-zA-Z]{1})|([a-zA-Z0-9][-_.a-zA-Z0-9]{1,61}[a-zA-Z0-9])).([a-zA-Z]{2,13}|[a-zA-Z0-9-]{2,30}.[a-zA-Z]{2,3})",port:"^([0-9]{1,4}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$",url:"^(https?://[^/\\s]+(/.*)?)$",macAddress:"^([0-9A-Fa-f]{2}:){5}([0-9A-Fa-f]{2})$",username:"^(?=[a-zA-Z0-9._]{3,20}$)(?!.*[_.]{2})[^_.].*[^_.]$",singleword:"^(?=[a-zA-Z0-9._-]{3,20}$)(?!.*[_.-]{2})[^_.-].*[^_.-]$",email:"^([a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:.[a-zA-Z0-9-]+)*)$",https:"^https?://.+$",token:"^[0-9a-f]{32}"};class NtopUtils{static get REGEXES(){return REGEXES}static getIPv4RegexWithCIDR(){const length=REGEXES.ipv4.length;return`${REGEXES.ipv4.substring(0,length-1)}(\\/?)(\\b([0-9]|[12][0-9]|3[0-2])?\\b)$`}static getIPv6RegexWithCIDR(){const length=REGEXES.ipv6.length;return`${REGEXES.ipv6.substring(0,length-1)}(\\/?)\\b([0-9]|[1-9][0-9]|1[01][0-9]|12[0-8])?\\b$`}static async resolveDNS(hostname="ntop.org"){try{const request=await fetch(`${http_prefix}/lua/rest/v1/get/dns/resolve.lua?hostname=${hostname}`);const response=await request.json();return response}catch(err){console.error(`Something went wrong when resolving hostname: ${err}`)}return{rc:-1,rc_str:"FAILED_HTTP_REQUEST"}}static initDataPatterns(){$(`input[data-pattern]`).each(function(){const dataPattern=$(this).data("pattern");if(!dataPattern){console.warn(`An empty data-pattern on an input was found!`,this);return}const pattern=dataPattern.split("|").map(p=>REGEXES[p].toString()).join("|");$(this).attr("pattern",pattern);$(this).removeAttr("data-pattern")})}static is_good_ipv4(ipv4){return new RegExp(REGEXES.ipv4).test(ipv4)}static is_good_ipv6(ipv6){return new RegExp(REGEXES.ipv6).test(ipv6)}static is_mac_address(mac){return new RegExp(REGEXES.macAddress).test(mac)}static isNumeric(value){return/^\d+$/.test(value)}static is_network_mask(what,optional_mask){var elems=what.split("/");var mask=null;var ip_addr;if(elems.length!=2){if(!optional_mask)return null;else ip_addr=what}else{ip_addr=elems[0];if(!NtopUtils.isNumeric(elems[1]))return null;mask=parseInt(elems[1]);if(mask<0)return null}if(NtopUtils.is_good_ipv4(ip_addr)){if(mask===null)mask=32;else if(mask>32)return null;return{type:"ipv4",address:ip_addr,mask:mask}}else if(NtopUtils.is_good_ipv6(elems[0])){if(mask===null)mask=128;else if(mask>128)return false;return{type:"ipv6",address:ip_addr,mask:mask}}return null}static fbits(bits){const sizes=["bit/s","Kbit/s","Mbit/s","Gbit/s","Tbit/s"];if(typeof bits==="undefined")return"-";if(bits==0)return"0";if(bits>0&&bits=sizes.length){return"> "+sizes[sizes.length-1]}if(i<=1){return Math.round(bits/Math.pow(1e3,i)*100)/100+" "+sizes[i]}else{var ret=parseFloat(bits/Math.pow(1e3,i)).toFixed(2);if(ret%1==0)ret=Math.round(ret);return ret+" "+sizes[i]}}static export_rate(eps){if(typeof eps==="undefined")return"-";var sizes=["exp/s","Kexp/s"];if(eps==0)return"0";if(eps>0&&eps0&&exports0&&pps0&&pps0&&fps0&&mps'}else if(actual>before){return''}else{return''}}static abbreviateString(str,len){if(!str)return"";if(str.length=0&&bytes=kilobyte&&bytes=megabyte&&bytes=gigabyte&&bytes=terabyte)return parseFloat((bytes/terabyte).toFixed(precision))+" TB";else return parseFloat(bytes.toFixed(precision))+" Bytes"}static drawTrend(current,last,withColor){if(current==last){return''}else if(current>last){return'"}else{return''}}static toggleAllTabs(enabled){if(enabled===true)$("#historical-tabs-container").find("li").removeClass("disabled").find("a").attr("data-toggle","tab");else $("#historical-tabs-container").find("li").addClass("disabled").find("a").removeAttr("data-toggle")}static disableAllDropdownsAndTabs(){$("select").each(function(){$(this).prop("disabled",true)});NtopUtils.toggleAllTabs(false)}static enableAllDropdownsAndTabs(){$("select").each(function(){$(this).prop("disabled",false)});NtopUtils.toggleAllTabs(true)}static capitalize(s){return s&&s[0].toUpperCase()+s.slice(1)}static addCommas(nStr){nStr+="";var x=nStr.split(".");var x1=x[0];var x2=x.length>1?"."+x[1]:"";var rgx=/(\d+)(\d{3})/;while(rgx.test(x1)){x1=x1.replace(rgx,"$1"+","+"$2")}return x1+x2}static scaleValue(val,sizes,scale,decimals){if(val==0)return[0,sizes[0]];let factor=decimals?10*decimals:10;var i=parseInt(Math.floor(Math.log(val)/Math.log(scale)));if(i<0||isNaN(i)){i=0}else if(i>=sizes.length){i=sizes.length-1}return[Math.round(val/Math.pow(scale,i)*factor)/factor,sizes[i]]}static formatValue(val){var sizes=["","K","M","G","T"];if(val==0)return"0";if(val>0&&val0&&bytes0&&bits0){let years=Math.floor(days/365);if(years>0){days=days%365;msg=years+" year";if(years>1){msg+="s"}msg_array.push(msg);msg=""}msg=days+" day";if(days>1){msg+="s"}msg_array.push(msg);msg=""}if(hours>0){if(hours<10){msg="0"}msg+=hours+":"}if(minutes<10){msg+="0"}msg+=minutes+":";if(sec<10){msg+="0"}msg+=sec;msg_array.push(msg);return msg_array.join(", ")}static epoch2Seen(epoch){var d=new Date(epoch*1e3);var tdiff=Math.floor((new Date).getTime()/1e3-epoch);return d.format("dd/MM/yyyy hh:mm:ss")+" ["+NtopUtils.secondsToTime(tdiff)+" ago]"}static graphGetXAxisTicksFormat(diff_epoch){var tickFormat;if(diff_epoch<=86400){tickFormat="%H:%M:%S"}else if(diff_epoch<=2*86400){tickFormat="%b %e, %H:%M:%S"}else{tickFormat="%b %e"}return tickFormat}static paramsExtend(defaults,override){return $.extend({},defaults,override)}static paramsToForm(form,params){form=$(form);for(var k in params){if(params.hasOwnProperty(k)){var input=$('');input.appendTo(form)}}return form}static paramsPairsEncode(params){var i=0;var res={};for(var k in params){res["key_"+i]=k;res["val_"+i]=params[k];i=i+1}return res}static hostkey2hostInfo(host_key){var info;var hostinfo=[];host_key=host_key.replace(/____/g,":");host_key=host_key.replace(/___/g,"/");host_key=host_key.replace(/__/g,".");info=host_key.split("@");return info}static handle_tab_state(nav_object,default_tab){$("a",nav_object).click(function(e){e.preventDefault()});$(" > li > a",nav_object).on("shown.bs.tab",function(e){var id=$(e.target).attr("href").substr(1);if(history.replaceState){history.replaceState(null,null,"#"+id)}else{window.location.hash=id}});var hash=window.location.hash;if(!hash)hash="#"+default_tab;$('a[href="'+hash+'"]',nav_object).tab("show")}static _add_find_host_link(form,name,data){$("").attr({type:"hidden",id:name,name:name,value:data}).appendTo(form)}static makeFindHostBeforeSubmitCallback(http_prefix){return function(form,data){if(data.type=="mac"){form.attr("action",http_prefix+"/lua/mac_details.lua")}else if(data.type=="network"){form.attr("action",http_prefix+"/lua/hosts_stats.lua");NtopUtils._add_find_host_link(form,"network",data.network)}else if(data.type=="snmp"){form.attr("action",http_prefix+"/lua/pro/enterprise/snmp_interface_details.lua");NtopUtils._add_find_host_link(form,"snmp_port_idx",data.snmp_port_idx)}else if(data.type=="snmp_device"){form.attr("action",http_prefix+"/lua/pro/enterprise/snmp_device_details.lua")}else if(data.type=="asn"){form.attr("action",http_prefix+"/lua/hosts_stats.lua");NtopUtils._add_find_host_link(form,"asn",data.asn)}else{form.attr("action",http_prefix+"/lua/host_details.lua");NtopUtils._add_find_host_link(form,"mode","restore")}return true}}static tstampToDateString(html_tag,format,tdiff){tdiff=tdiff||0;var timestamp=parseInt(html_tag.html())+tdiff;var localized=d3.time.format(format)(new Date(timestamp*1e3));html_tag.html(localized).removeClass("hidden");return localized}static noHtml(s){return s.replace(/<[^>]+>/g,"")}static cleanCustomHostUrl(host){return host.replace(/^http:\/\//gi,"").replace(/^https:\/\//gi,"").replace(/^www\./gi,"").replace(/[^0-9a-zA-Z\.:\/_-]/gi,"")}static parseQuery(queryString){var query={};var pairs=(queryString[0]==="?"?queryString.substr(1):queryString).split("&");for(var i=0;i{if(response.rc<0){$("#import-error").text(response.rc_str).show();return}if(params.successCallback){params.successCallback(response)}const key=$(`input[name='configuration']:checked`).val();const body=key=="all"?i18n.manage_configurations.messagges.import_all_success:i18n.manage_configurations.messagges.import_success;ToastUtils.showToast({id:"import-configuration-alert",level:"success",title:i18n.success,body:body,delay:2e3});$("#import-modal").modal("hide")}).fail(({responseJSON:responseJSON})=>{const PARTIAL_IMPORT_RC=-28;if(params.failureCallback){params.failureCallback(responseJSON)}if(responseJSON&&responseJSON.rc>0)return;if(responseJSON.rc==PARTIAL_IMPORT_RC)$(`#import-error`).removeClass("invalid-feedback").addClass("text-warning");$("#import-error").text(i18n.rest_consts[responseJSON.rc_str]||i18n.FAILED_HTTP_REQUEST).show()}).always(()=>{$button.removeAttr("disabled")})}})}static serializeFormArray(serializedArray){const serialized={};serializedArray.forEach(obj=>{if(obj.name.includes("[]")){return}else{if(typeof obj.value==="string"){obj.value=obj.value.trim()}serialized[obj.name]=obj.value}});return serialized}static cleanForm(formSelector){$(formSelector).find("input,select,textarea").each(function(i,input){$(this).removeClass(`is-valid`).removeClass(`is-invalid`)});$(formSelector)[0].reset()}static fetchWithTimeout(uri,options={},time=5e3){const controller=new AbortController;const config={...options,signal:controller.signal};const timeout=setTimeout(()=>{controller.abort()},time);return fetch(uri,config).then(response=>{if(!response.ok){throw new Error(`${response.status}: ${response.statusText}`)}return response}).catch(error=>{if(error.name==="AbortError"){throw new Error("Response timed out")}})}static setPref(action,csrf,success,failure){if(action==undefined){console.warn("An action key must be defined to set a preference!");return}const empty=()=>{};const request=$.post(`${http_prefix}/lua/update_prefs.lua`,{action:action,csrf:csrf});request.done(success||empty);request.fail(failure||empty)}static arrayToListString(array,limit){if(array==undefined)return"";if(array.length>limit){return array.slice(0,limit).join(", ")+` ${i18n.and_x_more.replace("$num",array.length-limit)}`}return array.slice(0,limit).join(", ")}static buildURL(location,params={},hasReferer=false,refererParams={}){const url=new URL(location,window.location);for(const[name,value]of Object.entries(params)){if(!value)continue;url.searchParams.set(name,value)}if(hasReferer){const refUrl=new URL(window.location.href);for(const[name,value]of Object.entries(refererParams)){if(!value)continue;refUrl.searchParams.set(name,value)}url.searchParams.set("referer",refUrl.toString())}return url.toString()}static getEditPoolLink(href,poolId){const url=new URL(href,window.location);url.searchParams.set("pool_id",poolId);return url.toString()}static getPoolLink(poolType,poolId=0){return`${http_prefix}/lua/rest/v1/get/${poolType}/pools.lua?pool=${poolId}`}static async getPool(poolType,id=0){if(poolType===null)throw"A pool type must be defined!";try{const request=await fetch(NtopUtils.getPoolLink(poolType,id));const pool=await request.json();if(pool.rc<0){return[false,{}]}return[true,pool.rsp[0]]}catch(err){return[false,{}]}}static saveElementScale($element,scale={width:0,height:0}){const key=NtopUtils.generateScaleElementKey($element);localStorage.setItem(key,JSON.stringify(scale))}static generateScaleElementKey($element){let identificator;const page=location.pathname;const elementId=$element.attr("id");if(elementId!==""){identificator=elementId}else{const className=$element.attr("class");identificator=className}const key=`${identificator}-${page}-scale`;return key}static loadElementScale($element){const key=NtopUtils.generateScaleElementKey($element);const currentValue=localStorage.getItem(key);if(currentValue==null)return undefined;return JSON.parse(currentValue)}static fillFieldIfValid($field,value){if(value===undefined){$field.val("")}else{$field.val(value)}}}$(function(){NtopUtils.initDataPatterns()});var schema_2_label={};var data_2_label={};var graph_i18n={};function initLabelMaps(_schema_2_label,_data_2_label,_graph_i18n){schema_2_label=_schema_2_label;data_2_label=_data_2_label;graph_i18n=_graph_i18n}function getSerieLabel(schema,serie,visualization,serie_index){var data_label=serie.label;var new_label=data_2_label[data_label];if(visualization&&visualization.metrics_labels&&visualization.metrics_labels[serie_index])return visualization.metrics_labels[serie_index];if(serie.ext_label){if(new_label)return serie.ext_label+" ("+new_label+")";else return serie.ext_label}else if(schema=="top:local_senders"||schema=="top:local_receivers"){if(serie.ext_label)return serie.ext_label;else return serie.tags.host}else if(schema.startsWith("top:")){if(serie.tags.protocol)return serie.tags.protocol;else if(serie.tags.category)return serie.tags.category;else if(serie.tags.l4proto)return serie.tags.l4proto;else if(serie.tags.dscp_class)return serie.tags.dscp_class;else if(serie.tags.device&&serie.tags.if_index){if(serie.ext_label!="")return serie.ext_label;else return"("+serie.tags.if_index+")"}else if(serie.tags.device&&serie.tags.port)return serie.tags.port;else if(serie.tags.exporter&&serie.tags.ifname)return serie.tags.ifname;else if(serie.tags.profile)return serie.tags.profile;else if(serie.tags.check)return serie.tags.check;else if(serie.tags.command)return serie.tags.command.substring(4).toUpperCase()}else if(data_label!="bytes"){if(serie.tags.protocol)return serie.tags.protocol+" ("+new_label+")";else if(serie.tags.category)return serie.tags.category+" ("+new_label+")";else if(serie.tags.device&&serie.tags.if_index)return serie.ext_label+" ("+new_label+")";else if(serie.tags.device&&serie.tags.port)return serie.tags.port+" ("+new_label+")"}else{if(serie.tags.protocol)return serie.tags.protocol;else if(serie.tags.category)return serie.tags.category;else if(serie.tags.profile)return serie.tags.profile;else if(data_label=="bytes"){if(schema.contains("volume"))return graph_i18n.traffic_volume;else return graph_i18n.traffic}}if(schema_2_label[schema])return NtopUtils.capitaliseFirstLetter(schema_2_label[schema]);if(new_label)return NtopUtils.capitaliseFirstLetter(new_label);return NtopUtils.capitaliseFirstLetter(data_label)}function getValueFormatter(schema,metric_type,series,custom_formatter,stats){if(series&&series.length&&series[0].label){if(custom_formatter){var formatters=[];if(typeof custom_formatter!="object")custom_formatter=[custom_formatter];for(var i=0;icount){console.error("points mismatch: serie '"+getSerieLabel(schema_name,series[i])+"' has "+data.length+" points, expected "+count);rv=false}else if(data.length.1)return res}function buildTimeArray(start_time,end_time,step){var arr=[];for(var t=start_time;t$.now())$("#btn-jump-time-ahead").addClass("disabled");else $("#btn-jump-time-ahead").removeClass("disabled")}function showQuerySlow(){$("#query-slow-alert").show()}function hideQuerySlow(){$("#query-slow-alert").hide()}function chart_data_sum(series){return series.reduce(function(acc,x){return acc+x.values.reduce(function(acc,pt){return acc+pt[1]||0},0)},0)}function redrawExtraLines(chart,chart_id,extra_lines){d3.selectAll(chart_id+" line.extra-line").remove();if(extra_lines.length>0){var xValueScale=chart.xAxis.scale();var yValueScale=chart.yAxis1.scale();var g=d3.select(chart_id+" .stack1Wrap");for(var i=0;i0||has_initial_zoom();let extra_lines=[];let unreachable_timestamps={};var spinner=$('');$chart.parent().css("position","relative");var chart_colors_full=["#69B87F","#94CFA4","#B3DEB6","#E5F1A6","#FFFCC6","#FEDEA5","#FFB97B","#FF8D6D","#E27B85"];var chart_colors_min=["#7CC28F","#FCD384","#FD977B"];var split_directions_colors=["#69B87F","#FF7C00","#FF4700"];function format_unreachable(formatter){return function(y,d){if(d&&unreachable_timestamps[d[0]])return i18n.unreachable_host;return formatter(y)}}var num_ticks_y1=null;var num_ticks_y2=null;var domain_y1=null;var domain_y2=null;var first_run=true;var update_chart_data=function(new_data){d3_sel.datum([]).call(chart);d3_sel.datum(new_data);d3_sel.transition().duration(500).call(chart);if(first_run){num_ticks_y1=chart.yAxis1.ticks();num_ticks_y2=chart.yAxis2.ticks();domain_y1=chart.yDomain1();domain_y2=chart.yDomain2();first_run=false}if(metric_type==="gauge"){var cur_domain_y1=chart.yAxis1.scale().domain();var cur_domain_y2=chart.yAxis2.scale().domain();cur_domain_y1=cur_domain_y1[1]-cur_domain_y1[0];cur_domain_y2=cur_domain_y2[1]-cur_domain_y2[0];if(chart.yAxis1.tickFormat()!=NtopUtils.ffloat)chart.yAxis1.ticks(Math.min(cur_domain_y1,num_ticks_y1));if(chart.yAxis2.tickFormat()!=NtopUtils.ffloat)chart.yAxis2.ticks(Math.min(cur_domain_y2,num_ticks_y2))}var y1_sum=chart_data_sum(new_data.filter(function(x){return x.yAxis==1}));var y2_sum=chart_data_sum(new_data.filter(function(x){return x.yAxis==2}));if(y1_sum==0)chart.yDomain1([0,1]);else chart.yDomain1(domain_y1);if(y2_sum==0)chart.yDomain2([0,1]);else chart.yDomain2(domain_y2);d3_sel.call(chart);nv.utils.windowResize(function(){chart.update();redrawExtraLines(chart,chart_id,extra_lines)});redrawExtraLines(chart,chart_id,extra_lines);spinner.remove()};function isLegendDisabled(key,default_val){if(typeof localStorage!=="undefined"){var val=localStorage.getItem("chart_series.disabled."+key);if(val!=null)return val==="true"}return default_val}chart.legend.dispatch.on("legendClick",function(d,i){manual_trigger_extra_series[d.legend_key]=true;if(typeof localStorage!=="undefined")localStorage.setItem("chart_series.disabled."+d.legend_key,!d.disabled?true:false)});chart.dispatch.on("zoom",function(e){var cur_zoom=[params.epoch_begin,params.epoch_end];var t_start=Math.floor(e.xDomain[0]);var t_end=Math.ceil(e.xDomain[1]);var old_zoomed=chart.is_zoomed;var is_user_zoom=typeof e.is_user_zoom!=="undefined"?e.is_user_zoom:true;chart.is_zoomed=true;if(chart.updateStackedChart(t_start,t_end,false,is_user_zoom)){if(is_user_zoom||e.push_state){current_zoom_level+=1;var url=NtopUtils.getHistoryParameters({epoch_begin:t_start,epoch_end:t_end});history.pushState({zoom_level:current_zoom_level,range:[t_start,t_end]},"",url)}chart.fixChartButtons()}else chart.is_zoomed=old_zoomed});function updateZoom(zoom,is_user_zoom,force){var t_start=zoom[0];var t_end=zoom[1];chart.updateStackedChart(t_start,t_end,false,is_user_zoom,null,force);chart.fixChartButtons()}chart.zoom_in=function(){var cur_interval=params.epoch_end-params.epoch_begin;if(cur_interval>60){var delta=cur_interval/4;$("#period_begin").datetimepicker("date",new Date((params.epoch_begin+delta)*1e3));$("#period_end").datetimepicker("date",new Date((params.epoch_end-delta)*1e3));updateChartFromPickers()}};chart.zoom_out=function(){var cur_interval=params.epoch_end-params.epoch_begin;var delta=cur_interval/2;$("#period_begin").datetimepicker("date",new Date((params.epoch_begin-delta)*1e3));$("#period_end").datetimepicker("date",new Date((params.epoch_end+delta)*1e3));updateChartFromPickers()};$chart.on("dblclick",function(event){if($(event.target).hasClass("nv-legend-text"))return;chart.zoom_out()});$zoom_reset.on("click",function(){if(current_zoom_level){history.go(-current_zoom_level)}});window.addEventListener("popstate",function(e){var zoom=initial_range;if(e.state){zoom=e.state.range;current_zoom_level=e.state.zoom_level}else current_zoom_level=0;updateZoom(zoom,true,true)});chart.fixChartButtons=function(){if(current_zoom_level>0||has_initial_zoom()){$graph_zoom.find(".btn-warning:not(.custom-zoom-btn)").addClass("initial-zoom-sel").removeClass("btn-warning");$graph_zoom.find(".custom-zoom-btn").css("visibility","visible");var zoom_link=$graph_zoom.find(".custom-zoom-btn");var link=zoom_link.val().replace(/&epoch_begin=.*/,"");link+="&epoch_begin="+params.epoch_begin+"&epoch_end="+params.epoch_end;zoom_link.val(link)}else{$graph_zoom.find(".initial-zoom-sel").addClass("btn-warning");$graph_zoom.find(".custom-zoom-btn").css("visibility","hidden");chart.is_zoomed=false}fixJumpButtons(params.epoch_begin,params.epoch_end);if(current_zoom_level>0)$zoom_reset.show();else $zoom_reset.hide()};function checkQueryCompleted(){var flows_dt=$("#chart1-flows");var wait_num_queries=ts_table_shown&&$("#chart1-flows").css("display")!=="none"?2:1;query_completed+=1;if(query_completed>=wait_num_queries){if(query_timer){clearInterval(query_timer);query_timer=null}hideQuerySlow()}}chart.queryWasAborted=function(){return query_was_aborted};chart.abortQuery=function(){query_was_aborted=true;if(pending_chart_request){pending_chart_request.abort();chart.noData(i18n.query_was_aborted);update_chart_data([])}if(pending_table_request)pending_table_request.abort();if(query_timer){clearInterval(query_timer);query_timer=null}hideQuerySlow()};chart.tableRequestCompleted=function(){checkQueryCompleted();pending_table_request=null};chart.getDataUrl=function(){var data_params=jQuery.extend({},params);delete data_params.zoom;delete data_params.ts_compare;data_params.extended=1;return url+"?"+$.param(data_params,true)};var old_start,old_end,old_interval;chart.updateStackedChart=function(tstart,tend,no_spinner,is_user_zoom,on_load_callback,force_update){if(tstart)params.epoch_begin=tstart;if(tend)params.epoch_end=tend;const series_formatted_labels={};const now=Date.now()/1e3;var cur_interval=params.epoch_end-params.epoch_begin;var actual_step=findActualStep(step,params.epoch_begin);max_interval=actual_step*6;if(cur_interval=now){params.epoch_begin=params.epoch_end-max_interval}else{params.epoch_begin=Math.floor(epoch-max_interval/2);params.epoch_end=Math.floor(epoch+max_interval/2)}is_max_zoom=true;chart.zoomType(null)}}else if(cur_interval>max_interval){is_max_zoom=false;chart.zoomType("x")}old_interval=cur_interval;if(!first_load||has_initial_zoom()||force_update)align_step=null;fixTimeRange(chart,params,align_step,actual_step);if(first_load)initial_range=[params.epoch_begin,params.epoch_end];if(old_start==params.epoch_begin&&old_end==params.epoch_end&&!force_update)return false;old_start=params.epoch_begin;old_end=params.epoch_end;if(pending_table_request)pending_table_request.abort();if(pending_chart_request)pending_chart_request.abort();else if(!no_spinner)spinner.appendTo($chart.parent());$("#period_begin").datetimepicker("date",new Date(params.epoch_begin*1e3));$("#period_end").datetimepicker("date",new Date(Math.min(params.epoch_end*1e3,$.now())));if(query_timer)clearInterval(query_timer);query_timer=setInterval(showQuerySlow,seconds_before_query_slow*1e3);query_completed=0;query_was_aborted=false;chart.noData(i18n.no_data_available);hideQuerySlow();var req_params=$.extend({},params);if(!canCompareBackwards(req_params.epoch_begin,req_params.epoch_end))delete req_params.ts_compare;if(visualization.show_unreachable)req_params.no_fill=1;pending_chart_request=$.get(url,req_params,function(data){data=data.rsp;if(data&&data.error)chart.noData(data.error);if(!data||!data.series||!data.series.length||!checkSeriesConsinstency(schema_name,data.count,data.series)){update_chart_data([]);return}var tick_step=Math.ceil(chart.tick_step/data.step)*data.step;chart.xAxis.tickValues(buildTimeArray(data.start,data.start+data.count*data.step,tick_step));chart.xAxis.tickFormat(function(d){return d3.time.format(chart.x_fmt)(new Date(d*1e3))});var res=[];var series=data.series;var total_serie;var color_i=0;var chart_colors=series.length<=chart_colors_min.length?chart_colors_min:chart_colors_full;for(var j=0;jmax_cmp_over_total_ratio)is_disabled=true;res.push({key:NtopUtils.capitaliseFirstLetter(key),yAxis:1,values:values,type:"line",classed:"line-dashed line-animated",color:"#7E91A0",legend_key:key,disabled:is_disabled})}}if(visualization&&visualization.extra_series){for(var i=0;imax_line_over_total_ratio)is_disabled=true;res.push({key:serie.label,yAxis:serie.axis||1,values:arrayToNvSerie(upsampleSerie([serie.value],data.count),data.start,data.step),type:serie.type||"line",color:serie.color||"red",classed:serie.class,legend_key:serie.label,disabled:is_disabled})}}if(!data.no_trend&&has_full_data&&total_serie.length>=3){var num_smoothed_points=Math.min(Math.max(Math.floor(total_serie.length/5),3),12);var smooth_functions={};function add_smoothed_serie(fn_to_use){var options=smooth_functions[fn_to_use];var smoothed;if(fn_to_use=="rsi"){if(!past_serie)return;var delta_serie=[];for(var i=0;i0){var aligned;if(fn_to_use!="ema"&&fn_to_use!="sma"&&fn_to_use!="rsi"){var scale=d3.max(total_serie)/max_val;var scaled=$.map(smoothed,function(x){return x*scale});aligned=upsampleSerie(scaled,data.count)}else{var remaining=data.count-smoothed.length;var to_fill=remaining0){var ref_serie=res[0].values;let tok=ref_serie[0][0];let was_unreachable=false;unreachable_timestamps={};for(var i=0;i")}else val=stats_formatter(stats[stats_name])+(show_date?" ("+new Date(res[0].values[stats[stats_name+"_idx"]][0]*1e3).format(datetime_format)+")":"");if(val)cell.show().find("span").html(val);return values}var total_cell=stats_table.find(".graph-val-total");var average_cell=stats_table.find(".graph-val-average");var min_cell=stats_table.find(".graph-val-min");var max_cell=stats_table.find(".graph-val-max");var perc_cell=stats_table.find(".graph-val-95percentile");if(stats.total||total_cell.is(":visible"))splitSeriesInfo("total",total_cell);if(stats.average||average_cell.is(":visible"))splitSeriesInfo("average",average_cell);if((stats.min_val||min_cell.is(":visible"))&&res[0].values[stats.min_val_idx])splitSeriesInfo("min_val",min_cell,true);if((stats.max_val||max_cell.is(":visible"))&&res[0].values[stats.max_val_idx])splitSeriesInfo("max_val",max_cell,true);if(stats["95th_percentile"]||perc_cell.is(":visible")){splitSeriesInfo("95th_percentile",perc_cell);if(!visualization.split_directions){var values=makeFlatLineValues(data.start,data.step,data.count,stats["95th_percentile"]);res.push({key:graph_i18n["95_perc"],yAxis:1,values:values,type:"line",classed:"line-dashed line-animated",color:"#476DFF",legend_key:"95perc",disabled:isLegendDisabled("95perc",true)})}}}stats_table.show();if(visualization.show_unreachable&&last_known_t&&last_known_t+data.step>now&&now0)serie[serie.length]=[now,serie[serie.length-1][1]]}}var enabled_series=res.filter(function(d){return d.disabled!==true});if(second_axis_series.length>0||enabled_series.length==0){for(var i=0;i0){chart.legend.updateState(false)}update_chart_data(res);first_time_loaded=false;if(data.source_aggregation)$("#data-aggr-dropdown > button > span:first").html(data.source_aggregation)}).fail(function(xhr,status,error){if(xhr.statusText=="abort"){return}console.error("Error while retrieving the timeseries data ["+status+"]: "+error);chart.noData(error);update_chart_data([])}).always(function(data,status,xhr){checkQueryCompleted();pending_chart_request=null});if(first_load){first_load=false;$(function(){var flows_dt=$("#chart1-flows").data("datatable");if(flows_dt)pending_table_request=flows_dt.pendingRequest})}else{var flows_dt=$("#chart1-flows");if(ts_table_shown){updateGraphsTableView(null,params);if($("#chart1-flows").css("display")!=="none")pending_table_request=flows_dt.data("datatable").pendingRequest}}if(typeof on_load_callback==="function")on_load_callback(chart);return true}}var graph_old_view=null;var graph_old_has_nindex=null;var graph_old_nindex_query=null;function tsQueryToTags(ts_query){return ts_query.split(",").reduce(function(params,value){var pos=value.indexOf(":");if(pos!=-1){var k=value.slice(0,pos);var v=value.slice(pos+1);params[k]=v}return params},{})}function recheckGraphTableEntries(){var table_view=graph_table_views;var tdiff=graph_params.epoch_end-graph_params.epoch_begin;var reset_selection=false;$("#chart1-flows").show();$("#graphs-table-selector").show();for(view_id in table_view){var view=table_view[view_id];var elem=$("#"+view.html_id);if(tdiff<=view.min_step){if(graph_old_view.id===view_id)reset_selection=true;elem.hide()}else elem.show()}var items_ul=$("#graphs-table-active-view").closest(".btn-group").find("ul:first");items_ul.find("li.dropdown-header").each(function(idx,e){var next_item=$(e).nextAll("li").filter(function(idx,e){return $(e).css("display")!=="none"||!$(e).attr("data-view-id")}).first();var divider=$(e).nextAll(".divider").first();if(!next_item.attr("data-view-id")){$(e).hide();divider.hide()}else{$(e).show();divider.show()}});if(reset_selection){var first_view=items_ul.find("li[data-view-id]").filter(function(idx,e){return $(e).css("display")!=="none"}).first();if(first_view.length)setActiveGraphsTableView(first_view.attr("data-view-id"));else{$("#chart1-flows").hide();$("#graphs-table-selector").hide()}return false}return true}function updateGraphsTableView(view,graph_params,has_nindex,nindex_query,per_page){if(view)graph_old_view=view;if(!recheckGraphTableEntries(graph_params)){return}if(view){graph_old_has_nindex=has_nindex;graph_old_nindex_query=nindex_query}else{view=graph_old_view;has_nindex=graph_old_has_nindex;nindex_query=graph_old_nindex_query}var graph_table=$("#chart1-flows");nindex_query=nindex_query+"&begin_time_clause="+graph_params.epoch_begin+"&end_time_clause="+graph_params.epoch_end;var nindex_buttons="";var params_obj=tsQueryToTags(graph_params.ts_query);if(!params_obj.host){nindex_buttons+='
"}nindex_buttons+='
";if(view.columns){var url=http_prefix+(view.nindex_view?"/lua/pro/get_nindex_flows.lua":"/lua/pro/get_ts_table.lua");var columns=view.columns.map(function(col){return{title:col[1],field:col[0],css:{textAlign:col[2],width:col[3]},hidden:col[4]?true:false}});columns.push({title:i18n.actions,field:"drilldown",css:{width:"1%","text-align":"center"}});var old_dt=graph_table.data("datatable");if(old_dt&&old_dt.pendingRequest)old_dt.pendingRequest.abort();graph_table.removeData("datatable");graph_table.html("");graph_table.datatable({title:"",url:url,perPage:per_page,noResultsMessage:function(){if(ts_chart.queryWasAborted())return i18n.query_was_aborted;else return i18n.no_results_found},post:function(){var params=$.extend({},graph_params);delete params.ts_compare;delete params.initial_point;params.limit=1;params.detail_view=view.id;return params},loadingYOffset:40,columns:columns,buttons:view.nindex_view?[nindex_buttons]:[],tableCallback:function(){var data=this.resultset;ts_chart.tableRequestCompleted();if(!data){return}if(data.currentPage>1)graph_table.data("has_interaction",true);var stats_div=$("#chart1-flows-stats");var has_drilldown=data&&data.data.some(function(row){return row.drilldown});if(!has_drilldown)$("table td:last-child, th:last-child",graph_table).remove();if(data&&data.stats&&data.stats.query_duration_msec){$("#flows-query-time").html(data.stats.query_duration_msec/1e3);$("#flows-processed-records").html(data.stats.num_records_processed);stats_div.show()}else stats_div.hide()},rowCallback:function(row,row_data){if(typeof row_data.tags==="object"&&(params_obj.category&&row_data.tags.category===params_obj.category||params_obj.protocol&&row_data.tags.protocol===params_obj.protocol)){row.addClass("info")}return row}})}}function draw_processes_graph(http_prefix,graph_div_id,host){var links;var nodes={};var url=http_prefix+"/lua/get_processes_graph_data.lua?host="+host;d3.json(url,function(error,json){if(error)return console.warn(error);links=json;var _link;links.forEach(function(link){if(link.source_pid==-1){_link=http_prefix+"/lua/host_details.lua?host="+link.source}else{_link=http_prefix+"/lua/process_details.lua?pid="+link.source_pid+"&pid_name="+link.source_name+"&host="+host+"&page=flows"}link.source=nodes[link.source]||(nodes[link.source]={name:link.source_name,num:link.source,link:_link,type:link.source_type,pid:link.source_pid});if(link.target_pid==-1){_link=http_prefix+"/lua/host_details.lua?host="+link.target}else{_link=http_prefix+"/lua/process_details.lua?pid="+link.target_pid+"&pid_name="+link.target_name+"&host="+host+"&page=flows"}link.target=nodes[link.target]||(nodes[link.target]={name:link.target_name,num:link.target,link:_link,type:link.target_type,pid:link.target_pid})});var width=960,height=500,arrow_size=6;var color=d3.scale.category10();color["proc"]="red";color["host"]="lightsteelblue";var force=d3.layout.force().nodes(d3.values(nodes)).links(links).size([width,height]).linkDistance(120).charge(-400).on("tick",tick).start();var svg=d3.select("#"+graph_div_id).append("svg").attr("id","ebpf_graph").attr("width",width).attr("height",height);svg.append("defs").selectAll("marker").data(["proc2proc","proc2host","host2proc","host2host"]).enter().append("marker").attr("id",function(d){return d}).attr("viewBox","0 -5 10 10").attr("refX",15).attr("refY",-1.5).attr("markerWidth",arrow_size).attr("markerHeight",arrow_size).attr("orient","auto").append("path").attr("d","M0,-5L10,0L0,5");var path=svg.append("g").selectAll("path").data(force.links()).enter().append("path").attr("class",function(d){return"link "+d.type}).attr("marker-end",function(d){return"url(#"+d.type+")"});var circle=svg.append("g").selectAll("circle").data(force.nodes()).enter().append("circle").attr("class","ebpf_circle").attr("r",8).style("fill",function(d){return color[d.type]}).call(force.drag).on("dblclick",function(d){window.location.href=d.link});var text=svg.append("g").selectAll("text").data(force.nodes()).enter().append("text").attr("class","ebpf_text").attr("x",12).attr("y",".31em").text(function(d){if(d.pid>=0)return d.name+" [pid: "+d.pid+"]";else{return d.name}});function tick(){path.attr("d",linkArc);circle.attr("transform",transform);text.attr("transform",transform)}function linkArc(d){var dx=d.target.x-d.source.x,dy=d.target.y-d.source.y,dr=Math.sqrt(dx*dx+dy*dy);return"M"+d.source.x+","+d.source.y+"A"+dr+","+dr+" 0 0,1 "+d.target.x+","+d.target.y}function transform(d){return"translate("+d.x+","+d.y+")"}})}function makeUniqueValidator(items_function){return function(field){var cmp_name=field.val();var count=0;if(!cmp_name)return true;items_function(field).each(function(){var name=$(this).val();if(name==cmp_name)count=count+1});return count==1}}function memberValueValidator(input){var member=input.val();if(member==="")return true;return NtopUtils.is_mac_address(member)||NtopUtils.is_network_mask(member,true)}function makePasswordPatternValidator(pattern){return function passwordPatternValidator(input){if(!input.val())return true;return $(input).val().match(pattern)}}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()}function poolnameValidator(input){if(!input.val())return true;return $(input).val().match(/^[a-z0-9_]*$/)}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")}function hostOrMacValidator(input){var host=input.val();if(host==="")return true;return NtopUtils.is_mac_address(host)||NtopUtils.is_good_ipv4(host)||NtopUtils.is_good_ipv6(host)}function ipAddressValidator(input){var host=input.val();if(host==="")return true;return NtopUtils.is_good_ipv4(host)||NtopUtils.is_good_ipv6(host)}(function($){class ModalHandler{constructor(form,options){if(typeof options.csrf==="undefined"){throw new Error("ModalHandler::Missing CSRF token!")}this.element=form;this.dialog=$(form).closest(".modal");this.options=options;this.csrf=options.csrf;this.dontDisableSubmit=options.dontDisableSubmit;this.observer=new MutationObserver(list=>{this.bindFormValidation();this.toggleFormSubmission();this.initDataPatterns()});this.observer.observe(this.element[0],{childList:true,subtree:true});this.initialState=null;this.currentState=null;this.firstCloseAttempt=false;this.isSubmitting=false;const submitButton=$(this.element).find(`[type='submit']`);if(submitButton.length==0){throw new Error("ModalHandler::The submit button was not found inside the form!")}this.toggleFormSubmission()}initDataPatterns(){NtopUtils.initDataPatterns()}createFormSnapshot(){const snapshot={inputs:{},hidden:[]};$(this.element).find('textarea,select,input[type!="radio"]').each(function(){const type=$(this).prop("nodeName").toLowerCase();const name=$(this).attr("name");snapshot.inputs[`${type}[name='${name}']`]=$(this).val()});$(this.element).find(`[style='display: none;'], span.invalid-feedback`).each(function(){snapshot.hidden.push($(this))});return snapshot}compareFormSnaphsot(s1,s2){if(s1==null||s2==null)return true;for(let[key,value]of Object.entries(s1.inputs)){if(s2.inputs[key]!=value)return false}return true}delegateModalClosing(){const self=this;$(this.dialog).find("button.cancel").off("click").click(function(){self.firstCloseAttempt=false;$(self.element)[0].reportValidity();$(self.dialog).find(".confirm-closing").fadeOut(100,function(){$(self.dialog).find("button.close").fadeIn(100)})});$(this.dialog).off("hide.bs.modal").on("hide.bs.modal",function(event){if(self.isSubmitting){event.preventDefault();return}if(self.compareFormSnaphsot(self.currentState,self.initialState)){return}if(self.firstCloseAttempt)return;event.preventDefault();self.firstCloseAttempt=true;$(self.dialog).find("button.close").fadeOut(100,function(){$(self.dialog).find(".confirm-closing").fadeIn(100)});return});$(this.dialog).off("hidden.bs.modal").on("hidden.bs.modal",function(event){for(const[selector,value]of Object.entries(self.initialState.inputs)){$(self.dialog).find(selector).val(value);$(self.dialog).find(selector).removeClass("is-invalid")}self.initialState.hidden.forEach($hidden=>{$hidden.hide()});self.element.find(`[type='submit']`).attr("disabled","disabled");self.currentState=null;self.firstCloseAttempt=false;$(self.dialog).find(".confirm-closing").fadeOut(100,function(){$(self.dialog).find("button.close").fadeIn(100)});self.cleanForm()})}fillFormModal(){return this.options.loadFormData()}invokeModalInit(data={}){const self=this;this.delegateModalClosing();this.data=data||this.fillFormModal();this.options.onModalInit(this.data,this);$(this.element).parents(".modal").on("show.bs.modal",function(){self.options.onModalShow()});this.initialState=this.createFormSnapshot();this.currentState=null;this.delegateResetButton()}delegateSubmit(){this.bindFormValidation();const self=this;this.submitHandler=function(e){if(!self.options.isSyncRequest){e.preventDefault();e.stopPropagation();self.makeRequest()}};$(this.element).on("submit",this.submitHandler)}bindFormValidation(){const self=this;$(this.element).find(`input,select,textarea`).each(async function(i,input){const $input=$(this);let timeoutId=-1;const validHostname=async()=>{const $spinner=$input.parent().find(".spinner-border");$input.attr("readonly",true);$spinner.show();const response=await NtopUtils.resolveDNS($(input).val());$input.removeAttr("readonly");$spinner.hide();if(response.rc<0){input.setCustomValidity(response.rc_str);return[false,i18n[response.rc_str]]}input.setCustomValidity("");return[true,"Success"]};const validInput=async validation=>{if(validation.data.resolveDNS&&$input.val().match(NtopUtils.REGEXES.domainName)){return await validHostname()}if(validation.data.cannotBeEmpty&&validation.isInputEmpty){input.setCustomValidity("Please fill the input.");return[false,validation.data.validationEmptyMessage||i18n.missing_field]}if(input.validity.patternMismatch){input.setCustomValidity("Pattern mismatch.");return[false,validation.data.validationMessage||i18n.invalid_field]}if(input.validity.rangeOverflow){input.setCustomValidity("Value exceed the maximum value.");return[false,validation.data.rangeOverflowMessage||i18n.invalid_field]}if(input.validity.rangeUnderflow){input.setCustomValidity("Value is under the minimum value.");return[false,validation.data.rangeUnderflowMessage||i18n.invalid_field]}input.setCustomValidity("");return[true,"Success"]};const checkValidation=async()=>{const validation={data:{validationMessage:$input.data("validationMessage"),validationEmptyMessage:$input.data("validationEmptyMessage"),cannotBeEmpty:$input.attr("required")==="required"||$input.data("validationNotEmpty")==true,resolveDNS:$input.data("validationResolvedns"),rangeOverflowMessage:$input.data("validationRangeOverflowMessage"),rangeUnderflowMessage:$input.data("validationUnderflowOverflowMessage")},isInputEmpty:typeof $input.val()==="string"?$input.val().trim()=="":false};const[isValid,messageToShow]=await validInput(validation);let $error=$input.parent().find(`.invalid-feedback`);if($error.length==0){$error=$(``)}if(!isValid){$input.addClass("is-invalid");$input.parent().append($error);$error.text(messageToShow)}else{$input.removeClass("is-invalid");$error.fadeOut(500,function(){$(this).remove()})}};$(this).off("input").on("input",function(e){self.currentState=self.createFormSnapshot();if(timeoutId!=-1)clearTimeout(timeoutId);if(!$input.attr("formnovalidate")){timeoutId=setTimeout(()=>{checkValidation();self.toggleFormSubmission()},300);self.firstCloseAttempt=false}});$(this).off("invalid").on("invalid",function(e){e.preventDefault();if(!$input.attr("formnovalidate")){checkValidation()}})})}getModalID(){return $(this.element).parents(".modal").attr("id")}toggleFormSubmission(){let isValid=true;$(this.element).find("input:not(:disabled),select:not(:disabled),textarea:not(:disabled)").each(function(idx,input){isValid&=input.validity.valid});isValid?$(this.element).find(`[type='submit'],[type='test']`).removeAttr("disabled"):$(this.element).find(`[type='submit'],[type='test']`).attr("disabled","disabled")}cleanForm(){$(this.element).find("input,textarea,select").each(function(i,input){$(this).removeClass(`is-valid`).removeClass(`is-invalid`)});$(this.element)[0].reset()}makeRequest(){const $feedbackLabel=$(this.element).find(`.invalid-feedback`);const submitButton=$(this.element).find(`[type='submit']`);let dataToSend=this.options.beforeSumbit(this.data);dataToSend.csrf=this.csrf;dataToSend=$.extend(dataToSend,this.options.submitOptions);submitButton.attr("disabled","disabled");const self=this;if(this.options.endpoint){let request;if(self.options.method=="post"){request=$.ajax({url:this.options.endpoint,data:JSON.stringify(dataToSend),method:self.options.method,dataType:"json",contentType:"application/json; charset=utf-8"})}else{request=$.get(this.options.endpoint,dataToSend)}this.isSubmitting=true;request.done(function(response,textStatus){self.isSubmitting=false;self.currentState=null;if(self.options.resetAfterSubmit)self.cleanForm();$feedbackLabel.hide();const success=self.options.onSubmitSuccess(response,dataToSend,self);if(success){self.dialog.modal("hide")}$(self.element).off("submit",self.submitHandler);self.delegateSubmit()}).fail(function(jqxhr,textStatus,errorThrown){self.isSubmitting=false;const response=jqxhr.responseJSON;if(response.rc!==undefined&&response.rc<0){$feedbackLabel.html(i18n.rest[response.rc_str]).show()}self.options.onSubmitError(response,dataToSend,textStatus,errorThrown)}).always(function(d){submitButton.removeAttr("disabled")})}else{self.currentState=null;$feedbackLabel.hide();const success=self.options.onSubmitSuccess({},dataToSend,self);if(success){self.dialog.modal("hide")}$(self.element).off("submit",self.submitHandler);self.delegateSubmit();submitButton.removeAttr("disabled")}}delegateResetButton(){const self=this;const resetButton=$(this.element).find(`[type='reset']`);if(resetButton.length==0)return;const defaultValues=NtopUtils.serializeFormArray($(this.element).serializeArray());resetButton.click(function(e){e.preventDefault();$(self.element).find("input:visible,select").each(function(i,input){const key=$(input).attr("name");$(input).val(defaultValues[key]).removeClass("is-invalid").removeClass("is-valid")})})}}$.fn.modalHandler=function(args){if(this.length!=1)throw new Error("Only a form element can by initialized!");const options=$.extend({csrf:"",endpoint:"",resetAfterSubmit:true,dontDisableSubmit:false,isSyncRequest:false,method:"get",loadFormData:function(){},onModalInit:function(loadedData){},onModalShow:function(){},beforeSumbit:function(){return{}},onSubmitSuccess:function(response){},onSubmitError:function(sent,textStatus,errorThrown){},onModalReset:function(defaultData){}},args);const mh=new ModalHandler(this,options);mh.delegateSubmit();return mh}})(jQuery);function datatableRemoveEmptyRow(table){$("tbody tr.emptyRow",$(table)).remove()}function datatableAddEmptyRow(table,empty_str){var columns=$("thead th",$(table)).filter(function(){return $(this).css("display")!="none"}).length;$("tbody",$(table)).html(''+empty_str+"")}function datatableGetNumDisplayedItems(table){return $("tr:not(.emptyRow)",$(table)).length-1}function datatableIsEmpty(table){return datatableGetNumDisplayedItems(table)==0}function datatableGetByForm(form){return $("table",$("#dt-top-details",$(form)).parent())}function datatableUndoAddRow(new_row,empty_str,bt_to_enable,callback_str){if(bt_to_enable)$(bt_to_enable).removeAttr("disabled").removeClass("disabled");var form=$(new_row).closest("form");$(new_row).remove();aysUpdateForm(form);var dt=datatableGetByForm(form);if(datatableIsEmpty(dt))datatableAddEmptyRow(dt,empty_str);if(callback_str)window[callback_str](new_row)}function datatableForEachRow(table,callbacks){$("tr:not(:first)",table).each(function(row_i){if(typeof callbacks==="function"){callbacks.bind(this)(row_i)}else{var i;for(i=0;i"))}$("td:nth-child("+td_idx+")",$(this)).find(".d-flex").append(''+label+"")}function datatableAddDeleteButtonCallback(td_idx,callback_str,label){datatableAddButtonCallback.bind(this)(td_idx,label,"btn-danger",callback_str,"javascript:void(0)",true,"Delete")}function datatableAddActionButtonCallback(td_idx,callback_str,label,visible=true,title=""){datatableAddButtonCallback.bind(this)(td_idx,label,"btn-info",callback_str,"javascript:void(0)",visible,title)}function datatableAddFilterButtonCallback(td_idx,callback_str,label,title="",visible=true){datatableAddButtonCallback.bind(this)(td_idx,label,"btn-warning",callback_str,"javascript:void(0)",visible,title)}function datatableAddLinkButtonCallback(td_idx,link,label,title=""){datatableAddButtonCallback.bind(this)(td_idx,label,"btn-info","",link,true,title)}function datatableMakeSelectUnique(tr_obj,added_rows_prefix,options){options=NtopUtils.paramsExtend({on_change:$.noop,selector_fn:function(obj){return obj.find("select").first()}},options);function datatableForeachSelectOtherThan(this_select,added_rows_prefix,selector_fn,callback){$("[id^="+added_rows_prefix+"]").each(function(){var other=selector_fn($(this));if(other[0]!=this_select[0])callback(other)})}function datatableOptionChangeStatus(option_obj,enable){if(enable){option_obj.removeAttr("disabled")}else{var select_obj=option_obj.closest("select");var should_reset=select_obj.val()==option_obj.val();option_obj.attr("disabled","disabled");if(should_reset){var new_val=select_obj.find("option:not([disabled])").first().val();select_obj.val(new_val);select_obj.attr("data-old-val",new_val)}}}function datatableOnSelectEntryChange(added_rows_prefix,selector_fn,change_callback){var old_value=$(this).attr("data-old-val")||"";var new_value=$(this).val()||"";var others=[];if(old_value==new_value)old_value="";datatableForeachSelectOtherThan($(this),added_rows_prefix,selector_fn,function(other){datatableOptionChangeStatus(other.find("option[value='"+old_value+"']"),true);datatableOptionChangeStatus(other.find("option[value='"+new_value+"']"),false);others.push(other)});change_callback($(this),old_value,new_value,others,datatableOptionChangeStatus);$(this).attr("data-old-val",new_value)}function datatableOnAddSelectEntry(select_obj,added_rows_prefix,selector_fn){select_obj.val("");datatableForeachSelectOtherThan(select_obj,added_rows_prefix,selector_fn,function(other){other.trigger("change")});var new_sel=select_obj.find("option:not([disabled])").first();var new_val=new_sel.val();select_obj.val(new_val);select_obj.trigger("change")}var select=options.selector_fn(tr_obj);select.on("change",function(){datatableOnSelectEntryChange.bind(this)(added_rows_prefix,options.selector_fn,options.on_change)});select.on("remove",function(){$(this).val("").trigger("change")});datatableOnAddSelectEntry(select,added_rows_prefix,options.selector_fn)}function datatableOrderedInsert(table,td_idx,to_insert,to_insert_val,cmp_fn){var cmp_fn=cmp_fn||function(a,b){return b-a};var inserted=false;datatableForEachRow(table,function(){if(inserted)return;var tr=$(this);var cmp_val=parseInt($("td:nth-child("+td_idx+")",tr).html());if(!isNaN(cmp_val)&&cmp_fn(cmp_val,to_insert_val)<0){tr.before(to_insert);inserted=true}});if(!inserted)$(table).append(to_insert)}function datatableIsLastPage(table){var lastpage=$("#dt-bottom-details .pagination li:nth-last-child(3)",$(table));return!(lastpage.length==1&&lastpage.hasClass("active")==false)}function datatableGetColumn(table,id_key,id_value){var res=table.data("datatable").resultset.data.filter(function(item){return item[id_key]===id_value});if(res)return res[0]}function datatableGetColumnIndex(table,column_key){var index=table.data("datatable").options.columns.findIndex(function(item){return item.field===column_key});return index}function datatableInitRefreshRows(table,column_id,refresh_interval,trend_columns){var $dt=table.data("datatable");var rows=$dt.resultset.data;var old_timer=table.data("dt-rr-timer");var old_req=table.data("dt-rr-ajax");trend_columns=trend_columns||{};if(old_timer){clearInterval(old_timer);table.removeData("dt-rr-timer")}if(old_req){old_req.abort();table.removeData("dt-rr-ajax")}var ids=[];var id_to_row={};for(var row in rows){var data=rows[row];if(data[column_id]){var data_id=data[column_id];id_to_row[data_id]=row;ids.push(data_id)}}if(!ids)return false;var params={custom_hosts:ids.join(",")};var url=$dt.options.url;var first_load=true;var _process_result=function(result){if(typeof result==="string")result=JSON.parse(result);if(!result){console.error("Bad JSON result");return}for(var row in result.data){var data=result.data[row];var data_id=data[column_id];if(data_id&&id_to_row[data_id]){var row_idx=id_to_row[data_id];var row_html=$dt.rows[row_idx];var row_tds=$("td",row_html);for(var key in data){var col_idx=datatableGetColumnIndex(table,key);var cell=row_tds[col_idx];var $cell=$(cell);var old_val=$cell.data("dt-rr-cur-val")||$(cell).html();var trend_value_formatter=trend_columns[key];var new_val=data[key];var arrows="";if(trend_value_formatter){if(parseFloat(new_val)!=new_val)console.warn("Invalid number: "+new_val);if(!first_load)arrows=" "+NtopUtils.drawTrend(parseFloat(new_val),parseFloat(old_val));$cell.data("dt-rr-cur-val",new_val);new_val=trend_value_formatter(new_val)}$(cell).html(new_val!=0?new_val+arrows:"")}}}first_load=false;table.removeData("dt-rr-ajax")};table.data("dt-rr-timer",setInterval(function(){var old_req=table.data("dt-rr-ajax");if(old_req)return;table.data("dt-rr-ajax",$.ajax({type:"GET",url:url,data:params,cache:false,success:_process_result}))},refresh_interval));_process_result($dt.resultset)}jQuery.fn.dataTableExt.sErrMode="console";jQuery.fn.dataTableExt.formatSecondsToHHMMSS=((data,type,row)=>{if(isNaN(data))return data;if(type=="display"&&data<=0)return" ";if(type=="display")return NtopUtils.secondsToTime(data);return data});jQuery.fn.dataTableExt.absoluteFormatSecondsToHHMMSS=((data,type,row)=>{if(isNaN(data))return data;if(type=="display"&&data<=0)return" ";const delta=Math.floor(Date.now()/1e3)-data;if(type=="display")return NtopUtils.secondsToTime(delta);return data});jQuery.fn.dataTableExt.sortBytes=((byte,type,row)=>{if(type=="display")return NtopUtils.bytesToSize(byte);return byte});jQuery.fn.dataTableExt.hideIfZero=((value,type,row)=>{if(type==="display"&&parseInt(value)===0)return"";return value});jQuery.fn.dataTableExt.showProgress=((percentage,type,row)=>{if(type==="display"){const fixed=percentage.toFixed(1);return`\n
\n \n \n \n ${fixed}%\n
\n `}return percentage});$.fn.dataTable.Api.registerPlural("columns().names()","column().name()",function(setter){return this.iterator("column",function(settings,column){var col=settings.aoColumns[column];if(setter!==undefined){col.sName=setter;return this}else{return col.sName}},1)});class DataTableFiltersMenu{constructor({tableAPI:tableAPI,filterMenuKey:filterMenuKey,filterTitle:filterTitle,filters:filters,columnIndex:columnIndex}){this.rawFilters=filters;this.tableAPI=tableAPI;this.filterTitle=filterTitle;this.filterMenuKey=filterMenuKey;this.columnIndex=columnIndex;this.preventUpdate=false;this.currentFilterSelected=undefined;this.$datatableWrapper=$(tableAPI.context[0].nTableWrapper)}get selectedFilter(){return this.currentFilterSelected}init(){const self=this;this.$datatableWrapper.on("init.dt",function(){self._render(self.rawFilters)});this.tableAPI.on("draw",function(){self._update()});return self}_countEntries(regex,data=[]){if(regex===undefined){console.error("DataTableFiltersMenu::_countEntries() => the passed regex is undefined!")}const reg=new RegExp(regex);return data.filter(cellValue=>reg.test(cellValue)).length}_createMenuEntry(filter){const self=this;const $entry=$(``);if(filter.countable===undefined||filter.countable){const data=this.tableAPI.columns(this.columnIndex).data()[0];const count=this._countEntries(filter.regex,data);const $counter=$(`(${count})`);if(count==0)$entry.hide();$entry.append($counter)}$entry.click(function(e){self.preventUpdate=true;if(self.$dropdown.title.parent().find(`i.fas`).length==0){self.$dropdown.title.parent().prepend(``)}const newContent=$entry.html();self.$dropdown.title.html(newContent);self.$dropdown.container.find("li").removeClass(`active`);$entry.addClass(`active`);if(filter.callback)filter.callback();self.tableAPI.column(self.columnIndex).search(filter.regex,true,false).draw();self.currentFilterSelected=filter});return $entry}_createFilters(filters){const filtersCreated={};for(const filter of filters){const $filter=this._createMenuEntry(filter);filtersCreated[filter.key]={filter:filter,$node:$filter}}return filtersCreated}_render(filters){const $dropdownContainer=$(``);const $dropdownButton=$(``);const $dropdownTitle=$(`${this.filterTitle}`);$dropdownButton.append($dropdownTitle);this.filters=this._createFilters(filters);this.$dropdown={container:$dropdownContainer,title:$dropdownTitle,button:$dropdownButton};const $menuContainer=$(``);for(const[_,filter]of Object.entries(this.filters)){$menuContainer.append(filter.$node)}const allFilter=this._generateAllFilter();$menuContainer.prepend(this._createMenuEntry(allFilter));$dropdownContainer.append($dropdownButton);$dropdownContainer.append($menuContainer);$dropdownContainer.insertBefore(this.$datatableWrapper.find(".dataTables_filter").parent());this._selectFilterFromState(this.filterMenuKey)}_selectFilterFromState(filterKey){if(!this.tableAPI.state)return;if(!this.tableAPI.state.loaded())return;if(!this.tableAPI.state.loaded().filters)return;tableAPI.state.save()}_generateAllFilter(){return{key:"all",label:i18n.all,regex:"",countable:false,callback:()=>{this.$dropdown.title.parent().find("i.fas.fa-filter").remove();this.$dropdown.title.html(`${this.filterTitle}`)}}}_update(){if(this.filters===undefined)return;if(this.preventUpdate){this.preventUpdate=false;return}for(const[_,filter]of Object.entries(this.filters)){if(filter.countable==false)continue;const data=this.tableAPI.columns(this.columnIndex).data()[0];const count=this._countEntries(filter.filter.regex,data);count==0?filter.$node.hide():filter.$node.show();filter.$node.find(".counter").text(`(${count})`);this.$dropdown.button.find(".counter").text(`(${count})`)}}}class DataTableRangeFiltersMenu extends DataTableFiltersMenu{constructor(params){super(params);const self=this;this.selectedMin=Number.MIN_VALUE;this.selectedMax=Number.MAX_VALUE;$.fn.dataTable.ext.search.push(function(settings,data,dataIndex){const min=self.selectedMin||Number.MIN_VALUE;const max=self.selectedMax||Number.MAX_VALUE;const currentValue=parseFloat(data[params.columnIndex])||0;return isNaN(min)&&isNaN(max)||isNaN(min)&¤tValue<=max||min<=currentValue&&isNaN(max)||min<=currentValue&¤tValue<=max});this.tableAPI.draw();params.rawFilters=params.filters.map(filter=>{filter.regex="";filter.min=filter.min||Number.MIN_VALUE;filter.max=filter.max||Number.MAX_VALUE;filter.countable=false;filter.callback=(()=>{self.selectedMax=filter.max;self.selectedMin=filter.min;self.tableAPI.draw()});return filter})}_generateAllFilter(){const all=super._generateAllFilter();const oldCallback=all.callback;all.callback=(()=>{oldCallback();this.selectedMin=Number.MIN_VALUE;this.selectedMax=Number.MAX_VALUE;this.tableAPI.draw()});return all}}class DataTableUtils{static getStdDatatableConfig(dtButtons=[],dom="<'row'<'col-sm-12 col-md-6'l><'col-sm-12 col-md-6 text-end'<'dt-search'f>B>rtip>"){if(dtButtons.length==0){dom="fBrtip"}return{dom:dom,pagingType:"full_numbers",lengthMenu:[[10,25,50,-1],[10,25,50,`${i18n.all}`]],language:{info:i18n.showing_x_to_y_rows,search:i18n.script_search,infoFiltered:"",paginate:{previous:"<",next:">",first:"«",last:"»"}},saveState:true,responsive:true,buttons:{buttons:dtButtons,dom:{button:{className:"btn btn-link"},container:{className:"d-inline-block"}}}}}static createActionButtons(actions=[]){const buttons=[];actions.forEach(action=>{let button=`\n \n \n \n `;buttons.push(button)});return`
${buttons.join("")}
`}static setAjaxConfig(config,url,dataSrc="",method="get",params={}){config.ajax={url:url,type:method,dataSrc:dataSrc,data:function(d){return $.extend({},d,params)}};return config}static extendConfig(config,extension){if(extension.hasFilters){extension.stateSaveCallback=function(settings,data){localStorage.setItem("DataTables_"+settings.sInstance,JSON.stringify(data))};extension.stateLoadCallback=function(settings){return JSON.parse(localStorage.getItem("DataTables_"+settings.sInstance))};extension.stateSaveParams=function(settings,data){$("[data-filter]").each(function(){const activeFilter=$(this).find(`li.active`).data("filter-key");if(!activeFilter)return;if(!data.filters)data.filters={};data.filters[$(this).data("filter")]=activeFilter})}}return $.extend({},config,extension)}static secondsToHHMMSS(seconds){const padZeroes=n=>`${n}`.padStart(2,"0");const sec=seconds%60;const mins=Math.floor(seconds/60)%60;const hours=Math.floor(seconds/3600);return`${padZeroes(hours)}:${padZeroes(mins)}:${padZeroes(sec)}`}static openEditModalByQuery(params){const urlParams=new URLSearchParams(window.location.search);if(!urlParams.has(params.paramName))return;const dataID=urlParams.get(params.paramName);const data=params.datatableInstance.data().toArray().find(data=>data[params.paramName]==dataID);if(typeof params.cancelIf==="function"){if(params.cancelIf(data))return}const $modal=$(`#${params.modalHandler.getModalID()}`);if(data!==undefined){params.modalHandler.invokeModalInit(data);$modal.modal("show")}if(!urlParams.has("referer")){$modal.on("hidden.bs.modal",function(e){const url=new URL(window.location.href);url.searchParams.delete(params.paramName);history.replaceState({},"",url.toString())});return}const referer=urlParams.get("referer");$modal.on("hidden.bs.modal",function(e){window.location=referer})}static addToggleColumnsDropdown(tableAPI,toggleCallback=((col,visible)=>{})){if(tableAPI===undefined){throw"The $table is undefined!"}const tableID=tableAPI.table().node().id;DataTableUtils._loadColumnsVisibility(tableAPI).then(function(fetchedData){let savedColumns=[-1];if(fetchedData.success){savedColumns=fetchedData.columns.map(i=>parseInt(i))}else{console.warn(fetchedData.message)}const columns=[];const ignoredColumns=[];const $datatableWrapper=$(tableAPI.context[0].nTableWrapper);tableAPI.columns().every(function(i){if(!tableAPI.column(i).visible()){ignoredColumns.push(i);return}columns.push({index:i,name:this.header().textContent})});const $btnGroup=$(`\n
\n \n
\n `);const $dropdownMenu=$(``);const $checkboxes=$(`
`);for(let i=0;i`);const $wrapper=$(`\n
\n \n
\n `);$checkbox.on("change",function(e){const col=tableAPI.column(column.index);col.visible(!col.visible());const visible=col.visible();const hiddenColumns=[];tableAPI.columns().every(function(i){if(tableAPI.column(i).visible()||ignoredColumns.indexOf(i)!==-1)return;hiddenColumns.push(i)});$.post(`${http_prefix}/lua/datatable_columns.lua`,{action:"save",table:tableID,columns:hiddenColumns.join(","),csrf:window.__CSRF_DATATABLE__}).then(function(data){if(data.success)return;console.warn(data.message)});if(toggleCallback!==undefined){toggleCallback(col,visible)}});$wrapper.prepend($checkbox);$checkboxes.append($wrapper)}$dropdownMenu.on("click.bs.dropdown",function(e){e.stopPropagation()});$btnGroup.append($dropdownMenu.append($checkboxes));$datatableWrapper.find(".dt-search").parent().append($btnGroup)})}static async _loadColumnsVisibility(tableAPI){const tableID=tableAPI.table().node().id;return $.get(`${http_prefix}/lua/datatable_columns.lua?table=${tableID}&action=load`)}}class DataTableRenders{static alertSeverityAndType(severity,type,alert){return`${DataTableRenders.formatValueLabel(severity,type,alert)} ${DataTableRenders.formatValueLabel(alert.alert_id,type,alert)}`}static hideIfZero(obj,type,row){let color=obj.color!==undefined?obj.color:"#aaa";let value=obj.value!==undefined?obj.value:obj;if(type==="display"&&parseInt(value)===0)color="#aaa";let span=`${NtopUtils.fint(value)}`;if(obj.url!==undefined)span=`${span}`;return span}static secondsToTime(seconds,type,row){if(type==="display")return NtopUtils.secondsToTime(seconds);return seconds}static filterize(key,value,label,tag_label){return`${label||value}`}static formatValueLabel(obj,type,row){if(type!=="display")return obj.value;let cell=obj.label;if(obj.color)cell=`${cell}`;return cell}static formatSubtype(obj,type,row){if(type!=="display")return obj;let label=DataTableRenders.filterize("subtype",obj,obj);return label}static formatHost(obj,type,row){if(type!=="display")return obj;let html_ref="";if(obj.reference!==undefined)html_ref=obj.reference;let label=obj.shown_label||obj.label;label=DataTableRenders.filterize("ip",obj.value,label);if(row.role&&row.role.value=="attacker")label=label+" "+DataTableRenders.filterize("role",row.role.value,'',row.role.label);else if(row.role&&row.role.value=="victim")label=label+" "+DataTableRenders.filterize("role",row.role.value,'',row.role.label);return label+" "+html_ref}static formatFlowTuple(flow,type,row){let active_ref=flow.active_url?``:"";let historical_ref=flow.historical_url?``:"";let cliLabel=DataTableRenders.filterize("cli_ip",flow.cli_ip.value,flow.cli_ip.label);let cliPortLabel=flow.cli_port&&flow.cli_port>0?":"+DataTableRenders.filterize("cli_port",flow.cli_port,flow.cli_port):"";let srvLabel=DataTableRenders.filterize("srv_ip",flow.srv_ip.value,flow.srv_ip.label);let srvPortLabel=flow.cli_port&&flow.cli_port>0?":"+DataTableRenders.filterize("srv_port",flow.srv_port,flow.srv_port):"";let cliIcons="";let srvIcons="";if(row.cli_role){if(row.cli_role.value=="attacker")cliIcons+=DataTableRenders.filterize("role","attacker",'',row.cli_role.tag_label);else if(row.cli_role.value=="victim")cliIcons+=DataTableRenders.filterize("role","victim",'',row.cli_role.tag_label)}if(row.srv_role){if(row.srv_role.value=="attacker")srvIcons+=DataTableRenders.filterize("role","attacker",'',row.srv_role.tag_label);else if(row.srv_role.value=="victim")srvIcons+=DataTableRenders.filterize("role","victim",'',row.srv_role.tag_label)}return`${active_ref} ${historical_ref} ${cliLabel}${cliPortLabel} ${cliIcons} ${flow.cli_ip.reference} ${srvLabel}${srvPortLabel} ${srvIcons} ${flow.srv_ip.reference}`}static formatNameDescription(obj,type,row){if(type!=="display")return obj.name;let msg=DataTableRenders.filterize("alert_id",obj.value,obj.name);if(obj.description){const strip_tags=function(html){let t=document.createElement("div");t.innerHTML=html;return t.textContent||t.innerText||""};let desc=strip_tags(obj.description);if(desc.startsWith(obj.name))desc=desc.replace(obj.name,"");let name_len=strip_tags(obj.name).length;let desc_len=desc.length;let total_len=name_len+desc_len;let tooltip="";let limit=30;if(row.family!="flow"){limit=50}if(total_len>limit){if(name_len>=limit){desc=""}else{desc=desc.substr(0,limit-obj.name.length);desc=desc.replace(/\s([^\s]*)$/,"");desc=desc+"…"}tooltip=strip_tags(obj.description)}msg=msg+': '+desc+""}if(obj.configset_ref)msg=msg+obj.configset_ref;return msg}static applyCellStyle(cell,cellData,rowData,rowIndex,colIndex){if(cellData.highlight){$(cell).css("border-left","5px solid "+cellData.highlight)}}}const globalToasts={};class Toast{constructor({title:title,body:body,link:link,delay:delay=0,id:id,style:style}={}){this.title=title;this.body=body;this.link=link;this.delay=delay;this.id=id;this.style=style}render(){const self=this;const $toast=$(``);if(this.delay!==0){$toast.data("autohide",true);$toast.data("delay",this.delay)}else{$toast.data("autohide",false)}$toast.data("notification-id",this.id);const $toastHeader=$(`
\n ${this.title}\n
`);const $toastBody=$(`
${this.body}
`);if(this.action&&this.action.link!=undefined&&this.action.link!=""){const $anchor=$(`${this.action.label}`);$toastBody.append($anchor)}if(this.dismissable){$toastHeader.append(`\n \n `)}if(this.isAboveAll){$toast.css("z-index","9999")}$toast.append($toastHeader,$toastBody);$toast.toast("show");$toast.on("hidden.bs.toast",function(){ToastUtils.hideToast(self.id)});this.$element=$toast;return $toast}updateBody(body){if(this.$element==undefined)throw"The notification has not been rendered yet!";this.$element.find(".toast-body span").text(body)}destroy(){this.$element.toast("dispose");this.$element.empty()}}class ToastUtils{static initToasts(){$(`.toast.notification`).each(function(){$(this).toast("show")})}static hideToast(toastId){if(!toastId){console.warn("The toast id cannot be null!");return}if(!(toastId in globalToasts)){console.warn("The toast hasn't been found!");return}globalToasts[toastId].destroy();delete globalToasts[toastId]}static updateToast(toastId,body){if(!(toastId in globalToasts)){throw"The toast was not found!"}globalToasts[toastId].updateBody(body)}static showToast(option){const styles={warning:{bg:"warning",text:"text-dark",icon:"fa-exclamation-circle"},info:{bg:"info",text:"text-white",icon:"fa-info-circle"},success:{bg:"success",text:"text-white",icon:"fa-check-circle"},error:{bg:"danger",text:"text-white",icon:"fa-times-circle"}};option.style=styles[option.level]||styles.warning;if(option.id===undefined)throw"A toast must have an in id!";if(option.id in globalToasts)return;if(option.title===undefined)throw"A toast must have a title!";if(option.body===undefined)throw"A toast must have a body!";const toast=new Toast(option);$(`#main-container`).prepend(toast.render());globalToasts[option.id]=toast;return toast}static dismissToast(id,csrf,success,failure){if(id==undefined){console.warn("A Toast ID must be defined to dismiss a toast!");return}const empty=()=>{};const request=$.post(`${http_prefix}/lua/dismiss_toast.lua`,{toast_id:id,csrf:csrf});request.done(success||empty);request.fail(failure||empty)}} //# sourceMappingURL=ntop.min.js.map \ No newline at end of file diff --git a/httpdocs/js/ntop.min.js.map b/httpdocs/js/ntop.min.js.map index 532975d4a5..e84025aa22 100644 --- a/httpdocs/js/ntop.min.js.map +++ b/httpdocs/js/ntop.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["utils/are-you-sure-utils.js","utils/string-utils.js","utils/ntop-utils.js","utils/graph-utils.js","utils/ebpf-utils.js","utils/ntopng-validators-utils.js","utils/modal-utils.js","utils/bootstrap-datatable-utils.js","utils/sprymedia-datatable-utils.js","utils/toast-utils.js"],"names":["aysHandleForm","form_selector","options","default_options","submit_selector","on_dirty_callback","$","noop","on_clean_callback","handle_submit_buttons","handle_datatable","handle_tabs","disable_on_dirty","ays_options","o","extend","areYouSure","find","attr","on","this","removeAttr","css","each","closest","hasClass","addClass","bind","removeClass","aysResetForm","trigger","aysUpdateForm","aysRecheckForm","aysGetDirty","fields_selector","getValue","$field","undefined","is","val","type","$option","isFieldDirty","origValue","data","curValue","dirty","l","dirty_status","input","push","String","prototype","capitalizeSingleWord","uc","toUpperCase","charAt","slice","capitalize","res","split","i","join","startsWith","string","indexOf","sformat","args","arguments","replace","match","number","contains","s","Date","format","M+","getMonth","d+","getDate","h+","getHours","m+","getMinutes","s+","getSeconds","q+","Math","floor","S","getMilliseconds","test","RegExp","$1","getFullYear","substr","length","k","jQuery","fn","disable","state","$this","disabled","toggleClass","NTOPNG_MIN_VISUAL_VALUE","REGEXES","ipv4","ipv6","domainName","port","url","macAddress","username","singleword","email","https","token","NtopUtils","[object Object]","substring","hostname","request","fetch","http_prefix","response","json","err","console","error","rc","rc_str","dataPattern","warn","pattern","map","p","toString","mac","value","what","optional_mask","elems","mask","ip_addr","isNumeric","parseInt","is_good_ipv4","address","is_good_ipv6","bits","sizes","bits_log1000","log","isNaN","round","pow","ret","parseFloat","toFixed","eps","scaleValue","exports","exports_label","i18n","toLowerCase","bytes","fbits","pps","fps","mps","ms","aps","x","when","epoch","d","actual","before","str","len","num","precision","kilobyte","megabyte","gigabyte","terabyte","current","last","withColor","enabled","prop","toggleAllTabs","nStr","x1","x2","rgx","scale","decimals","factor","n","addCommas","seconds","days","hours","minutes","sec","msg","msg_array","years","tdiff","getTime","secondsToTime","diff_epoch","tickFormat","defaults","override","form","params","hasOwnProperty","appendTo","host_key","info","hostinfo","nav_object","default_tab","click","e","preventDefault","id","target","history","replaceState","window","location","hash","tab","name","_add_find_host_link","network","snmp_port_idx","asn","html_tag","timestamp","html","localized","d3","time","host","queryString","query","pairs","pair","decodeURIComponent","cur_params","parseQuery","search","new_params","new_query","param","baseUrl","protocol","pathname","status_code","status_text","$error_label","is_different","message","request_failed_message","text","show","alert","loadConfigXHR","filename","hide","$button","file","files","no_file","reader","FileReader","readAsText","onload","jsonConfiguration","JSON","parse","result","rest_consts","responseJSON","done","status","xhr","successCallback","key","body","manage_configurations","messagges","import_all_success","import_success","ToastUtils","showToast","level","title","success","delay","modal","fail","PARTIAL_IMPORT_RC","failureCallback","FAILED_HTTP_REQUEST","always","serializedArray","serialized","forEach","obj","includes","trim","formSelector","reset","uri","controller","AbortController","config","signal","timeout","setTimeout","abort","then","ok","Error","statusText","catch","action","csrf","failure","empty","post","array","limit","and_x_more","hasReferer","refererParams","URL","Object","entries","searchParams","set","refUrl","href","poolId","poolType","getPoolLink","pool","rsp","$element","width","height","generateScaleElementKey","localStorage","setItem","stringify","identificator","page","elementId","className","currentValue","getItem","initDataPatterns","schema_2_label","data_2_label","graph_i18n","initLabelMaps","_schema_2_label","_data_2_label","_graph_i18n","getSerieLabel","schema","serie","visualization","serie_index","data_label","label","new_label","metrics_labels","ext_label","tags","category","l4proto","dscp_class","device","if_index","exporter","ifname","profile","check","command","traffic_volume","traffic","capitaliseFirstLetter","getValueFormatter","metric_type","series","custom_formatter","stats","formatters","functionName","formatterFunction","bytesToSize","fbits_from_bytes","fpackets","formatPackets","fpoints","formatPoints","as_counter","fflows","formatValue","formatFlows","fmillis","falerts","fpercent","max_val","ffloat","fint","makeFlatLineValues","tstart","tstep","t","values","checkSeriesConsinstency","schema_name","count","rv","upsampleSerie","num_points","intervals","lerp","v0","v1","index","prev_i","next_i","min","ceil","v","buildTotalSerie","data_series","transpose","g","sum","arrayToNvSerie","serie_data","start","step","buildOtherSerie","total_serie","visual_total","max","buildTimeArray","start_time","end_time","arr","fixTimeRange","chart","align_step","actual_step","epoch_end","epoch_begin","frame","align","tick_step","resolution","fmt","range_params","range","x_fmt","findActualStep","raw_step","supported_steps","retention","now_ts","now","delta","partial","aggregation_dp","tframe","retention_dp","has_initial_zoom","current_zoom_level","canCompareBackwards","jump_duration","current_duration","fixJumpButtons","duration","showQuerySlow","hideQuerySlow","chart_data_sum","reduce","acc","pt","redrawExtraLines","chart_id","extra_lines","selectAll","remove","xValueScale","xAxis","yValueScale","yAxis1","select","append","style","attachStackedChartCallback","zoom_reset_id","show_all_smooth","initial_range","ts_table_shown","pending_chart_request","pending_table_request","d3_sel","$chart","$zoom_reset","$graph_zoom","max_interval","initial_interval","is_max_zoom","first_load","first_time_loaded","manual_trigger_extra_series","datetime_format","max_cmp_over_total_ratio","max_line_over_total_ratio","query_timer","seconds_before_query_slow","query_completed","query_was_aborted","last_known_t","visualization_options","is_zoomed","unreachable_timestamps","spinner","parent","chart_colors_full","chart_colors_min","split_directions_colors","format_unreachable","formatter","y","num_ticks_y1","num_ticks_y2","domain_y1","domain_y2","first_run","update_chart_data","new_data","datum","call","transition","ticks","yAxis2","yDomain1","yDomain2","cur_domain_y1","domain","cur_domain_y2","y1_sum","filter","yAxis","y2_sum","nv","utils","windowResize","update","isLegendDisabled","default_val","legend","dispatch","legend_key","cur_zoom","t_start","xDomain","t_end","old_zoomed","is_user_zoom","updateStackedChart","push_state","getHistoryParameters","pushState","zoom_level","fixChartButtons","updateZoom","zoom","force","zoom_in","cur_interval","datetimepicker","updateChartFromPickers","zoom_out","event","go","addEventListener","zoom_link","link","checkQueryCompleted","flows_dt","wait_num_queries","clearInterval","queryWasAborted","abortQuery","noData","tableRequestCompleted","getDataUrl","data_params","ts_compare","extended","old_start","old_end","old_interval","tend","no_spinner","on_load_callback","force_update","series_formatted_labels","new_end","zoomType","setInterval","no_data_available","req_params","show_unreachable","no_fill","get","tickValues","color_i","chart_colors","j","current_step","serie_type","serie_color","split_directions","axis","color","has_full_data","additional_series","total","other_serie","other","past_serie","ratio_over_total","is_disabled","classed","extra_series","class","no_trend","num_smoothed_points","smooth_functions","add_smoothed_serie","fn_to_use","smoothed","delta_serie","aligned","scaled","remaining","to_fill","splice","yDomainRatioY2","ref_serie","tok","was_unreachable","is_unreachable","tval","tlast","formatter1","value_formatter","statistics","tot_formatter","stats_formatter","yAxis1_formatter","second_axis_series","formatter2","value_formatter2","yAxis2_formatter","stats_table","average","avg","splitSeriesInfo","stats_name","cell","show_date","first_timeseries_only","by_serie","total_cell","average_cell","min_cell","max_cell","perc_cell","min_val","min_val_idx","max_val_idx","enabled_series","updateState","source_aggregation","pendingRequest","updateGraphsTableView","graph_old_view","graph_old_has_nindex","graph_old_nindex_query","tsQueryToTags","ts_query","pos","recheckGraphTableEntries","table_view","graph_table_views","graph_params","reset_selection","view_id","view","elem","html_id","min_step","items_ul","idx","next_item","nextAll","first","divider","first_view","setActiveGraphsTableView","has_nindex","nindex_query","per_page","graph_table","nindex_buttons","params_obj","columns","nindex_view","col","field","textAlign","hidden","actions","text-align","old_dt","removeData","datatable","perPage","noResultsMessage","ts_chart","no_results_found","initial_point","detail_view","loadingYOffset","buttons","tableCallback","resultset","currentPage","stats_div","has_drilldown","some","row","drilldown","query_duration_msec","num_records_processed","rowCallback","row_data","draw_processes_graph","graph_div_id","links","nodes","_link","source_pid","source","source_name","source_type","pid","target_pid","target_name","target_type","arrow_size","category10","layout","size","linkDistance","charge","tick","svg","enter","path","circle","drag","linkArc","transform","dx","dy","dr","sqrt","makeUniqueValidator","items_function","cmp_name","memberValueValidator","member","is_mac_address","is_network_mask","makePasswordPatternValidator","passwordPatternValidator","passwordMatchValidator","other_input","not","poolnameValidator","passwordMatchRecheck","items","not_empty","hostOrMacValidator","ipAddressValidator","ModalHandler","element","dialog","dontDisableSubmit","observer","MutationObserver","list","bindFormValidation","toggleFormSubmission","observe","childList","subtree","initialState","currentState","firstCloseAttempt","isSubmitting","submitButton","snapshot","inputs","s1","s2","self","off","reportValidity","fadeOut","fadeIn","compareFormSnaphsot","selector","$hidden","cleanForm","loadFormData","delegateModalClosing","fillFormModal","onModalInit","parents","onModalShow","createFormSnapshot","delegateResetButton","submitHandler","isSyncRequest","stopPropagation","makeRequest","async","$input","timeoutId","validHostname","$spinner","resolveDNS","setCustomValidity","validInput","validation","cannotBeEmpty","isInputEmpty","validationEmptyMessage","missing_field","validity","patternMismatch","validationMessage","invalid_field","rangeOverflow","rangeOverflowMessage","rangeUnderflow","rangeUnderflowMessage","checkValidation","isValid","messageToShow","$error","clearTimeout","valid","$feedbackLabel","dataToSend","beforeSumbit","submitOptions","endpoint","method","ajax","dataType","contentType","textStatus","resetAfterSubmit","onSubmitSuccess","delegateSubmit","jqxhr","errorThrown","rest","onSubmitError","resetButton","defaultValues","serializeFormArray","serializeArray","modalHandler","loadedData","sent","onModalReset","defaultData","mh","datatableRemoveEmptyRow","table","datatableAddEmptyRow","empty_str","datatableGetNumDisplayedItems","datatableIsEmpty","datatableGetByForm","datatableUndoAddRow","new_row","bt_to_enable","callback_str","dt","datatableForEachRow","callbacks","row_i","datatableAddButtonCallback","td_idx","bs_class","visible","datatableAddDeleteButtonCallback","datatableAddActionButtonCallback","datatableAddFilterButtonCallback","datatableAddLinkButtonCallback","datatableMakeSelectUnique","tr_obj","added_rows_prefix","paramsExtend","on_change","selector_fn","datatableForeachSelectOtherThan","this_select","callback","datatableOptionChangeStatus","option_obj","enable","select_obj","should_reset","new_val","datatableOnSelectEntryChange","change_callback","old_value","new_value","others","datatableOnAddSelectEntry","new_sel","datatableOrderedInsert","to_insert","to_insert_val","cmp_fn","a","b","inserted","tr","cmp_val","datatableIsLastPage","lastpage","datatableGetColumn","id_key","id_value","item","datatableGetColumnIndex","column_key","findIndex","datatableInitRefreshRows","column_id","refresh_interval","trend_columns","$dt","rows","old_timer","old_req","ids","id_to_row","data_id","custom_hosts","_process_result","row_idx","row_html","row_tds","col_idx","$cell","old_val","trend_value_formatter","arrows","drawTrend","cache","dataTableExt","sErrMode","formatSecondsToHHMMSS","absoluteFormatSecondsToHHMMSS","sortBytes","byte","hideIfZero","showProgress","percentage","fixed","dataTable","Api","registerPlural","setter","iterator","settings","column","aoColumns","sName","DataTableFiltersMenu","tableAPI","filterMenuKey","filterTitle","filters","columnIndex","rawFilters","preventUpdate","currentFilterSelected","$datatableWrapper","context","nTableWrapper","selectedFilter","_render","_update","regex","reg","cellValue","$entry","countable","_countEntries","$counter","$dropdown","prepend","newContent","container","draw","filtersCreated","$filter","_createMenuEntry","$node","$dropdownContainer","$dropdownButton","$dropdownTitle","_createFilters","button","$menuContainer","_","allFilter","_generateAllFilter","insertBefore","_selectFilterFromState","filterKey","loaded","save","all","DataTableRangeFiltersMenu","super","selectedMin","Number","MIN_VALUE","selectedMax","MAX_VALUE","ext","dataIndex","oldCallback","DataTableUtils","dtButtons","dom","pagingType","lengthMenu","language","showing_x_to_y_rows","script_search","infoFiltered","paginate","previous","next","saveState","responsive","onclick","external","icon","dataSrc","extension","hasFilters","stateSaveCallback","sInstance","stateLoadCallback","stateSaveParams","activeFilter","padZeroes","padStart","mins","urlParams","URLSearchParams","has","paramName","dataID","datatableInstance","toArray","cancelIf","$modal","getModalID","invokeModalInit","delete","referer","toggleCallback","tableID","node","_loadColumnsVisibility","fetchedData","savedColumns","ignoredColumns","every","header","textContent","$btnGroup","$dropdownMenu","$checkboxes","toggled","$checkbox","$wrapper","hiddenColumns","__CSRF_DATATABLE__","DataTableRenders","severity","formatValueLabel","alert_id","span","tag_label","filterize","html_ref","reference","shown_label","role","flow","active_ref","active_url","historical_ref","historical_url","cliLabel","cli_ip","cliPortLabel","cli_port","srvLabel","srv_ip","srvPortLabel","srv_port","cliIcons","srvIcons","cli_role","srv_role","description","strip_tags","document","createElement","innerHTML","innerText","desc","name_len","desc_len","total_len","tooltip","family","configset_ref","cellData","rowData","rowIndex","colIndex","highlight","globalToasts","Toast","$toast","$toastHeader","bg","$toastBody","$anchor","dismissable","isAboveAll","toast","hideToast","toastId","destroy","updateBody","option","styles","warning","render","toast_id"],"mappings":"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"} \ No newline at end of file +{"version":3,"sources":["utils/are-you-sure-utils.js","utils/string-utils.js","utils/ntop-utils.js","utils/graph-utils.js","utils/ebpf-utils.js","utils/ntopng-validators-utils.js","utils/modal-utils.js","utils/bootstrap-datatable-utils.js","utils/sprymedia-datatable-utils.js","utils/toast-utils.js"],"names":["aysHandleForm","form_selector","options","default_options","submit_selector","on_dirty_callback","$","noop","on_clean_callback","handle_submit_buttons","handle_datatable","handle_tabs","disable_on_dirty","ays_options","o","extend","areYouSure","find","attr","on","this","removeAttr","css","each","closest","hasClass","addClass","bind","removeClass","aysResetForm","trigger","aysUpdateForm","aysRecheckForm","aysGetDirty","fields_selector","getValue","$field","undefined","is","val","type","$option","isFieldDirty","origValue","data","curValue","dirty","l","dirty_status","input","push","String","prototype","capitalizeSingleWord","uc","toUpperCase","charAt","slice","capitalize","res","split","i","join","startsWith","string","indexOf","sformat","args","arguments","replace","match","number","contains","s","Date","format","M+","getMonth","d+","getDate","h+","getHours","m+","getMinutes","s+","getSeconds","q+","Math","floor","S","getMilliseconds","test","RegExp","$1","getFullYear","substr","length","k","jQuery","fn","disable","state","$this","disabled","toggleClass","NTOPNG_MIN_VISUAL_VALUE","REGEXES","ipv4","ipv6","domainName","port","url","macAddress","username","singleword","email","https","token","NtopUtils","[object Object]","substring","hostname","request","fetch","http_prefix","response","json","err","console","error","rc","rc_str","dataPattern","warn","pattern","map","p","toString","mac","value","what","optional_mask","elems","mask","ip_addr","isNumeric","parseInt","is_good_ipv4","address","is_good_ipv6","bits","sizes","bits_log1000","log","isNaN","round","pow","ret","parseFloat","toFixed","eps","scaleValue","exports","exports_label","i18n","toLowerCase","bytes","fbits","pps","fps","mps","ms","aps","x","when","epoch","d","actual","before","str","len","num","precision","kilobyte","megabyte","gigabyte","terabyte","current","last","withColor","enabled","prop","toggleAllTabs","nStr","x1","x2","rgx","scale","decimals","factor","n","addCommas","seconds","days","hours","minutes","sec","msg","msg_array","years","tdiff","getTime","secondsToTime","diff_epoch","tickFormat","defaults","override","form","params","hasOwnProperty","appendTo","host_key","info","hostinfo","nav_object","default_tab","click","e","preventDefault","id","target","history","replaceState","window","location","hash","tab","name","_add_find_host_link","network","snmp_port_idx","asn","html_tag","timestamp","html","localized","d3","time","host","queryString","query","pairs","pair","decodeURIComponent","cur_params","parseQuery","search","new_params","new_query","param","baseUrl","protocol","pathname","status_code","status_text","$error_label","is_different","message","request_failed_message","text","show","alert","loadConfigXHR","filename","hide","$button","file","files","no_file","reader","FileReader","readAsText","onload","jsonConfiguration","JSON","parse","result","rest_consts","responseJSON","done","status","xhr","successCallback","key","body","manage_configurations","messagges","import_all_success","import_success","ToastUtils","showToast","level","title","success","delay","modal","fail","PARTIAL_IMPORT_RC","failureCallback","FAILED_HTTP_REQUEST","always","serializedArray","serialized","forEach","obj","includes","trim","formSelector","reset","uri","controller","AbortController","config","signal","timeout","setTimeout","abort","then","ok","Error","statusText","catch","action","csrf","failure","empty","post","array","limit","and_x_more","hasReferer","refererParams","URL","Object","entries","searchParams","set","refUrl","href","poolId","poolType","getPoolLink","pool","rsp","$element","width","height","generateScaleElementKey","localStorage","setItem","stringify","identificator","page","elementId","className","currentValue","getItem","initDataPatterns","schema_2_label","data_2_label","graph_i18n","initLabelMaps","_schema_2_label","_data_2_label","_graph_i18n","getSerieLabel","schema","serie","visualization","serie_index","data_label","label","new_label","metrics_labels","ext_label","tags","category","l4proto","dscp_class","device","if_index","exporter","ifname","profile","check","command","traffic_volume","traffic","capitaliseFirstLetter","getValueFormatter","metric_type","series","custom_formatter","stats","formatters","functionName","formatterFunction","bytesToSize","fbits_from_bytes","fpackets","formatPackets","fpoints","formatPoints","as_counter","fflows","formatValue","formatFlows","fmillis","falerts","fpercent","max_val","ffloat","fint","makeFlatLineValues","tstart","tstep","t","values","checkSeriesConsinstency","schema_name","count","rv","upsampleSerie","num_points","intervals","lerp","v0","v1","index","prev_i","next_i","min","ceil","v","buildTotalSerie","data_series","transpose","g","sum","arrayToNvSerie","serie_data","start","step","buildOtherSerie","total_serie","visual_total","max","buildTimeArray","start_time","end_time","arr","fixTimeRange","chart","align_step","actual_step","epoch_end","epoch_begin","frame","align","tick_step","resolution","fmt","range_params","range","x_fmt","findActualStep","raw_step","supported_steps","retention","now_ts","now","delta","partial","aggregation_dp","tframe","retention_dp","has_initial_zoom","current_zoom_level","canCompareBackwards","jump_duration","current_duration","fixJumpButtons","duration","showQuerySlow","hideQuerySlow","chart_data_sum","reduce","acc","pt","redrawExtraLines","chart_id","extra_lines","selectAll","remove","xValueScale","xAxis","yValueScale","yAxis1","select","append","style","attachStackedChartCallback","zoom_reset_id","show_all_smooth","initial_range","ts_table_shown","pending_chart_request","pending_table_request","d3_sel","$chart","$zoom_reset","$graph_zoom","max_interval","initial_interval","is_max_zoom","first_load","first_time_loaded","manual_trigger_extra_series","datetime_format","max_cmp_over_total_ratio","max_line_over_total_ratio","query_timer","seconds_before_query_slow","query_completed","query_was_aborted","last_known_t","visualization_options","is_zoomed","unreachable_timestamps","spinner","parent","chart_colors_full","chart_colors_min","split_directions_colors","format_unreachable","formatter","y","num_ticks_y1","num_ticks_y2","domain_y1","domain_y2","first_run","update_chart_data","new_data","datum","call","transition","ticks","yAxis2","yDomain1","yDomain2","cur_domain_y1","domain","cur_domain_y2","y1_sum","filter","yAxis","y2_sum","nv","utils","windowResize","update","isLegendDisabled","default_val","legend","dispatch","legend_key","cur_zoom","t_start","xDomain","t_end","old_zoomed","is_user_zoom","updateStackedChart","push_state","getHistoryParameters","pushState","zoom_level","fixChartButtons","updateZoom","zoom","force","zoom_in","cur_interval","datetimepicker","updateChartFromPickers","zoom_out","event","go","addEventListener","zoom_link","link","checkQueryCompleted","flows_dt","wait_num_queries","clearInterval","queryWasAborted","abortQuery","noData","tableRequestCompleted","getDataUrl","data_params","ts_compare","extended","old_start","old_end","old_interval","tend","no_spinner","on_load_callback","force_update","series_formatted_labels","new_end","zoomType","setInterval","no_data_available","req_params","show_unreachable","no_fill","get","tickValues","color_i","chart_colors","j","current_step","serie_type","serie_color","split_directions","axis","color","has_full_data","additional_series","total","other_serie","other","past_serie","ratio_over_total","is_disabled","classed","extra_series","class","no_trend","num_smoothed_points","smooth_functions","add_smoothed_serie","fn_to_use","smoothed","delta_serie","aligned","scaled","remaining","to_fill","splice","yDomainRatioY2","ref_serie","tok","was_unreachable","is_unreachable","tval","tlast","formatter1","value_formatter","statistics","tot_formatter","stats_formatter","yAxis1_formatter","second_axis_series","formatter2","value_formatter2","yAxis2_formatter","stats_table","average","avg","splitSeriesInfo","stats_name","cell","show_date","first_timeseries_only","by_serie","total_cell","average_cell","min_cell","max_cell","perc_cell","min_val","min_val_idx","max_val_idx","enabled_series","updateState","source_aggregation","pendingRequest","updateGraphsTableView","graph_old_view","graph_old_has_nindex","graph_old_nindex_query","tsQueryToTags","ts_query","pos","recheckGraphTableEntries","table_view","graph_table_views","graph_params","reset_selection","view_id","view","elem","html_id","min_step","items_ul","idx","next_item","nextAll","first","divider","first_view","setActiveGraphsTableView","has_nindex","nindex_query","per_page","graph_table","nindex_buttons","params_obj","columns","nindex_view","col","field","textAlign","hidden","actions","text-align","old_dt","removeData","datatable","perPage","noResultsMessage","ts_chart","no_results_found","initial_point","detail_view","loadingYOffset","buttons","tableCallback","resultset","currentPage","stats_div","has_drilldown","some","row","drilldown","query_duration_msec","num_records_processed","rowCallback","row_data","draw_processes_graph","graph_div_id","links","nodes","_link","source_pid","source","source_name","source_type","pid","target_pid","target_name","target_type","arrow_size","category10","layout","size","linkDistance","charge","tick","svg","enter","path","circle","drag","linkArc","transform","dx","dy","dr","sqrt","makeUniqueValidator","items_function","cmp_name","memberValueValidator","member","is_mac_address","is_network_mask","makePasswordPatternValidator","passwordPatternValidator","passwordMatchValidator","other_input","not","poolnameValidator","passwordMatchRecheck","items","not_empty","hostOrMacValidator","ipAddressValidator","ModalHandler","element","dialog","dontDisableSubmit","observer","MutationObserver","list","bindFormValidation","toggleFormSubmission","observe","childList","subtree","initialState","currentState","firstCloseAttempt","isSubmitting","submitButton","snapshot","inputs","s1","s2","self","off","reportValidity","fadeOut","fadeIn","compareFormSnaphsot","selector","$hidden","cleanForm","loadFormData","delegateModalClosing","fillFormModal","onModalInit","parents","onModalShow","createFormSnapshot","delegateResetButton","submitHandler","isSyncRequest","stopPropagation","makeRequest","async","$input","timeoutId","validHostname","$spinner","resolveDNS","setCustomValidity","validInput","validation","cannotBeEmpty","isInputEmpty","validationEmptyMessage","missing_field","validity","patternMismatch","validationMessage","invalid_field","rangeOverflow","rangeOverflowMessage","rangeUnderflow","rangeUnderflowMessage","checkValidation","isValid","messageToShow","$error","clearTimeout","valid","$feedbackLabel","dataToSend","beforeSumbit","submitOptions","endpoint","method","ajax","dataType","contentType","textStatus","resetAfterSubmit","onSubmitSuccess","delegateSubmit","jqxhr","errorThrown","rest","onSubmitError","resetButton","defaultValues","serializeFormArray","serializeArray","modalHandler","loadedData","sent","onModalReset","defaultData","mh","datatableRemoveEmptyRow","table","datatableAddEmptyRow","empty_str","datatableGetNumDisplayedItems","datatableIsEmpty","datatableGetByForm","datatableUndoAddRow","new_row","bt_to_enable","callback_str","dt","datatableForEachRow","callbacks","row_i","datatableAddButtonCallback","td_idx","bs_class","visible","datatableAddDeleteButtonCallback","datatableAddActionButtonCallback","datatableAddFilterButtonCallback","datatableAddLinkButtonCallback","datatableMakeSelectUnique","tr_obj","added_rows_prefix","paramsExtend","on_change","selector_fn","datatableForeachSelectOtherThan","this_select","callback","datatableOptionChangeStatus","option_obj","enable","select_obj","should_reset","new_val","datatableOnSelectEntryChange","change_callback","old_value","new_value","others","datatableOnAddSelectEntry","new_sel","datatableOrderedInsert","to_insert","to_insert_val","cmp_fn","a","b","inserted","tr","cmp_val","datatableIsLastPage","lastpage","datatableGetColumn","id_key","id_value","item","datatableGetColumnIndex","column_key","findIndex","datatableInitRefreshRows","column_id","refresh_interval","trend_columns","$dt","rows","old_timer","old_req","ids","id_to_row","data_id","custom_hosts","_process_result","row_idx","row_html","row_tds","col_idx","$cell","old_val","trend_value_formatter","arrows","drawTrend","cache","dataTableExt","sErrMode","formatSecondsToHHMMSS","absoluteFormatSecondsToHHMMSS","sortBytes","byte","hideIfZero","showProgress","percentage","fixed","dataTable","Api","registerPlural","setter","iterator","settings","column","aoColumns","sName","DataTableFiltersMenu","tableAPI","filterMenuKey","filterTitle","filters","columnIndex","rawFilters","preventUpdate","currentFilterSelected","$datatableWrapper","context","nTableWrapper","selectedFilter","_render","_update","regex","reg","cellValue","$entry","countable","_countEntries","$counter","$dropdown","prepend","newContent","container","draw","filtersCreated","$filter","_createMenuEntry","$node","$dropdownContainer","$dropdownButton","$dropdownTitle","_createFilters","button","$menuContainer","_","allFilter","_generateAllFilter","insertBefore","_selectFilterFromState","filterKey","loaded","save","all","DataTableRangeFiltersMenu","super","selectedMin","Number","MIN_VALUE","selectedMax","MAX_VALUE","ext","dataIndex","oldCallback","DataTableUtils","dtButtons","dom","pagingType","lengthMenu","language","showing_x_to_y_rows","script_search","infoFiltered","paginate","previous","next","saveState","responsive","onclick","external","icon","dataSrc","extension","hasFilters","stateSaveCallback","sInstance","stateLoadCallback","stateSaveParams","activeFilter","padZeroes","padStart","mins","urlParams","URLSearchParams","has","paramName","dataID","datatableInstance","toArray","cancelIf","$modal","getModalID","invokeModalInit","delete","referer","toggleCallback","tableID","node","_loadColumnsVisibility","fetchedData","savedColumns","ignoredColumns","every","header","textContent","$btnGroup","$dropdownMenu","$checkboxes","toggled","$checkbox","$wrapper","hiddenColumns","__CSRF_DATATABLE__","DataTableRenders","severity","formatValueLabel","alert_id","span","tag_label","filterize","html_ref","reference","shown_label","role","flow","active_ref","active_url","historical_ref","historical_url","cliLabel","cli_ip","cliPortLabel","cli_port","srvLabel","srv_ip","srvPortLabel","srv_port","cliIcons","srvIcons","cli_role","srv_role","description","strip_tags","document","createElement","innerHTML","innerText","desc","name_len","desc_len","total_len","tooltip","family","configset_ref","cellData","rowData","rowIndex","colIndex","highlight","globalToasts","Toast","$toast","$toastHeader","bg","$toastBody","$anchor","dismissable","isAboveAll","toast","hideToast","toastId","destroy","updateBody","option","styles","warning","render","toast_id"],"mappings":"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"} \ No newline at end of file diff --git a/httpdocs/js/utils/sprymedia-datatable-utils.js b/httpdocs/js/utils/sprymedia-datatable-utils.js index 1ba8e12021..5dea3309c6 100644 --- a/httpdocs/js/utils/sprymedia-datatable-utils.js +++ b/httpdocs/js/utils/sprymedia-datatable-utils.js @@ -697,16 +697,16 @@ class DataTableRenders { let srvIcons = ""; if (row.cli_role) { if (row.cli_role.value == 'attacker') - cliIcons += DataTableRenders.filterize('roles', 'has_attacker', '', row.cli_role.tag_label); + cliIcons += DataTableRenders.filterize('role', 'attacker', '', row.cli_role.tag_label); else if (row.cli_role.value == 'victim') - cliIcons += DataTableRenders.filterize('roles', 'has_victim', '', row.cli_role.tag_label); + cliIcons += DataTableRenders.filterize('role', 'victim', '', row.cli_role.tag_label); } if (row.srv_role) { if (row.srv_role.value == 'attacker') - srvIcons += DataTableRenders.filterize('roles', 'has_attacker', '', row.srv_role.tag_label); + srvIcons += DataTableRenders.filterize('role', 'attacker', '', row.srv_role.tag_label); else if (row.srv_role.value == 'victim') - srvIcons += DataTableRenders.filterize('roles', 'has_victim', '', row.srv_role.tag_label); + srvIcons += DataTableRenders.filterize('role', 'victim', '', row.srv_role.tag_label); } return `${active_ref} ${historical_ref} ${cliLabel}${cliPortLabel} ${cliIcons} ${flow.cli_ip.reference} ${srvLabel}${srvPortLabel} ${srvIcons} ${flow.srv_ip.reference}`; diff --git a/httpdocs/templates/pages/modals/alerts/filters/add.template b/httpdocs/templates/pages/modals/alerts/filters/add.template index 793647f652..026b1cf88f 100644 --- a/httpdocs/templates/pages/modals/alerts/filters/add.template +++ b/httpdocs/templates/pages/modals/alerts/filters/add.template @@ -193,30 +193,7 @@ - - - - - -