From 7c418a3c1e6047e8cc3a365ba8b8820f304a1f5f Mon Sep 17 00:00:00 2001 From: Simone Mainardi Date: Thu, 29 Jul 2021 12:18:36 +0200 Subject: [PATCH] Fixes invalid result reported when no L7 contacts can be found Fixes #5715 --- httpdocs/js/ntop.min.js | 2 +- httpdocs/js/ntop.min.js.map | 2 +- httpdocs/js/utils/graph-utils.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/httpdocs/js/ntop.min.js b/httpdocs/js/ntop.min.js index b14a2b1335..482de2ae69 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])(@[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]+(/.*)?)$",emailUrl:"^smtps?://[-a-zA-Z0-9:.]{1,256}+$",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/v2/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/v2/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;let time_elapsed=1;if(visualization.time_elapsed)time_elapsed=visualization.time_elapsed;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=val_formatter(stats[stats_name]/time_elapsed)+(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");var total_cell_title=stats_table.find(".graph-val-total-title");var average_cell_title=stats_table.find(".graph-val-average-title");var max_cell_title=stats_table.find(".graph-val-max-title");var min_cell_title=stats_table.find(".graph-val-min-title");var perc_cell_title=stats_table.find(".graph-val-95percentile-title");if(stats.total||total_cell_title.is(":visible"))splitSeriesInfo("total",total_cell_title,false,tot_formatter,true);if(stats.average||average_cell_title.is(":visible"))splitSeriesInfo("average",average_cell_title,false,stats_formatter);if((stats.max_val||max_cell_title.is(":visible"))&&res[0].values[stats.max_val_idx])splitSeriesInfo("max_val",max_cell_title,true,stats_formatter);if((stats.min_val||min_cell_title.is(":visible"))&&res[0].values[stats.min_val_idx])splitSeriesInfo("min_val",min_cell_title,true,stats_formatter);if(stats["95th_percentile"]||perc_cell.is(":visible")){splitSeriesInfo("95th_percentile",perc_cell_title,false,stats_formatter);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)})}}if(stats.total||total_cell.is(":visible"))splitSeriesInfo("total",total_cell,false,tot_formatter,true);if(stats.average||average_cell.is(":visible"))splitSeriesInfo("average",average_cell,false,stats_formatter);if((stats.min_val||min_cell.is(":visible"))&&res[0].values[stats.min_val_idx])splitSeriesInfo("min_val",min_cell,true,stats_formatter);if((stats.max_val||max_cell.is(":visible"))&&res[0].values[stats.max_val_idx])splitSeriesInfo("max_val",max_cell,true,stats_formatter);if(stats["95th_percentile"]||perc_cell.is(":visible")){splitSeriesInfo("95th_percentile",perc_cell,false,stats_formatter);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+='
"}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){let time_elapsed=data.stats.query_duration_msec/1e3;if(time_elapsed<.1)time_elapsed="< 0.1";$("#flows-query-time").html(time_elapsed);$("#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,response.rc_str_hr]}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(response.rc_str_hr).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){$(`.overlay`).toggle(500);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,title){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.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);if(row.role_cli_srv&&row.role_cli_srv.value=="client")label=label+" "+DataTableRenders.filterize("role_cli_srv",row.role_cli_srv.value,'',row.role_cli_srv.label);else if(row.role_cli_srv&&row.role_cli_srv.value=="server")label=label+" "+DataTableRenders.filterize("role_cli_srv",row.role_cli_srv.value,'',row.role_cli_srv.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,obj.fullname,obj.fullname);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])(@[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]+(/.*)?)$",emailUrl:"^smtps?://[-a-zA-Z0-9:.]{1,256}+$",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/v2/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/v2/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;let time_elapsed=1;if(visualization.time_elapsed)time_elapsed=visualization.time_elapsed;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=val_formatter(stats[stats_name]/time_elapsed)+(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");var total_cell_title=stats_table.find(".graph-val-total-title");var average_cell_title=stats_table.find(".graph-val-average-title");var max_cell_title=stats_table.find(".graph-val-max-title");var min_cell_title=stats_table.find(".graph-val-min-title");var perc_cell_title=stats_table.find(".graph-val-95percentile-title");if(stats.total||total_cell_title.is(":visible"))splitSeriesInfo("total",total_cell_title,false,tot_formatter,true);if(stats.average||average_cell_title.is(":visible"))splitSeriesInfo("average",average_cell_title,false,stats_formatter);if((stats.max_val||max_cell_title.is(":visible"))&&res[0].values[stats.max_val_idx])splitSeriesInfo("max_val",max_cell_title,true,stats_formatter);if((stats.min_val||min_cell_title.is(":visible"))&&res[0].values[stats.min_val_idx])splitSeriesInfo("min_val",min_cell_title,true,stats_formatter);if(stats["95th_percentile"]||perc_cell.is(":visible")){splitSeriesInfo("95th_percentile",perc_cell_title,false,stats_formatter);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)})}}if(stats.total||total_cell.is(":visible"))splitSeriesInfo("total",total_cell,false,tot_formatter,true);if(stats.average||average_cell.is(":visible"))splitSeriesInfo("average",average_cell,false,stats_formatter);if((stats.min_val||min_cell.is(":visible"))&&res[0].values[stats.min_val_idx])splitSeriesInfo("min_val",min_cell,true,stats_formatter);if((stats.max_val||max_cell.is(":visible"))&&res[0].values[stats.max_val_idx])splitSeriesInfo("max_val",max_cell,true,stats_formatter);if(stats["95th_percentile"]||perc_cell.is(":visible")){splitSeriesInfo("95th_percentile",perc_cell,false,stats_formatter);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+='
"}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.totalRows>0&&data.stats&&data.stats.query_duration_msec){let time_elapsed=data.stats.query_duration_msec/1e3;if(time_elapsed<.1)time_elapsed="< 0.1";$("#flows-query-time").html(time_elapsed);$("#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,response.rc_str_hr]}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(response.rc_str_hr).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){$(`.overlay`).toggle(500);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,title){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.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);if(row.role_cli_srv&&row.role_cli_srv.value=="client")label=label+" "+DataTableRenders.filterize("role_cli_srv",row.role_cli_srv.value,'',row.role_cli_srv.label);else if(row.role_cli_srv&&row.role_cli_srv.value=="server")label=label+" "+DataTableRenders.filterize("role_cli_srv",row.role_cli_srv.value,'',row.role_cli_srv.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,obj.fullname,obj.fullname);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 bdec7ad06c..b69ad7f784 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","emailUrl","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","time_elapsed","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","val_formatter","first_timeseries_only","by_serie","total_cell","average_cell","min_cell","max_cell","perc_cell","total_cell_title","average_cell_title","max_cell_title","min_cell_title","perc_cell_title","max_val_idx","min_val","min_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","rc_str_hr","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","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","toggle","hiddenColumns","__CSRF_DATATABLE__","DataTableRenders","severity","formatValueLabel","alert_id","span","tag_label","filterize","html_ref","reference","role","role_cli_srv","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","fullname","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","emailUrl","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","time_elapsed","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","val_formatter","first_timeseries_only","by_serie","total_cell","average_cell","min_cell","max_cell","perc_cell","total_cell_title","average_cell_title","max_cell_title","min_cell_title","perc_cell_title","max_val_idx","min_val","min_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","totalRows","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","rc_str_hr","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","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","toggle","hiddenColumns","__CSRF_DATATABLE__","DataTableRenders","severity","formatValueLabel","alert_id","span","tag_label","filterize","html_ref","reference","role","role_cli_srv","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","fullname","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/graph-utils.js b/httpdocs/js/utils/graph-utils.js index e28c51030e..22fb9467da 100644 --- a/httpdocs/js/utils/graph-utils.js +++ b/httpdocs/js/utils/graph-utils.js @@ -1493,7 +1493,7 @@ function updateGraphsTableView(view, graph_params, has_nindex, nindex_query, per if(!has_drilldown) $("table td:last-child, th:last-child", graph_table).remove(); - if(data && data.stats && data.stats.query_duration_msec) { + if(data && data.totalRows > 0 && data.stats && data.stats.query_duration_msec) { let time_elapsed = data.stats.query_duration_msec/1000.0; if(time_elapsed < 0.1) time_elapsed = "< 0.1"