diff --git a/httpdocs/js/ntop.min.js b/httpdocs/js/ntop.min.js index 4a970fa5f5..70260b6c9e 100644 --- a/httpdocs/js/ntop.min.js +++ b/httpdocs/js/ntop.min.js @@ -1,2 +1,2 @@ -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'+label+"")}function datatableAddDeleteButtonCallback(td_idx,callback_str,label){datatableAddButtonCallback.bind(this)(td_idx,label,"btn-danger",callback_str,"javascript:void(0)")}function datatableAddActionButtonCallback(td_idx,callback_str,label,visible=true){datatableAddButtonCallback.bind(this)(td_idx,label,"btn-info",callback_str,"javascript:void(0)",visible)}function datatableAddLinkButtonCallback(td_idx,link,label){datatableAddButtonCallback.bind(this)(td_idx,label,"btn-info","",link)}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)}function aysHandleForm(form_selector,options){if(!form_selector)form_selector="form";if(form_selector==="form"){form_selector='form:not([data-ays-ignore="true"])'}var default_options={submit_selector:'button[type="submit"]:not([data-ays-ignore="true"])',on_dirty_callback:$.noop,on_clean_callback:$.noop,handle_submit_buttons:true,handle_datatable:false,handle_tabs:false,disable_on_dirty:"",ays_options:{}};var o=$.extend(true,{},default_options,options);o.form_selector=form_selector;$(function(){$(o.form_selector).areYouSure(o.ays_options);if(o.handle_submit_buttons)$(o.form_selector).find(o.submit_selector).attr("disabled","disabled");$(o.form_selector).on("dirty.areYouSure",function(){if(o.handle_submit_buttons)$(this).find(o.submit_selector).removeAttr("disabled");if(o.handle_datatable){$(this).find("a.dropdown-toggle").attr("disabled","disabled");$(this).find("ul.pagination a").css("pointer-events","none").css("cursor","default")}if(o.handle_tabs){$(".nav-tabs").find("a").each(function(){if(!$(this).closest("li").hasClass("active"))$(this).removeAttr("data-toggle").closest("li").addClass("disabled")})}$(o.disable_on_dirty).addClass("disabled");o.on_dirty_callback.bind(this)()});$(o.form_selector).on("clean.areYouSure",function(){if(o.handle_submit_buttons)$(this).find(o.submit_selector).attr("disabled","disabled");if(o.handle_datatable){$(this).find("a.dropdown-toggle").removeAttr("disabled");$(this).find("ul.pagination a").css("pointer-events","").css("cursor","")}if(o.handle_tabs){$(".nav-tabs").find("a").each(function(){$(this).attr("data-toggle","tab").closest("li").removeClass("disabled")})}$(o.disable_on_dirty).removeClass("disabled");o.on_clean_callback.bind(this)()})})}function aysResetForm(form_selector){$(form_selector).trigger("reinitialize.areYouSure")}function aysUpdateForm(form_selector){$(form_selector).trigger("rescan.areYouSure")}function aysRecheckForm(form_selector){$(form_selector).trigger("checkform.areYouSure")}function aysGetDirty(form_selector,fields_selector){fields_selector=fields_selector||":input:not(input[type=submit]):not(input[type=button])";var getValue=function($field){if($field.hasClass("ays-ignore")||$field.hasClass("aysIgnore")||$field.attr("data-ays-ignore")||$field.attr("name")===undefined){return null}if($field.is(":disabled")){return"ays-disabled"}var val;var type=$field.attr("type");if($field.is("select")){type="select"}switch(type){case"checkbox":case"radio":val=$field.is(":checked");break;case"select":val="";$field.find("option").each(function(o){var $option=$(this);if($option.is(":selected")){val+=$option.val()}});break;default:val=$field.val()}return val};var isFieldDirty=function($field){var origValue=$field.data("ays-orig");var curValue=getValue($field);var dirty=undefined!==origValue&&origValue!=curValue;return{dirty:dirty,origValue:origValue,curValue:curValue}};var l=[];$(form_selector).find(fields_selector).each(function(){var dirty_status=isFieldDirty($(this));if(dirty_status.dirty){dirty_status.input=$(this);l.push(dirty_status)}});return l}String.prototype.capitalizeSingleWord=function(){var uc=this.toUpperCase();if(uc=="ASN"||uc=="OS")return uc;else return this.charAt(0).toUpperCase()+this.slice(1)};String.prototype.capitalize=function(){var res=this.split(" ");for(var i in res){res[i]=res[i].capitalizeSingleWord()}return res.join(" ")};String.prototype.startsWith=function(string){return this.indexOf(string)===0};String.prototype.sformat=function(){var args=arguments;return this.replace(/{(\d+)}/g,function(match,number){return typeof args[number]!="undefined"?args[number]:match})};if(typeof String.prototype.contains==="undefined"){String.prototype.contains=function(s){return this.indexOf(s)!==-1}}Date.prototype.format=function(format){var o={"M+":this.getMonth()+1,"d+":this.getDate(),"h+":this.getHours(),"m+":this.getMinutes(),"s+":this.getSeconds(),"q+":Math.floor((this.getMonth()+3)/3),S:this.getMilliseconds()};if(/(y+)/.test(format))format=format.replace(RegExp.$1,(this.getFullYear()+"").substr(4-RegExp.$1.length));for(var k in o)if(new RegExp("("+k+")").test(format))format=format.replace(RegExp.$1,RegExp.$1.length==1?o[k]:("00"+o[k]).substr((""+o[k]).length));return format};jQuery.fn.extend({disable:function(state){return this.each(function(){var $this=$(this);if($this.is("input, button, textarea, select"))this.disabled=state;else $this.toggleClass("disabled",state)})}});const NTOPNG_MIN_VISUAL_VALUE=.005;const REGEXES={ipv4:"^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9]).){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])$",ipv6:"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]):){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:)))(%.+)?s*$",domainName:"^(([a-zA-Z]{1})|([a-zA-Z]{1}[a-zA-Z]{1})|([a-zA-Z]{1}[0-9]{1})|([0-9]{1}[a-zA-Z]{1})|([a-zA-Z0-9][-_.a-zA-Z0-9]{1,61}[a-zA-Z0-9])).([a-zA-Z]{2,13}|[a-zA-Z0-9-]{2,30}.[a-zA-Z]{2,3})",url:"^(https?://[^/\\s]+(/.*)?)$",macAddress:"^([0-9A-Fa-f]{2}:){5}([0-9A-Fa-f]{2})$",username:"^(?=[a-zA-Z0-9._]{3,20}$)(?!.*[_.]{2})[^_.].*[^_.]$",singleword:"^(?=[a-zA-Z0-9._-]{3,20}$)(?!.*[_.-]{2})[^_.-].*[^_.-]$",email:"[A-Za-z0-9._%+-]{2,}@[a-zA-Z-]{1,}([.]{1}[a-zA-Z]{2,}|[.]{1}[a-zA-Z]{2,}[.]{1}[a-zA-Z]{2,})",https:"^https?://.+$",token:"^[0-9a-f]{32}"};class NtopUtils{static get REGEXES(){return REGEXES}static getIPv4RegexWithCIDR(){const length=REGEXES.ipv4.length;return`${REGEXES.ipv4.substring(0,length-1)}(\\/?)(\\b([0-9]|[12][0-9]|3[0-2])?\\b)$`}static getIPv6RegexWithCIDR(){const length=REGEXES.ipv6.length;return`${REGEXES.ipv6.substring(0,length-1)}(\\/?)\\b([0-9]|[1-9][0-9]|1[01][0-9]|12[0-8])?\\b$`}static async resolveDNS(hostname="ntop.org"){try{const request=await fetch(`${http_prefix}/lua/rest/v1/get/dns/resolve.lua?hostname=${hostname}`);const response=await request.json();return response}catch(err){console.error(`Something went wrong when resolving hostname: ${err}`)}return{rc:-1,rc_str:"FAILED_HTTP_REQUEST"}}static initDataPatterns(){$(`input[data-pattern]`).each(function(){const dataPattern=$(this).data("pattern");if(!dataPattern){console.warn(`An empty data-pattern on an input was found!`,this);return}const pattern=dataPattern.split("|").map(p=>REGEXES[p].toString()).join("|");$(this).attr("pattern",pattern);$(this).removeAttr("data-pattern")})}static is_good_ipv4(ipv4){return new RegExp(REGEXES.ipv4).test(ipv4)}static is_good_ipv6(ipv6){return new RegExp(REGEXES.ipv6).test(ipv6)}static is_mac_address(mac){return new RegExp(REGEXES.macAddress).test(mac)}static isNumeric(value){return/^\d+$/.test(value)}static is_network_mask(what,optional_mask){var elems=what.split("/");var mask=null;var ip_addr;if(elems.length!=2){if(!optional_mask)return null;else ip_addr=what}else{ip_addr=elems[0];if(!NtopUtils.isNumeric(elems[1]))return null;mask=parseInt(elems[1]);if(mask<0)return null}if(NtopUtils.is_good_ipv4(ip_addr)){if(mask===null)mask=32;else if(mask>32)return null;return{type:"ipv4",address:ip_addr,mask:mask}}else if(NtopUtils.is_good_ipv6(elems[0])){if(mask===null)mask=128;else if(mask>128)return false;return{type:"ipv6",address:ip_addr,mask:mask}}return null}static fbits(bits){const sizes=["bit/s","Kbit/s","Mbit/s","Gbit/s","Tbit/s"];if(typeof bits==="undefined")return"-";if(bits==0)return"0";if(bits>0&&bits=sizes.length){return"> "+sizes[sizes.length-1]}if(i<=1){return Math.round(bits/Math.pow(1e3,i)*100)/100+" "+sizes[i]}else{var ret=parseFloat(bits/Math.pow(1e3,i)).toFixed(2);if(ret%1==0)ret=Math.round(ret);return ret+" "+sizes[i]}}static export_rate(eps){if(typeof eps==="undefined")return"-";var sizes=["exp/s","Kexp/s"];if(eps==0)return"0";if(eps>0&&eps0&&exports0&&pps0&&pps0&&fps0&&mps'}else if(actual>before){return''}else{return''}}static abbreviateString(str,len){if(!str)return"";if(str.length=0&&bytes=kilobyte&&bytes=megabyte&&bytes=gigabyte&&bytes=terabyte)return parseFloat((bytes/terabyte).toFixed(precision))+" TB";else return parseFloat(bytes.toFixed(precision))+" Bytes"}static drawTrend(current,last,withColor){if(current==last){return''}else if(current>last){return'"}else{return''}}static toggleAllTabs(enabled){if(enabled===true)$("#historical-tabs-container").find("li").removeClass("disabled").find("a").attr("data-toggle","tab");else $("#historical-tabs-container").find("li").addClass("disabled").find("a").removeAttr("data-toggle")}static disableAllDropdownsAndTabs(){$("select").each(function(){$(this).prop("disabled",true)});NtopUtils.toggleAllTabs(false)}static enableAllDropdownsAndTabs(){$("select").each(function(){$(this).prop("disabled",false)});NtopUtils.toggleAllTabs(true)}static capitalize(s){return s&&s[0].toUpperCase()+s.slice(1)}static addCommas(nStr){nStr+="";var x=nStr.split(".");var x1=x[0];var x2=x.length>1?"."+x[1]:"";var rgx=/(\d+)(\d{3})/;while(rgx.test(x1)){x1=x1.replace(rgx,"$1"+","+"$2")}return x1+x2}static scaleValue(val,sizes,scale,decimals){if(val==0)return[0,sizes[0]];let factor=decimals?10*decimals:10;var i=parseInt(Math.floor(Math.log(val)/Math.log(scale)));if(i<0||isNaN(i)){i=0}else if(i>=sizes.length){i=sizes.length-1}return[Math.round(val/Math.pow(scale,i)*factor)/factor,sizes[i]]}static formatValue(val){var sizes=["","K","M","G","T"];if(val==0)return"0";if(val>0&&val0&&bytes0&&bits0){let years=Math.floor(days/365);if(years>0){days=days%365;msg=years+" year";if(years>1){msg+="s"}msg_array.push(msg);msg=""}msg=days+" day";if(days>1){msg+="s"}msg_array.push(msg);msg=""}if(hours>0){if(hours<10){msg="0"}msg+=hours+":"}if(minutes<10){msg+="0"}msg+=minutes+":";if(sec<10){msg+="0"}msg+=sec;msg_array.push(msg);return msg_array.join(", ")}static epoch2Seen(epoch){var d=new Date(epoch*1e3);var tdiff=Math.floor((new Date).getTime()/1e3-epoch);return d.format("dd/MM/yyyy hh:mm:ss")+" ["+NtopUtils.secondsToTime(tdiff)+" ago]"}static graphGetXAxisTicksFormat(diff_epoch){var tickFormat;if(diff_epoch<=86400){tickFormat="%H:%M:%S"}else if(diff_epoch<=2*86400){tickFormat="%b %e, %H:%M:%S"}else{tickFormat="%b %e"}return tickFormat}static paramsExtend(defaults,override){return $.extend({},defaults,override)}static paramsToForm(form,params){form=$(form);for(var k in params){if(params.hasOwnProperty(k)){var input=$('');input.appendTo(form)}}return form}static paramsPairsEncode(params){var i=0;var res={};for(var k in params){res["key_"+i]=k;res["val_"+i]=params[k];i=i+1}return res}static hostkey2hostInfo(host_key){var info;var hostinfo=[];host_key=host_key.replace(/____/g,":");host_key=host_key.replace(/___/g,"/");host_key=host_key.replace(/__/g,".");info=host_key.split("@");return info}static handle_tab_state(nav_object,default_tab){$("a",nav_object).click(function(e){e.preventDefault()});$(" > li > a",nav_object).on("shown.bs.tab",function(e){var id=$(e.target).attr("href").substr(1);if(history.replaceState){history.replaceState(null,null,"#"+id)}else{window.location.hash=id}});var hash=window.location.hash;if(!hash)hash="#"+default_tab;$('a[href="'+hash+'"]',nav_object).tab("show")}static _add_find_host_link(form,name,data){$("").attr({type:"hidden",id:name,name:name,value:data}).appendTo(form)}static makeFindHostBeforeSubmitCallback(http_prefix){return function(form,data){if(data.type=="mac"){form.attr("action",http_prefix+"/lua/mac_details.lua")}else if(data.type=="network"){form.attr("action",http_prefix+"/lua/hosts_stats.lua");NtopUtils._add_find_host_link(form,"network",data.network)}else if(data.type=="snmp"){form.attr("action",http_prefix+"/lua/pro/enterprise/snmp_interface_details.lua");NtopUtils._add_find_host_link(form,"snmp_port_idx",data.snmp_port_idx)}else if(data.type=="snmp_device"){form.attr("action",http_prefix+"/lua/pro/enterprise/snmp_device_details.lua")}else if(data.type=="asn"){form.attr("action",http_prefix+"/lua/hosts_stats.lua");NtopUtils._add_find_host_link(form,"asn",data.asn)}else{form.attr("action",http_prefix+"/lua/host_details.lua");NtopUtils._add_find_host_link(form,"mode","restore")}return true}}static tstampToDateString(html_tag,format,tdiff){tdiff=tdiff||0;var timestamp=parseInt(html_tag.html())+tdiff;var localized=d3.time.format(format)(new Date(timestamp*1e3));html_tag.html(localized).removeClass("hidden");return localized}static noHtml(s){return s.replace(/<[^>]+>/g,"")}static cleanCustomHostUrl(host){return host.replace(/^http:\/\//gi,"").replace(/^https:\/\//gi,"").replace(/^www\./gi,"").replace(/[^0-9a-zA-Z\.:\/_-]/gi,"")}static parseQuery(queryString){var query={};var pairs=(queryString[0]==="?"?queryString.substr(1):queryString).split("&");for(var i=0;i{if(response.rc<0){$("#import-error").text(response.rc_str).show();return}if(params.successCallback){params.successCallback(response)}ToastUtils.showToast({id:"import-configuration-alert",level:"success",title:i18n.success,body:i18n.manage_configurations.messagges.import_success,delay:2e3});$("#import-modal").modal("hide")}).fail(({responseJSON:responseJSON})=>{const PARTIAL_IMPORT_RC=-28;if(params.failureCallback){params.failureCallback(responseJSON)}if(responseJSON&&responseJSON.rc>0)return;if(responseJSON.rc==PARTIAL_IMPORT_RC)$(`#import-error`).removeClass("invalid-feedback").addClass("text-warning");$("#import-error").text(i18n.rest_consts[responseJSON.rc_str]||i18n.FAILED_HTTP_REQUEST).show()}).always(()=>{$button.removeAttr("disabled")})}})}static serializeFormArray(serializedArray){const serialized={};serializedArray.forEach(obj=>{if(obj.name.includes("[]")){return}else{if(typeof obj.value==="string"){obj.value=obj.value.trim()}serialized[obj.name]=obj.value}});return serialized}static cleanForm(formSelector){$(formSelector).find("input,select,textarea").each(function(i,input){$(this).removeClass(`is-valid`).removeClass(`is-invalid`)});$(formSelector)[0].reset()}static fetchWithTimeout(uri,options={},time=5e3){const controller=new AbortController;const config={...options,signal:controller.signal};const timeout=setTimeout(()=>{controller.abort()},time);return fetch(uri,config).then(response=>{if(!response.ok){throw new Error(`${response.status}: ${response.statusText}`)}return response}).catch(error=>{if(error.name==="AbortError"){throw new Error("Response timed out")}})}static setPref(action,csrf,success,failure){if(action==undefined){console.warn("An action key must be defined to set a preference!");return}const empty=()=>{};const request=$.post(`${http_prefix}/lua/update_prefs.lua`,{action:action,csrf:csrf});request.done(success||empty);request.fail(failure||empty)}static arrayToListString(array,limit){if(array==undefined)return"";if(array.length>limit){return array.slice(0,limit).join(", ")+` ${i18n.and_x_more.replace("$num",array.length-limit)}`}return array.slice(0,limit).join(", ")}static buildURL(location,params={},hasReferer=false,refererParams={}){const url=new URL(location,window.location);for(const[name,value]of Object.entries(params)){if(!value)continue;url.searchParams.set(name,value)}if(hasReferer){const refUrl=new URL(window.location.href);for(const[name,value]of Object.entries(refererParams)){if(!value)continue;refUrl.searchParams.set(name,value)}url.searchParams.set("referer",refUrl.toString())}return url.toString()}static getEditPoolLink(href,poolId){const url=new URL(href,window.location);url.searchParams.set("pool_id",poolId);return url.toString()}static getPoolLink(poolType,poolId=0){return`${http_prefix}/lua/rest/v1/get/${poolType}/pools.lua?pool=${poolId}`}static async getPool(poolType,id=0){if(poolType===null)throw"A pool type must be defined!";try{const request=await fetch(NtopUtils.getPoolLink(poolType,id));const pool=await request.json();if(pool.rc<0){return[false,{}]}return[true,pool.rsp[0]]}catch(err){return[false,{}]}}}$(document).ready(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.user_script)return serie.tags.user_script;else if(serie.tags.command)return serie.tags.command.substring(4).toUpperCase()}else if(data_label!="bytes"){if(serie.tags.protocol)return serie.tags.protocol+" ("+new_label+")";else if(serie.tags.category)return serie.tags.category+" ("+new_label+")";else if(serie.tags.device&&serie.tags.if_index)return serie.ext_label+" ("+new_label+")";else if(serie.tags.device&&serie.tags.port)return serie.tags.port+" ("+new_label+")"}else{if(serie.tags.protocol)return serie.tags.protocol;else if(serie.tags.category)return serie.tags.category;else if(serie.tags.profile)return serie.tags.profile;else if(data_label=="bytes"){if(schema.contains("volume"))return graph_i18n.traffic_volume;else return graph_i18n.traffic}}if(schema_2_label[schema])return NtopUtils.capitaliseFirstLetter(schema_2_label[schema]);if(new_label)return NtopUtils.capitaliseFirstLetter(new_label);return NtopUtils.capitaliseFirstLetter(data_label)}function getValueFormatter(schema,metric_type,series,custom_formatter,stats){if(series&&series.length&&series[0].label){if(custom_formatter){var formatters=[];if(typeof custom_formatter!="object")custom_formatter=[custom_formatter];for(var i=0;icount){console.error("points mismatch: serie '"+getSerieLabel(schema_name,series[i])+"' has "+data.length+" points, expected "+count);rv=false}else if(data.length.1)return res}function buildTimeArray(start_time,end_time,step){var arr=[];for(var t=start_time;t$.now())$("#btn-jump-time-ahead").addClass("disabled");else $("#btn-jump-time-ahead").removeClass("disabled")}function showQuerySlow(){$("#query-slow-alert").show()}function hideQuerySlow(){$("#query-slow-alert").hide()}function chart_data_sum(series){return series.reduce(function(acc,x){return acc+x.values.reduce(function(acc,pt){return acc+pt[1]||0},0)},0)}function redrawExtraLines(chart,chart_id,extra_lines){d3.selectAll(chart_id+" line.extra-line").remove();if(extra_lines.length>0){var xValueScale=chart.xAxis.scale();var yValueScale=chart.yAxis1.scale();var g=d3.select(chart_id+" .stack1Wrap");for(var i=0;i0||has_initial_zoom();let extra_lines=[];let unreachable_timestamps={};var spinner=$('');$chart.parent().css("position","relative");var chart_colors_full=["#69B87F","#94CFA4","#B3DEB6","#E5F1A6","#FFFCC6","#FEDEA5","#FFB97B","#FF8D6D","#E27B85"];var chart_colors_min=["#7CC28F","#FCD384","#FD977B"];var split_directions_colors=["#69B87F","#FF7C00","#FF4700"];function format_unreachable(formatter){return function(y,d){if(d&&unreachable_timestamps[d[0]])return i18n.unreachable_host;return formatter(y)}}var num_ticks_y1=null;var num_ticks_y2=null;var domain_y1=null;var domain_y2=null;var first_run=true;var update_chart_data=function(new_data){d3_sel.datum([]).call(chart);d3_sel.datum(new_data);d3_sel.transition().duration(500).call(chart);if(first_run){num_ticks_y1=chart.yAxis1.ticks();num_ticks_y2=chart.yAxis2.ticks();domain_y1=chart.yDomain1();domain_y2=chart.yDomain2();first_run=false}if(metric_type==="gauge"){var cur_domain_y1=chart.yAxis1.scale().domain();var cur_domain_y2=chart.yAxis2.scale().domain();cur_domain_y1=cur_domain_y1[1]-cur_domain_y1[0];cur_domain_y2=cur_domain_y2[1]-cur_domain_y2[0];if(chart.yAxis1.tickFormat()!=NtopUtils.ffloat)chart.yAxis1.ticks(Math.min(cur_domain_y1,num_ticks_y1));if(chart.yAxis2.tickFormat()!=NtopUtils.ffloat)chart.yAxis2.ticks(Math.min(cur_domain_y2,num_ticks_y2))}var y1_sum=chart_data_sum(new_data.filter(function(x){return x.yAxis==1}));var y2_sum=chart_data_sum(new_data.filter(function(x){return x.yAxis==2}));if(y1_sum==0)chart.yDomain1([0,1]);else chart.yDomain1(domain_y1);if(y2_sum==0)chart.yDomain2([0,1]);else chart.yDomain2(domain_y2);d3_sel.call(chart);nv.utils.windowResize(function(){chart.update();redrawExtraLines(chart,chart_id,extra_lines)});redrawExtraLines(chart,chart_id,extra_lines);spinner.remove()};function isLegendDisabled(key,default_val){if(typeof localStorage!=="undefined"){var val=localStorage.getItem("chart_series.disabled."+key);if(val!=null)return val==="true"}return default_val}chart.legend.dispatch.on("legendClick",function(d,i){manual_trigger_extra_series[d.legend_key]=true;if(typeof localStorage!=="undefined")localStorage.setItem("chart_series.disabled."+d.legend_key,!d.disabled?true:false)});chart.dispatch.on("zoom",function(e){var cur_zoom=[params.epoch_begin,params.epoch_end];var t_start=Math.floor(e.xDomain[0]);var t_end=Math.ceil(e.xDomain[1]);var old_zoomed=chart.is_zoomed;var is_user_zoom=typeof e.is_user_zoom!=="undefined"?e.is_user_zoom:true;chart.is_zoomed=true;if(chart.updateStackedChart(t_start,t_end,false,is_user_zoom)){if(is_user_zoom||e.push_state){current_zoom_level+=1;var url=NtopUtils.getHistoryParameters({epoch_begin:t_start,epoch_end:t_end});history.pushState({zoom_level:current_zoom_level,range:[t_start,t_end]},"",url)}chart.fixChartButtons()}else chart.is_zoomed=old_zoomed});function updateZoom(zoom,is_user_zoom,force){var t_start=zoom[0];var t_end=zoom[1];chart.updateStackedChart(t_start,t_end,false,is_user_zoom,null,force);chart.fixChartButtons()}chart.zoom_in=function(){var cur_interval=params.epoch_end-params.epoch_begin;if(cur_interval>60){var delta=cur_interval/4;$("#period_begin").datetimepicker("date",new Date((params.epoch_begin+delta)*1e3));$("#period_end").datetimepicker("date",new Date((params.epoch_end-delta)*1e3));updateChartFromPickers()}};chart.zoom_out=function(){var cur_interval=params.epoch_end-params.epoch_begin;var delta=cur_interval/2;$("#period_begin").datetimepicker("date",new Date((params.epoch_begin-delta)*1e3));$("#period_end").datetimepicker("date",new Date((params.epoch_end+delta)*1e3));updateChartFromPickers()};$chart.on("dblclick",function(event){if($(event.target).hasClass("nv-legend-text"))return;chart.zoom_out()});$zoom_reset.on("click",function(){if(current_zoom_level){history.go(-current_zoom_level)}});window.addEventListener("popstate",function(e){var zoom=initial_range;if(e.state){zoom=e.state.range;current_zoom_level=e.state.zoom_level}else current_zoom_level=0;updateZoom(zoom,true,true)});chart.fixChartButtons=function(){if(current_zoom_level>0||has_initial_zoom()){$graph_zoom.find(".btn-warning:not(.custom-zoom-btn)").addClass("initial-zoom-sel").removeClass("btn-warning");$graph_zoom.find(".custom-zoom-btn").css("visibility","visible");var zoom_link=$graph_zoom.find(".custom-zoom-btn");var link=zoom_link.val().replace(/&epoch_begin=.*/,"");link+="&epoch_begin="+params.epoch_begin+"&epoch_end="+params.epoch_end;zoom_link.val(link)}else{$graph_zoom.find(".initial-zoom-sel").addClass("btn-warning");$graph_zoom.find(".custom-zoom-btn").css("visibility","hidden");chart.is_zoomed=false}fixJumpButtons(params.epoch_begin,params.epoch_end);if(current_zoom_level>0)$zoom_reset.show();else $zoom_reset.hide()};function checkQueryCompleted(){var flows_dt=$("#chart1-flows");var wait_num_queries=ts_table_shown&&$("#chart1-flows").css("display")!=="none"?2:1;query_completed+=1;if(query_completed>=wait_num_queries){if(query_timer){clearInterval(query_timer);query_timer=null}hideQuerySlow()}}chart.queryWasAborted=function(){return query_was_aborted};chart.abortQuery=function(){query_was_aborted=true;if(pending_chart_request){pending_chart_request.abort();chart.noData(i18n.query_was_aborted);update_chart_data([])}if(pending_table_request)pending_table_request.abort();if(query_timer){clearInterval(query_timer);query_timer=null}hideQuerySlow()};chart.tableRequestCompleted=function(){checkQueryCompleted();pending_table_request=null};chart.getDataUrl=function(){var data_params=jQuery.extend({},params);delete data_params.zoom;delete data_params.ts_compare;data_params.extended=1;return url+"?"+$.param(data_params,true)};var old_start,old_end,old_interval;chart.updateStackedChart=function(tstart,tend,no_spinner,is_user_zoom,on_load_callback,force_update){if(tstart)params.epoch_begin=tstart;if(tend)params.epoch_end=tend;const series_formatted_labels={};const now=Date.now()/1e3;var cur_interval=params.epoch_end-params.epoch_begin;var actual_step=findActualStep(step,params.epoch_begin);max_interval=actual_step*6;if(cur_interval=now){params.epoch_begin=params.epoch_end-max_interval}else{params.epoch_begin=Math.floor(epoch-max_interval/2);params.epoch_end=Math.floor(epoch+max_interval/2)}is_max_zoom=true;chart.zoomType(null)}}else if(cur_interval>max_interval){is_max_zoom=false;chart.zoomType("x")}old_interval=cur_interval;if(!first_load||has_initial_zoom()||force_update)align_step=null;fixTimeRange(chart,params,align_step,actual_step);if(first_load)initial_range=[params.epoch_begin,params.epoch_end];if(old_start==params.epoch_begin&&old_end==params.epoch_end&&!force_update)return false;old_start=params.epoch_begin;old_end=params.epoch_end;if(pending_table_request)pending_table_request.abort();if(pending_chart_request)pending_chart_request.abort();else if(!no_spinner)spinner.appendTo($chart.parent());$("#period_begin").datetimepicker("date",new Date(params.epoch_begin*1e3));$("#period_end").datetimepicker("date",new Date(Math.min(params.epoch_end*1e3,$.now())));if(query_timer)clearInterval(query_timer);query_timer=setInterval(showQuerySlow,seconds_before_query_slow*1e3);query_completed=0;query_was_aborted=false;chart.noData(i18n.no_data_available);hideQuerySlow();var req_params=$.extend({},params);if(!canCompareBackwards(req_params.epoch_begin,req_params.epoch_end))delete req_params.ts_compare;if(visualization.show_unreachable)req_params.no_fill=1;pending_chart_request=$.get(url,req_params,function(data){data=data.rsp;if(data&&data.error)chart.noData(data.error);if(!data||!data.series||!data.series.length||!checkSeriesConsinstency(schema_name,data.count,data.series)){update_chart_data([]);return}var tick_step=Math.ceil(chart.tick_step/data.step)*data.step;chart.xAxis.tickValues(buildTimeArray(data.start,data.start+data.count*data.step,tick_step));chart.xAxis.tickFormat(function(d){return d3.time.format(chart.x_fmt)(new Date(d*1e3))});var res=[];var series=data.series;var total_serie;var color_i=0;var chart_colors=series.length<=chart_colors_min.length?chart_colors_min:chart_colors_full;for(var j=0;jmax_cmp_over_total_ratio)is_disabled=true;res.push({key:NtopUtils.capitaliseFirstLetter(key),yAxis:1,values:values,type:"line",classed:"line-dashed line-animated",color:"#7E91A0",legend_key:key,disabled:is_disabled})}}if(visualization&&visualization.extra_series){for(var i=0;imax_line_over_total_ratio)is_disabled=true;res.push({key:serie.label,yAxis:serie.axis||1,values:arrayToNvSerie(upsampleSerie([serie.value],data.count),data.start,data.step),type:serie.type||"line",color:serie.color||"red",classed:serie.class,legend_key:serie.label,disabled:is_disabled})}}if(!data.no_trend&&has_full_data&&total_serie.length>=3){var num_smoothed_points=Math.min(Math.max(Math.floor(total_serie.length/5),3),12);var smooth_functions={rsi:["RSI cur vs past","#00FF5D",relativeStrengthIndexArray,{periods:num_smoothed_points}]};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;inow&&now0)serie[serie.length]=[now,serie[serie.length-1][1]]}}var enabled_series=res.filter(function(d){return d.disabled!==true});if(second_axis_series.length>0||enabled_series.length==0){for(var i=0;i0){chart.legend.updateState(false)}update_chart_data(res);first_time_loaded=false;if(data.source_aggregation)$("#data-aggr-dropdown > button > span:first").html(data.source_aggregation)}).fail(function(xhr,status,error){if(xhr.statusText=="abort"){return}console.error("Error while retrieving the timeseries data ["+status+"]: "+error);chart.noData(error);update_chart_data([])}).always(function(data,status,xhr){checkQueryCompleted();pending_chart_request=null});if(first_load){first_load=false;$(function(){var flows_dt=$("#chart1-flows").data("datatable");if(flows_dt)pending_table_request=flows_dt.pendingRequest})}else{var flows_dt=$("#chart1-flows");if(ts_table_shown){updateGraphsTableView(null,params);if($("#chart1-flows").css("display")!=="none")pending_table_request=flows_dt.data("datatable").pendingRequest}}if(typeof on_load_callback==="function")on_load_callback(chart);return true}}var graph_old_view=null;var graph_old_has_nindex=null;var graph_old_nindex_query=null;function tsQueryToTags(ts_query){return ts_query.split(",").reduce(function(params,value){var pos=value.indexOf(":");if(pos!=-1){var k=value.slice(0,pos);var v=value.slice(pos+1);params[k]=v}return params},{})}function recheckGraphTableEntries(){var table_view=graph_table_views;var tdiff=graph_params.epoch_end-graph_params.epoch_begin;var reset_selection=false;$("#chart1-flows").show();$("#graphs-table-selector").show();for(view_id in table_view){var view=table_view[view_id];var elem=$("#"+view.html_id);if(tdiff<=view.min_step){if(graph_old_view.id===view_id)reset_selection=true;elem.hide()}else elem.show()}var items_ul=$("#graphs-table-active-view").closest(".btn-group").find("ul:first");items_ul.find("li.dropdown-header").each(function(idx,e){var next_item=$(e).nextAll("li").filter(function(idx,e){return $(e).css("display")!=="none"||!$(e).attr("data-view-id")}).first();var divider=$(e).nextAll(".divider").first();if(!next_item.attr("data-view-id")){$(e).hide();divider.hide()}else{$(e).show();divider.show()}});if(reset_selection){var first_view=items_ul.find("li[data-view-id]").filter(function(idx,e){return $(e).css("display")!=="none"}).first();if(first_view.length)setActiveGraphsTableView(first_view.attr("data-view-id"));else{$("#chart1-flows").hide();$("#graphs-table-selector").hide()}return false}return true}function updateGraphsTableView(view,graph_params,has_nindex,nindex_query,per_page){if(view)graph_old_view=view;if(!recheckGraphTableEntries(graph_params)){return}if(view){graph_old_has_nindex=has_nindex;graph_old_nindex_query=nindex_query}else{view=graph_old_view;has_nindex=graph_old_has_nindex;nindex_query=graph_old_nindex_query}var graph_table=$("#chart1-flows");nindex_query=nindex_query+"&begin_time_clause="+graph_params.epoch_begin+"&end_time_clause="+graph_params.epoch_end;var nindex_buttons="";var params_obj=tsQueryToTags(graph_params.ts_query);if(!params_obj.host){nindex_buttons+='
"}nindex_buttons+='
";if(view.columns){var url=http_prefix+(view.nindex_view?"/lua/pro/get_nindex_flows.lua":"/lua/pro/get_ts_table.lua");var columns=view.columns.map(function(col){return{title:col[1],field:col[0],css:{textAlign:col[2],width:col[3]},hidden:col[4]?true:false}});columns.push({title:i18n.actions,field:"drilldown",css:{width:"1%","white-space":"nowrap","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.loading_time){$("#flows-load-time").html(data.stats.loading_time);$("#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)}const registerServiceWorker=()=>{if("serviceWorker"in navigator){navigator.serviceWorker.register("/sw.js")}};const NOTIFICATION_DEBUG=false;class PushNotificationBuilder{constructor(title="Hello World"){this.title=title;this.options={};this.options.actions=[];this.options.icon="/img/icons/icon-128x128.png";this.options.badge="/img/icons/icon-72x72.png"}setTitle(title){this.title=title;return this}setBody(body){this.options.body=body;return this}setIcon(icon){this.options.icon=icon;return this}setLang(lang){this.options.lang=lang;return this}setRequireInteraction(interaction){this.options.requireInteraction=interaction;return this}setTimestamp(timestamp){this.options.timestamp=timestamp;return this}setOnClick(callback){this.callback=callback;return this}build(){const n=new Notification(this.title,this.options);if(this.callback){n.onclick=this.callback}return n}}class NotificationManager{static enableNotification(){try{Notification.requestPermission(status=>{if(NOTIFICATION_DEBUG)console.info(status)})}catch(err){console.error("Something went wrong! ☹️",err)}}static push(pushNotification={title:"Hello World",options:{}}){if(!pushNotification)throw"The notification object cannot be null!";if(NotificationManager.canReceiveNotification){(async()=>{try{const registration=await navigator.serviceWorker.getRegistration();registration.showNotification(pushNotification.title,pushNotification.options)}catch(err){console.error(err)}})()}}static get canReceiveNotification(){return NotificationManager.permissionNotification=="granted"}static get permissionNotification(){return Notification.permission}}(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!")}submitButton.attr("disabled","disabled")}initDataPatterns(){NtopUtils.initDataPatterns()}createFormSnapshot(){const snapshot={inputs:{},hidden:[]};$(this.element).find('textarea,select,input[type!="radio"]').each(function(){const type=$(this).prop("nodeName").toLowerCase();const name=$(this).attr("name");snapshot.inputs[`${type}[name='${name}']`]=$(this).val()});$(this.element).find(`[style='display: none;'], span.invalid-feedback`).each(function(){snapshot.hidden.push($(this))});return snapshot}compareFormSnaphsot(s1,s2){if(s1==null||s2==null)return true;for(let[key,value]of Object.entries(s1.inputs)){if(s2.inputs[key]!=value)return false}return true}delegateModalClosing(){const self=this;$(this.dialog).find("button.cancel").off("click").click(function(){self.firstCloseAttempt=false;$(self.element)[0].reportValidity();$(self.dialog).find(".confirm-closing").fadeOut(100,function(){$(self.dialog).find("button.close").fadeIn(100)})});$(this.dialog).off("hide.bs.modal").on("hide.bs.modal",function(event){if(self.isSubmitting){event.preventDefault();return}if(self.compareFormSnaphsot(self.currentState,self.initialState)){return}if(self.firstCloseAttempt)return;event.preventDefault();self.firstCloseAttempt=true;$(self.dialog).find("button.close").fadeOut(100,function(){$(self.dialog).find(".confirm-closing").fadeIn(100)});return});$(this.dialog).off("hidden.bs.modal").on("hidden.bs.modal",function(event){for(const[selector,value]of Object.entries(self.initialState.inputs)){$(self.dialog).find(selector).val(value);$(self.dialog).find(selector).removeClass("is-invalid")}self.initialState.hidden.forEach($hidden=>{$hidden.hide()});self.element.find(`[type='submit']`).attr("disabled","disabled");self.currentState=null;self.firstCloseAttempt=false;$(self.dialog).find(".confirm-closing").fadeOut(100,function(){$(self.dialog).find("button.close").fadeIn(100)});self.cleanForm()})}fillFormModal(){return this.options.loadFormData()}invokeModalInit(data={}){const self=this;this.delegateModalClosing();this.data=data||this.fillFormModal();this.options.onModalInit(this.data,this);$(this.element).parents(".modal").on("show.bs.modal",function(){self.options.onModalShow()});this.initialState=this.createFormSnapshot();this.currentState=null;this.delegateResetButton()}delegateSubmit(){this.bindFormValidation();const self=this;this.submitHandler=function(e){if(!self.options.isSyncRequest){e.preventDefault();e.stopPropagation();self.makeRequest()}};$(this.element).on("submit",this.submitHandler)}bindFormValidation(){const self=this;$(this.element).find(`input,select,textarea`).each(async function(i,input){const $input=$(this);let timeoutId=-1;const validHostname=async()=>{const $spinner=$input.parent().find(".spinner-border");$input.attr("readonly",true);$spinner.show();const response=await NtopUtils.resolveDNS($(input).val());$input.removeAttr("readonly");$spinner.hide();if(response.rc<0){input.setCustomValidity(response.rc_str);return[false,i18n[response.rc_str]]}input.setCustomValidity("");return[true,"Success"]};const validInput=async validation=>{if(validation.data.resolveDNS&&$input.val().match(NtopUtils.REGEXES.domainName)){return await validHostname()}if(validation.data.cannotBeEmpty&&validation.isInputEmpty){input.setCustomValidity("Please fill the input.");return[false,validation.data.validationEmptyMessage||i18n.missing_field]}if(input.validity.patternMismatch){input.setCustomValidity("Pattern mismatch.");return[false,validation.data.validationMessage||i18n.invalid_field]}if(input.validity.rangeOverflow){input.setCustomValidity("Value exceed the maximum value.");return[false,validation.data.rangeOverflowMessage||i18n.invalid_field]}if(input.validity.rangeUnderflow){input.setCustomValidity("Value is under the minimum value.");return[false,validation.data.rangeUnderflowMessage||i18n.invalid_field]}input.setCustomValidity("");return[true,"Success"]};const checkValidation=async()=>{const validation={data:{validationMessage:$input.data("validationMessage"),validationEmptyMessage:$input.data("validationEmptyMessage"),cannotBeEmpty:$input.attr("required")==="required"||$input.data("validationNotEmpty")==true,resolveDNS:$input.data("validationResolvedns"),rangeOverflowMessage:$input.data("validationRangeOverflowMessage"),rangeUnderflowMessage:$input.data("validationUnderflowOverflowMessage")},isInputEmpty:typeof $input.val()==="string"?$input.val().trim()=="":false};const[isValid,messageToShow]=await validInput(validation);let $error=$input.parent().find(`.invalid-feedback`);if($error.length==0){$error=$(``)}if(!isValid){$input.addClass("is-invalid");$input.parent().append($error);$error.text(messageToShow)}else{$input.removeClass("is-invalid");$error.fadeOut(500,function(){$(this).remove()})}};$(this).off("input").on("input",function(e){self.currentState=self.createFormSnapshot();if(timeoutId!=-1)clearTimeout(timeoutId);if(!$input.attr("formnovalidate")){timeoutId=setTimeout(()=>{checkValidation();self.toggleFormSubmission()},300);self.firstCloseAttempt=false}});$(this).off("invalid").on("invalid",function(e){e.preventDefault();if(!$input.attr("formnovalidate")){checkValidation()}})})}getModalID(){return $(this.element).parents(".modal").attr("id")}toggleFormSubmission(){let isValid=true;$(this.element).find("input:not(:disabled),select:not(:disabled),textarea:not(:disabled)").each(function(idx,input){isValid&=input.validity.valid});isValid?$(this.element).find(`[type='submit'],[type='test']`).removeAttr("disabled"):$(this.element).find(`[type='submit'],[type='test']`).attr("disabled","disabled")}cleanForm(){$(this.element).find("input,textarea,select").each(function(i,input){$(this).removeClass(`is-valid`).removeClass(`is-invalid`)});$(this.element)[0].reset()}makeRequest(){const $feedbackLabel=$(this.element).find(`.invalid-feedback`);const submitButton=$(this.element).find(`[type='submit']`);let dataToSend=this.options.beforeSumbit(this.data);dataToSend.csrf=this.csrf;dataToSend=$.extend(dataToSend,this.options.submitOptions);submitButton.attr("disabled","disabled");let request;const self=this;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();self.options.onSubmitSuccess(response,dataToSend,self);$(self.element).off("submit",self.submitHandler);self.delegateSubmit()}).fail(function(jqxhr,textStatus,errorThrown){self.isSubmitting=false;const response=jqxhr.responseJSON;if(response.rc!==undefined&&response.rc<0){$feedbackLabel.html(i18n.rest[response.rc_str]).show()}self.options.onSubmitError(response,dataToSend,textStatus,errorThrown)}).always(function(d){submitButton.removeAttr("disabled")})}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);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"&&value===0)return"";return value});class DataTableFiltersMenu{constructor({tableAPI:tableAPI,filterMenuKey:filterMenuKey,filterTitle:filterTitle,filters:filters,columnIndex:columnIndex}){const self=this;this.tableAPI=tableAPI;this.filterTitle=filterTitle;this.filterMenuKey=filterMenuKey;this.columnIndex=columnIndex;this.preventUpdate=false;this.$datatableWrapper=$(tableAPI.context[0].nTableWrapper);this.$datatableWrapper.on("init.dt",function(){self._render(filters)});this.tableAPI.on("draw",function(){self._update()})}_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()});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={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}`)}};$menuContainer.prepend(this._createMenuEntry(allFilter));$dropdownContainer.append($dropdownButton);$dropdownContainer.append($menuContainer);this.$datatableWrapper.find(".dataTables_filter").prepend($dropdownContainer);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()}_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 DataTableUtils{static getStdDatatableConfig(dtButtons=[],dom="<'d-flex'<'mr-auto'l><'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,buttons:{buttons:dtButtons,dom:{button:{className:"btn btn-link"},container:{className:"border-left ml-1 float-right"}}}}}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})}}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 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'+label+"")}function datatableAddDeleteButtonCallback(td_idx,callback_str,label){datatableAddButtonCallback.bind(this)(td_idx,label,"btn-danger",callback_str,"javascript:void(0)")}function datatableAddActionButtonCallback(td_idx,callback_str,label,visible=true){datatableAddButtonCallback.bind(this)(td_idx,label,"btn-info",callback_str,"javascript:void(0)",visible)}function datatableAddLinkButtonCallback(td_idx,link,label){datatableAddButtonCallback.bind(this)(td_idx,label,"btn-info","",link)}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)}function aysHandleForm(form_selector,options){if(!form_selector)form_selector="form";if(form_selector==="form"){form_selector='form:not([data-ays-ignore="true"])'}var default_options={submit_selector:'button[type="submit"]:not([data-ays-ignore="true"])',on_dirty_callback:$.noop,on_clean_callback:$.noop,handle_submit_buttons:true,handle_datatable:false,handle_tabs:false,disable_on_dirty:"",ays_options:{}};var o=$.extend(true,{},default_options,options);o.form_selector=form_selector;$(function(){$(o.form_selector).areYouSure(o.ays_options);if(o.handle_submit_buttons)$(o.form_selector).find(o.submit_selector).attr("disabled","disabled");$(o.form_selector).on("dirty.areYouSure",function(){if(o.handle_submit_buttons)$(this).find(o.submit_selector).removeAttr("disabled");if(o.handle_datatable){$(this).find("a.dropdown-toggle").attr("disabled","disabled");$(this).find("ul.pagination a").css("pointer-events","none").css("cursor","default")}if(o.handle_tabs){$(".nav-tabs").find("a").each(function(){if(!$(this).closest("li").hasClass("active"))$(this).removeAttr("data-toggle").closest("li").addClass("disabled")})}$(o.disable_on_dirty).addClass("disabled");o.on_dirty_callback.bind(this)()});$(o.form_selector).on("clean.areYouSure",function(){if(o.handle_submit_buttons)$(this).find(o.submit_selector).attr("disabled","disabled");if(o.handle_datatable){$(this).find("a.dropdown-toggle").removeAttr("disabled");$(this).find("ul.pagination a").css("pointer-events","").css("cursor","")}if(o.handle_tabs){$(".nav-tabs").find("a").each(function(){$(this).attr("data-toggle","tab").closest("li").removeClass("disabled")})}$(o.disable_on_dirty).removeClass("disabled");o.on_clean_callback.bind(this)()})})}function aysResetForm(form_selector){$(form_selector).trigger("reinitialize.areYouSure")}function aysUpdateForm(form_selector){$(form_selector).trigger("rescan.areYouSure")}function aysRecheckForm(form_selector){$(form_selector).trigger("checkform.areYouSure")}function aysGetDirty(form_selector,fields_selector){fields_selector=fields_selector||":input:not(input[type=submit]):not(input[type=button])";var getValue=function($field){if($field.hasClass("ays-ignore")||$field.hasClass("aysIgnore")||$field.attr("data-ays-ignore")||$field.attr("name")===undefined){return null}if($field.is(":disabled")){return"ays-disabled"}var val;var type=$field.attr("type");if($field.is("select")){type="select"}switch(type){case"checkbox":case"radio":val=$field.is(":checked");break;case"select":val="";$field.find("option").each(function(o){var $option=$(this);if($option.is(":selected")){val+=$option.val()}});break;default:val=$field.val()}return val};var isFieldDirty=function($field){var origValue=$field.data("ays-orig");var curValue=getValue($field);var dirty=undefined!==origValue&&origValue!=curValue;return{dirty:dirty,origValue:origValue,curValue:curValue}};var l=[];$(form_selector).find(fields_selector).each(function(){var dirty_status=isFieldDirty($(this));if(dirty_status.dirty){dirty_status.input=$(this);l.push(dirty_status)}});return l}String.prototype.capitalizeSingleWord=function(){var uc=this.toUpperCase();if(uc=="ASN"||uc=="OS")return uc;else return this.charAt(0).toUpperCase()+this.slice(1)};String.prototype.capitalize=function(){var res=this.split(" ");for(var i in res){res[i]=res[i].capitalizeSingleWord()}return res.join(" ")};String.prototype.startsWith=function(string){return this.indexOf(string)===0};String.prototype.sformat=function(){var args=arguments;return this.replace(/{(\d+)}/g,function(match,number){return typeof args[number]!="undefined"?args[number]:match})};if(typeof String.prototype.contains==="undefined"){String.prototype.contains=function(s){return this.indexOf(s)!==-1}}Date.prototype.format=function(format){var o={"M+":this.getMonth()+1,"d+":this.getDate(),"h+":this.getHours(),"m+":this.getMinutes(),"s+":this.getSeconds(),"q+":Math.floor((this.getMonth()+3)/3),S:this.getMilliseconds()};if(/(y+)/.test(format))format=format.replace(RegExp.$1,(this.getFullYear()+"").substr(4-RegExp.$1.length));for(var k in o)if(new RegExp("("+k+")").test(format))format=format.replace(RegExp.$1,RegExp.$1.length==1?o[k]:("00"+o[k]).substr((""+o[k]).length));return format};jQuery.fn.extend({disable:function(state){return this.each(function(){var $this=$(this);if($this.is("input, button, textarea, select"))this.disabled=state;else $this.toggleClass("disabled",state)})}});const NTOPNG_MIN_VISUAL_VALUE=.005;const REGEXES={ipv4:"^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9]).){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])$",ipv6:"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]):){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:)))(%.+)?s*$",domainName:"^(([a-zA-Z]{1})|([a-zA-Z]{1}[a-zA-Z]{1})|([a-zA-Z]{1}[0-9]{1})|([0-9]{1}[a-zA-Z]{1})|([a-zA-Z0-9][-_.a-zA-Z0-9]{1,61}[a-zA-Z0-9])).([a-zA-Z]{2,13}|[a-zA-Z0-9-]{2,30}.[a-zA-Z]{2,3})",url:"^(https?://[^/\\s]+(/.*)?)$",macAddress:"^([0-9A-Fa-f]{2}:){5}([0-9A-Fa-f]{2})$",username:"^(?=[a-zA-Z0-9._]{3,20}$)(?!.*[_.]{2})[^_.].*[^_.]$",singleword:"^(?=[a-zA-Z0-9._-]{3,20}$)(?!.*[_.-]{2})[^_.-].*[^_.-]$",email:"^([a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:.[a-zA-Z0-9-]+)*)$",https:"^https?://.+$",token:"^[0-9a-f]{32}"};class NtopUtils{static get REGEXES(){return REGEXES}static getIPv4RegexWithCIDR(){const length=REGEXES.ipv4.length;return`${REGEXES.ipv4.substring(0,length-1)}(\\/?)(\\b([0-9]|[12][0-9]|3[0-2])?\\b)$`}static getIPv6RegexWithCIDR(){const length=REGEXES.ipv6.length;return`${REGEXES.ipv6.substring(0,length-1)}(\\/?)\\b([0-9]|[1-9][0-9]|1[01][0-9]|12[0-8])?\\b$`}static async resolveDNS(hostname="ntop.org"){try{const request=await fetch(`${http_prefix}/lua/rest/v1/get/dns/resolve.lua?hostname=${hostname}`);const response=await request.json();return response}catch(err){console.error(`Something went wrong when resolving hostname: ${err}`)}return{rc:-1,rc_str:"FAILED_HTTP_REQUEST"}}static initDataPatterns(){$(`input[data-pattern]`).each(function(){const dataPattern=$(this).data("pattern");if(!dataPattern){console.warn(`An empty data-pattern on an input was found!`,this);return}const pattern=dataPattern.split("|").map(p=>REGEXES[p].toString()).join("|");$(this).attr("pattern",pattern);$(this).removeAttr("data-pattern")})}static is_good_ipv4(ipv4){return new RegExp(REGEXES.ipv4).test(ipv4)}static is_good_ipv6(ipv6){return new RegExp(REGEXES.ipv6).test(ipv6)}static is_mac_address(mac){return new RegExp(REGEXES.macAddress).test(mac)}static isNumeric(value){return/^\d+$/.test(value)}static is_network_mask(what,optional_mask){var elems=what.split("/");var mask=null;var ip_addr;if(elems.length!=2){if(!optional_mask)return null;else ip_addr=what}else{ip_addr=elems[0];if(!NtopUtils.isNumeric(elems[1]))return null;mask=parseInt(elems[1]);if(mask<0)return null}if(NtopUtils.is_good_ipv4(ip_addr)){if(mask===null)mask=32;else if(mask>32)return null;return{type:"ipv4",address:ip_addr,mask:mask}}else if(NtopUtils.is_good_ipv6(elems[0])){if(mask===null)mask=128;else if(mask>128)return false;return{type:"ipv6",address:ip_addr,mask:mask}}return null}static fbits(bits){const sizes=["bit/s","Kbit/s","Mbit/s","Gbit/s","Tbit/s"];if(typeof bits==="undefined")return"-";if(bits==0)return"0";if(bits>0&&bits=sizes.length){return"> "+sizes[sizes.length-1]}if(i<=1){return Math.round(bits/Math.pow(1e3,i)*100)/100+" "+sizes[i]}else{var ret=parseFloat(bits/Math.pow(1e3,i)).toFixed(2);if(ret%1==0)ret=Math.round(ret);return ret+" "+sizes[i]}}static export_rate(eps){if(typeof eps==="undefined")return"-";var sizes=["exp/s","Kexp/s"];if(eps==0)return"0";if(eps>0&&eps0&&exports0&&pps0&&pps0&&fps0&&mps'}else if(actual>before){return''}else{return''}}static abbreviateString(str,len){if(!str)return"";if(str.length=0&&bytes=kilobyte&&bytes=megabyte&&bytes=gigabyte&&bytes=terabyte)return parseFloat((bytes/terabyte).toFixed(precision))+" TB";else return parseFloat(bytes.toFixed(precision))+" Bytes"}static drawTrend(current,last,withColor){if(current==last){return''}else if(current>last){return'"}else{return''}}static toggleAllTabs(enabled){if(enabled===true)$("#historical-tabs-container").find("li").removeClass("disabled").find("a").attr("data-toggle","tab");else $("#historical-tabs-container").find("li").addClass("disabled").find("a").removeAttr("data-toggle")}static disableAllDropdownsAndTabs(){$("select").each(function(){$(this).prop("disabled",true)});NtopUtils.toggleAllTabs(false)}static enableAllDropdownsAndTabs(){$("select").each(function(){$(this).prop("disabled",false)});NtopUtils.toggleAllTabs(true)}static capitalize(s){return s&&s[0].toUpperCase()+s.slice(1)}static addCommas(nStr){nStr+="";var x=nStr.split(".");var x1=x[0];var x2=x.length>1?"."+x[1]:"";var rgx=/(\d+)(\d{3})/;while(rgx.test(x1)){x1=x1.replace(rgx,"$1"+","+"$2")}return x1+x2}static scaleValue(val,sizes,scale,decimals){if(val==0)return[0,sizes[0]];let factor=decimals?10*decimals:10;var i=parseInt(Math.floor(Math.log(val)/Math.log(scale)));if(i<0||isNaN(i)){i=0}else if(i>=sizes.length){i=sizes.length-1}return[Math.round(val/Math.pow(scale,i)*factor)/factor,sizes[i]]}static formatValue(val){var sizes=["","K","M","G","T"];if(val==0)return"0";if(val>0&&val0&&bytes0&&bits0){let years=Math.floor(days/365);if(years>0){days=days%365;msg=years+" year";if(years>1){msg+="s"}msg_array.push(msg);msg=""}msg=days+" day";if(days>1){msg+="s"}msg_array.push(msg);msg=""}if(hours>0){if(hours<10){msg="0"}msg+=hours+":"}if(minutes<10){msg+="0"}msg+=minutes+":";if(sec<10){msg+="0"}msg+=sec;msg_array.push(msg);return msg_array.join(", ")}static epoch2Seen(epoch){var d=new Date(epoch*1e3);var tdiff=Math.floor((new Date).getTime()/1e3-epoch);return d.format("dd/MM/yyyy hh:mm:ss")+" ["+NtopUtils.secondsToTime(tdiff)+" ago]"}static graphGetXAxisTicksFormat(diff_epoch){var tickFormat;if(diff_epoch<=86400){tickFormat="%H:%M:%S"}else if(diff_epoch<=2*86400){tickFormat="%b %e, %H:%M:%S"}else{tickFormat="%b %e"}return tickFormat}static paramsExtend(defaults,override){return $.extend({},defaults,override)}static paramsToForm(form,params){form=$(form);for(var k in params){if(params.hasOwnProperty(k)){var input=$('');input.appendTo(form)}}return form}static paramsPairsEncode(params){var i=0;var res={};for(var k in params){res["key_"+i]=k;res["val_"+i]=params[k];i=i+1}return res}static hostkey2hostInfo(host_key){var info;var hostinfo=[];host_key=host_key.replace(/____/g,":");host_key=host_key.replace(/___/g,"/");host_key=host_key.replace(/__/g,".");info=host_key.split("@");return info}static handle_tab_state(nav_object,default_tab){$("a",nav_object).click(function(e){e.preventDefault()});$(" > li > a",nav_object).on("shown.bs.tab",function(e){var id=$(e.target).attr("href").substr(1);if(history.replaceState){history.replaceState(null,null,"#"+id)}else{window.location.hash=id}});var hash=window.location.hash;if(!hash)hash="#"+default_tab;$('a[href="'+hash+'"]',nav_object).tab("show")}static _add_find_host_link(form,name,data){$("").attr({type:"hidden",id:name,name:name,value:data}).appendTo(form)}static makeFindHostBeforeSubmitCallback(http_prefix){return function(form,data){if(data.type=="mac"){form.attr("action",http_prefix+"/lua/mac_details.lua")}else if(data.type=="network"){form.attr("action",http_prefix+"/lua/hosts_stats.lua");NtopUtils._add_find_host_link(form,"network",data.network)}else if(data.type=="snmp"){form.attr("action",http_prefix+"/lua/pro/enterprise/snmp_interface_details.lua");NtopUtils._add_find_host_link(form,"snmp_port_idx",data.snmp_port_idx)}else if(data.type=="snmp_device"){form.attr("action",http_prefix+"/lua/pro/enterprise/snmp_device_details.lua")}else if(data.type=="asn"){form.attr("action",http_prefix+"/lua/hosts_stats.lua");NtopUtils._add_find_host_link(form,"asn",data.asn)}else{form.attr("action",http_prefix+"/lua/host_details.lua");NtopUtils._add_find_host_link(form,"mode","restore")}return true}}static tstampToDateString(html_tag,format,tdiff){tdiff=tdiff||0;var timestamp=parseInt(html_tag.html())+tdiff;var localized=d3.time.format(format)(new Date(timestamp*1e3));html_tag.html(localized).removeClass("hidden");return localized}static noHtml(s){return s.replace(/<[^>]+>/g,"")}static cleanCustomHostUrl(host){return host.replace(/^http:\/\//gi,"").replace(/^https:\/\//gi,"").replace(/^www\./gi,"").replace(/[^0-9a-zA-Z\.:\/_-]/gi,"")}static parseQuery(queryString){var query={};var pairs=(queryString[0]==="?"?queryString.substr(1):queryString).split("&");for(var i=0;i{if(response.rc<0){$("#import-error").text(response.rc_str).show();return}if(params.successCallback){params.successCallback(response)}ToastUtils.showToast({id:"import-configuration-alert",level:"success",title:i18n.success,body:i18n.manage_configurations.messagges.import_success,delay:2e3});$("#import-modal").modal("hide")}).fail(({responseJSON:responseJSON})=>{const PARTIAL_IMPORT_RC=-28;if(params.failureCallback){params.failureCallback(responseJSON)}if(responseJSON&&responseJSON.rc>0)return;if(responseJSON.rc==PARTIAL_IMPORT_RC)$(`#import-error`).removeClass("invalid-feedback").addClass("text-warning");$("#import-error").text(i18n.rest_consts[responseJSON.rc_str]||i18n.FAILED_HTTP_REQUEST).show()}).always(()=>{$button.removeAttr("disabled")})}})}static serializeFormArray(serializedArray){const serialized={};serializedArray.forEach(obj=>{if(obj.name.includes("[]")){return}else{if(typeof obj.value==="string"){obj.value=obj.value.trim()}serialized[obj.name]=obj.value}});return serialized}static cleanForm(formSelector){$(formSelector).find("input,select,textarea").each(function(i,input){$(this).removeClass(`is-valid`).removeClass(`is-invalid`)});$(formSelector)[0].reset()}static fetchWithTimeout(uri,options={},time=5e3){const controller=new AbortController;const config={...options,signal:controller.signal};const timeout=setTimeout(()=>{controller.abort()},time);return fetch(uri,config).then(response=>{if(!response.ok){throw new Error(`${response.status}: ${response.statusText}`)}return response}).catch(error=>{if(error.name==="AbortError"){throw new Error("Response timed out")}})}static setPref(action,csrf,success,failure){if(action==undefined){console.warn("An action key must be defined to set a preference!");return}const empty=()=>{};const request=$.post(`${http_prefix}/lua/update_prefs.lua`,{action:action,csrf:csrf});request.done(success||empty);request.fail(failure||empty)}static arrayToListString(array,limit){if(array==undefined)return"";if(array.length>limit){return array.slice(0,limit).join(", ")+` ${i18n.and_x_more.replace("$num",array.length-limit)}`}return array.slice(0,limit).join(", ")}static buildURL(location,params={},hasReferer=false,refererParams={}){const url=new URL(location,window.location);for(const[name,value]of Object.entries(params)){if(!value)continue;url.searchParams.set(name,value)}if(hasReferer){const refUrl=new URL(window.location.href);for(const[name,value]of Object.entries(refererParams)){if(!value)continue;refUrl.searchParams.set(name,value)}url.searchParams.set("referer",refUrl.toString())}return url.toString()}static getEditPoolLink(href,poolId){const url=new URL(href,window.location);url.searchParams.set("pool_id",poolId);return url.toString()}static getPoolLink(poolType,poolId=0){return`${http_prefix}/lua/rest/v1/get/${poolType}/pools.lua?pool=${poolId}`}static async getPool(poolType,id=0){if(poolType===null)throw"A pool type must be defined!";try{const request=await fetch(NtopUtils.getPoolLink(poolType,id));const pool=await request.json();if(pool.rc<0){return[false,{}]}return[true,pool.rsp[0]]}catch(err){return[false,{}]}}}$(document).ready(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.user_script)return serie.tags.user_script;else if(serie.tags.command)return serie.tags.command.substring(4).toUpperCase()}else if(data_label!="bytes"){if(serie.tags.protocol)return serie.tags.protocol+" ("+new_label+")";else if(serie.tags.category)return serie.tags.category+" ("+new_label+")";else if(serie.tags.device&&serie.tags.if_index)return serie.ext_label+" ("+new_label+")";else if(serie.tags.device&&serie.tags.port)return serie.tags.port+" ("+new_label+")"}else{if(serie.tags.protocol)return serie.tags.protocol;else if(serie.tags.category)return serie.tags.category;else if(serie.tags.profile)return serie.tags.profile;else if(data_label=="bytes"){if(schema.contains("volume"))return graph_i18n.traffic_volume;else return graph_i18n.traffic}}if(schema_2_label[schema])return NtopUtils.capitaliseFirstLetter(schema_2_label[schema]);if(new_label)return NtopUtils.capitaliseFirstLetter(new_label);return NtopUtils.capitaliseFirstLetter(data_label)}function getValueFormatter(schema,metric_type,series,custom_formatter,stats){if(series&&series.length&&series[0].label){if(custom_formatter){var formatters=[];if(typeof custom_formatter!="object")custom_formatter=[custom_formatter];for(var i=0;icount){console.error("points mismatch: serie '"+getSerieLabel(schema_name,series[i])+"' has "+data.length+" points, expected "+count);rv=false}else if(data.length.1)return res}function buildTimeArray(start_time,end_time,step){var arr=[];for(var t=start_time;t$.now())$("#btn-jump-time-ahead").addClass("disabled");else $("#btn-jump-time-ahead").removeClass("disabled")}function showQuerySlow(){$("#query-slow-alert").show()}function hideQuerySlow(){$("#query-slow-alert").hide()}function chart_data_sum(series){return series.reduce(function(acc,x){return acc+x.values.reduce(function(acc,pt){return acc+pt[1]||0},0)},0)}function redrawExtraLines(chart,chart_id,extra_lines){d3.selectAll(chart_id+" line.extra-line").remove();if(extra_lines.length>0){var xValueScale=chart.xAxis.scale();var yValueScale=chart.yAxis1.scale();var g=d3.select(chart_id+" .stack1Wrap");for(var i=0;i0||has_initial_zoom();let extra_lines=[];let unreachable_timestamps={};var spinner=$('');$chart.parent().css("position","relative");var chart_colors_full=["#69B87F","#94CFA4","#B3DEB6","#E5F1A6","#FFFCC6","#FEDEA5","#FFB97B","#FF8D6D","#E27B85"];var chart_colors_min=["#7CC28F","#FCD384","#FD977B"];var split_directions_colors=["#69B87F","#FF7C00","#FF4700"];function format_unreachable(formatter){return function(y,d){if(d&&unreachable_timestamps[d[0]])return i18n.unreachable_host;return formatter(y)}}var num_ticks_y1=null;var num_ticks_y2=null;var domain_y1=null;var domain_y2=null;var first_run=true;var update_chart_data=function(new_data){d3_sel.datum([]).call(chart);d3_sel.datum(new_data);d3_sel.transition().duration(500).call(chart);if(first_run){num_ticks_y1=chart.yAxis1.ticks();num_ticks_y2=chart.yAxis2.ticks();domain_y1=chart.yDomain1();domain_y2=chart.yDomain2();first_run=false}if(metric_type==="gauge"){var cur_domain_y1=chart.yAxis1.scale().domain();var cur_domain_y2=chart.yAxis2.scale().domain();cur_domain_y1=cur_domain_y1[1]-cur_domain_y1[0];cur_domain_y2=cur_domain_y2[1]-cur_domain_y2[0];if(chart.yAxis1.tickFormat()!=NtopUtils.ffloat)chart.yAxis1.ticks(Math.min(cur_domain_y1,num_ticks_y1));if(chart.yAxis2.tickFormat()!=NtopUtils.ffloat)chart.yAxis2.ticks(Math.min(cur_domain_y2,num_ticks_y2))}var y1_sum=chart_data_sum(new_data.filter(function(x){return x.yAxis==1}));var y2_sum=chart_data_sum(new_data.filter(function(x){return x.yAxis==2}));if(y1_sum==0)chart.yDomain1([0,1]);else chart.yDomain1(domain_y1);if(y2_sum==0)chart.yDomain2([0,1]);else chart.yDomain2(domain_y2);d3_sel.call(chart);nv.utils.windowResize(function(){chart.update();redrawExtraLines(chart,chart_id,extra_lines)});redrawExtraLines(chart,chart_id,extra_lines);spinner.remove()};function isLegendDisabled(key,default_val){if(typeof localStorage!=="undefined"){var val=localStorage.getItem("chart_series.disabled."+key);if(val!=null)return val==="true"}return default_val}chart.legend.dispatch.on("legendClick",function(d,i){manual_trigger_extra_series[d.legend_key]=true;if(typeof localStorage!=="undefined")localStorage.setItem("chart_series.disabled."+d.legend_key,!d.disabled?true:false)});chart.dispatch.on("zoom",function(e){var cur_zoom=[params.epoch_begin,params.epoch_end];var t_start=Math.floor(e.xDomain[0]);var t_end=Math.ceil(e.xDomain[1]);var old_zoomed=chart.is_zoomed;var is_user_zoom=typeof e.is_user_zoom!=="undefined"?e.is_user_zoom:true;chart.is_zoomed=true;if(chart.updateStackedChart(t_start,t_end,false,is_user_zoom)){if(is_user_zoom||e.push_state){current_zoom_level+=1;var url=NtopUtils.getHistoryParameters({epoch_begin:t_start,epoch_end:t_end});history.pushState({zoom_level:current_zoom_level,range:[t_start,t_end]},"",url)}chart.fixChartButtons()}else chart.is_zoomed=old_zoomed});function updateZoom(zoom,is_user_zoom,force){var t_start=zoom[0];var t_end=zoom[1];chart.updateStackedChart(t_start,t_end,false,is_user_zoom,null,force);chart.fixChartButtons()}chart.zoom_in=function(){var cur_interval=params.epoch_end-params.epoch_begin;if(cur_interval>60){var delta=cur_interval/4;$("#period_begin").datetimepicker("date",new Date((params.epoch_begin+delta)*1e3));$("#period_end").datetimepicker("date",new Date((params.epoch_end-delta)*1e3));updateChartFromPickers()}};chart.zoom_out=function(){var cur_interval=params.epoch_end-params.epoch_begin;var delta=cur_interval/2;$("#period_begin").datetimepicker("date",new Date((params.epoch_begin-delta)*1e3));$("#period_end").datetimepicker("date",new Date((params.epoch_end+delta)*1e3));updateChartFromPickers()};$chart.on("dblclick",function(event){if($(event.target).hasClass("nv-legend-text"))return;chart.zoom_out()});$zoom_reset.on("click",function(){if(current_zoom_level){history.go(-current_zoom_level)}});window.addEventListener("popstate",function(e){var zoom=initial_range;if(e.state){zoom=e.state.range;current_zoom_level=e.state.zoom_level}else current_zoom_level=0;updateZoom(zoom,true,true)});chart.fixChartButtons=function(){if(current_zoom_level>0||has_initial_zoom()){$graph_zoom.find(".btn-warning:not(.custom-zoom-btn)").addClass("initial-zoom-sel").removeClass("btn-warning");$graph_zoom.find(".custom-zoom-btn").css("visibility","visible");var zoom_link=$graph_zoom.find(".custom-zoom-btn");var link=zoom_link.val().replace(/&epoch_begin=.*/,"");link+="&epoch_begin="+params.epoch_begin+"&epoch_end="+params.epoch_end;zoom_link.val(link)}else{$graph_zoom.find(".initial-zoom-sel").addClass("btn-warning");$graph_zoom.find(".custom-zoom-btn").css("visibility","hidden");chart.is_zoomed=false}fixJumpButtons(params.epoch_begin,params.epoch_end);if(current_zoom_level>0)$zoom_reset.show();else $zoom_reset.hide()};function checkQueryCompleted(){var flows_dt=$("#chart1-flows");var wait_num_queries=ts_table_shown&&$("#chart1-flows").css("display")!=="none"?2:1;query_completed+=1;if(query_completed>=wait_num_queries){if(query_timer){clearInterval(query_timer);query_timer=null}hideQuerySlow()}}chart.queryWasAborted=function(){return query_was_aborted};chart.abortQuery=function(){query_was_aborted=true;if(pending_chart_request){pending_chart_request.abort();chart.noData(i18n.query_was_aborted);update_chart_data([])}if(pending_table_request)pending_table_request.abort();if(query_timer){clearInterval(query_timer);query_timer=null}hideQuerySlow()};chart.tableRequestCompleted=function(){checkQueryCompleted();pending_table_request=null};chart.getDataUrl=function(){var data_params=jQuery.extend({},params);delete data_params.zoom;delete data_params.ts_compare;data_params.extended=1;return url+"?"+$.param(data_params,true)};var old_start,old_end,old_interval;chart.updateStackedChart=function(tstart,tend,no_spinner,is_user_zoom,on_load_callback,force_update){if(tstart)params.epoch_begin=tstart;if(tend)params.epoch_end=tend;const series_formatted_labels={};const now=Date.now()/1e3;var cur_interval=params.epoch_end-params.epoch_begin;var actual_step=findActualStep(step,params.epoch_begin);max_interval=actual_step*6;if(cur_interval=now){params.epoch_begin=params.epoch_end-max_interval}else{params.epoch_begin=Math.floor(epoch-max_interval/2);params.epoch_end=Math.floor(epoch+max_interval/2)}is_max_zoom=true;chart.zoomType(null)}}else if(cur_interval>max_interval){is_max_zoom=false;chart.zoomType("x")}old_interval=cur_interval;if(!first_load||has_initial_zoom()||force_update)align_step=null;fixTimeRange(chart,params,align_step,actual_step);if(first_load)initial_range=[params.epoch_begin,params.epoch_end];if(old_start==params.epoch_begin&&old_end==params.epoch_end&&!force_update)return false;old_start=params.epoch_begin;old_end=params.epoch_end;if(pending_table_request)pending_table_request.abort();if(pending_chart_request)pending_chart_request.abort();else if(!no_spinner)spinner.appendTo($chart.parent());$("#period_begin").datetimepicker("date",new Date(params.epoch_begin*1e3));$("#period_end").datetimepicker("date",new Date(Math.min(params.epoch_end*1e3,$.now())));if(query_timer)clearInterval(query_timer);query_timer=setInterval(showQuerySlow,seconds_before_query_slow*1e3);query_completed=0;query_was_aborted=false;chart.noData(i18n.no_data_available);hideQuerySlow();var req_params=$.extend({},params);if(!canCompareBackwards(req_params.epoch_begin,req_params.epoch_end))delete req_params.ts_compare;if(visualization.show_unreachable)req_params.no_fill=1;pending_chart_request=$.get(url,req_params,function(data){data=data.rsp;if(data&&data.error)chart.noData(data.error);if(!data||!data.series||!data.series.length||!checkSeriesConsinstency(schema_name,data.count,data.series)){update_chart_data([]);return}var tick_step=Math.ceil(chart.tick_step/data.step)*data.step;chart.xAxis.tickValues(buildTimeArray(data.start,data.start+data.count*data.step,tick_step));chart.xAxis.tickFormat(function(d){return d3.time.format(chart.x_fmt)(new Date(d*1e3))});var res=[];var series=data.series;var total_serie;var color_i=0;var chart_colors=series.length<=chart_colors_min.length?chart_colors_min:chart_colors_full;for(var j=0;jmax_cmp_over_total_ratio)is_disabled=true;res.push({key:NtopUtils.capitaliseFirstLetter(key),yAxis:1,values:values,type:"line",classed:"line-dashed line-animated",color:"#7E91A0",legend_key:key,disabled:is_disabled})}}if(visualization&&visualization.extra_series){for(var i=0;imax_line_over_total_ratio)is_disabled=true;res.push({key:serie.label,yAxis:serie.axis||1,values:arrayToNvSerie(upsampleSerie([serie.value],data.count),data.start,data.step),type:serie.type||"line",color:serie.color||"red",classed:serie.class,legend_key:serie.label,disabled:is_disabled})}}if(!data.no_trend&&has_full_data&&total_serie.length>=3){var num_smoothed_points=Math.min(Math.max(Math.floor(total_serie.length/5),3),12);var smooth_functions={rsi:["RSI cur vs past","#00FF5D",relativeStrengthIndexArray,{periods:num_smoothed_points}]};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;inow&&now0)serie[serie.length]=[now,serie[serie.length-1][1]]}}var enabled_series=res.filter(function(d){return d.disabled!==true});if(second_axis_series.length>0||enabled_series.length==0){for(var i=0;i0){chart.legend.updateState(false)}update_chart_data(res);first_time_loaded=false;if(data.source_aggregation)$("#data-aggr-dropdown > button > span:first").html(data.source_aggregation)}).fail(function(xhr,status,error){if(xhr.statusText=="abort"){return}console.error("Error while retrieving the timeseries data ["+status+"]: "+error);chart.noData(error);update_chart_data([])}).always(function(data,status,xhr){checkQueryCompleted();pending_chart_request=null});if(first_load){first_load=false;$(function(){var flows_dt=$("#chart1-flows").data("datatable");if(flows_dt)pending_table_request=flows_dt.pendingRequest})}else{var flows_dt=$("#chart1-flows");if(ts_table_shown){updateGraphsTableView(null,params);if($("#chart1-flows").css("display")!=="none")pending_table_request=flows_dt.data("datatable").pendingRequest}}if(typeof on_load_callback==="function")on_load_callback(chart);return true}}var graph_old_view=null;var graph_old_has_nindex=null;var graph_old_nindex_query=null;function tsQueryToTags(ts_query){return ts_query.split(",").reduce(function(params,value){var pos=value.indexOf(":");if(pos!=-1){var k=value.slice(0,pos);var v=value.slice(pos+1);params[k]=v}return params},{})}function recheckGraphTableEntries(){var table_view=graph_table_views;var tdiff=graph_params.epoch_end-graph_params.epoch_begin;var reset_selection=false;$("#chart1-flows").show();$("#graphs-table-selector").show();for(view_id in table_view){var view=table_view[view_id];var elem=$("#"+view.html_id);if(tdiff<=view.min_step){if(graph_old_view.id===view_id)reset_selection=true;elem.hide()}else elem.show()}var items_ul=$("#graphs-table-active-view").closest(".btn-group").find("ul:first");items_ul.find("li.dropdown-header").each(function(idx,e){var next_item=$(e).nextAll("li").filter(function(idx,e){return $(e).css("display")!=="none"||!$(e).attr("data-view-id")}).first();var divider=$(e).nextAll(".divider").first();if(!next_item.attr("data-view-id")){$(e).hide();divider.hide()}else{$(e).show();divider.show()}});if(reset_selection){var first_view=items_ul.find("li[data-view-id]").filter(function(idx,e){return $(e).css("display")!=="none"}).first();if(first_view.length)setActiveGraphsTableView(first_view.attr("data-view-id"));else{$("#chart1-flows").hide();$("#graphs-table-selector").hide()}return false}return true}function updateGraphsTableView(view,graph_params,has_nindex,nindex_query,per_page){if(view)graph_old_view=view;if(!recheckGraphTableEntries(graph_params)){return}if(view){graph_old_has_nindex=has_nindex;graph_old_nindex_query=nindex_query}else{view=graph_old_view;has_nindex=graph_old_has_nindex;nindex_query=graph_old_nindex_query}var graph_table=$("#chart1-flows");nindex_query=nindex_query+"&begin_time_clause="+graph_params.epoch_begin+"&end_time_clause="+graph_params.epoch_end;var nindex_buttons="";var params_obj=tsQueryToTags(graph_params.ts_query);if(!params_obj.host){nindex_buttons+='
"}nindex_buttons+='
";if(view.columns){var url=http_prefix+(view.nindex_view?"/lua/pro/get_nindex_flows.lua":"/lua/pro/get_ts_table.lua");var columns=view.columns.map(function(col){return{title:col[1],field:col[0],css:{textAlign:col[2],width:col[3]},hidden:col[4]?true:false}});columns.push({title:i18n.actions,field:"drilldown",css:{width:"1%","white-space":"nowrap","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.loading_time){$("#flows-load-time").html(data.stats.loading_time);$("#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)}const registerServiceWorker=()=>{if("serviceWorker"in navigator){navigator.serviceWorker.register("/sw.js")}};const NOTIFICATION_DEBUG=false;class PushNotificationBuilder{constructor(title="Hello World"){this.title=title;this.options={};this.options.actions=[];this.options.icon="/img/icons/icon-128x128.png";this.options.badge="/img/icons/icon-72x72.png"}setTitle(title){this.title=title;return this}setBody(body){this.options.body=body;return this}setIcon(icon){this.options.icon=icon;return this}setLang(lang){this.options.lang=lang;return this}setRequireInteraction(interaction){this.options.requireInteraction=interaction;return this}setTimestamp(timestamp){this.options.timestamp=timestamp;return this}setOnClick(callback){this.callback=callback;return this}build(){const n=new Notification(this.title,this.options);if(this.callback){n.onclick=this.callback}return n}}class NotificationManager{static enableNotification(){try{Notification.requestPermission(status=>{if(NOTIFICATION_DEBUG)console.info(status)})}catch(err){console.error("Something went wrong! ☹️",err)}}static push(pushNotification={title:"Hello World",options:{}}){if(!pushNotification)throw"The notification object cannot be null!";if(NotificationManager.canReceiveNotification){(async()=>{try{const registration=await navigator.serviceWorker.getRegistration();registration.showNotification(pushNotification.title,pushNotification.options)}catch(err){console.error(err)}})()}}static get canReceiveNotification(){return NotificationManager.permissionNotification=="granted"}static get permissionNotification(){return Notification.permission}}(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!")}submitButton.attr("disabled","disabled")}initDataPatterns(){NtopUtils.initDataPatterns()}createFormSnapshot(){const snapshot={inputs:{},hidden:[]};$(this.element).find('textarea,select,input[type!="radio"]').each(function(){const type=$(this).prop("nodeName").toLowerCase();const name=$(this).attr("name");snapshot.inputs[`${type}[name='${name}']`]=$(this).val()});$(this.element).find(`[style='display: none;'], span.invalid-feedback`).each(function(){snapshot.hidden.push($(this))});return snapshot}compareFormSnaphsot(s1,s2){if(s1==null||s2==null)return true;for(let[key,value]of Object.entries(s1.inputs)){if(s2.inputs[key]!=value)return false}return true}delegateModalClosing(){const self=this;$(this.dialog).find("button.cancel").off("click").click(function(){self.firstCloseAttempt=false;$(self.element)[0].reportValidity();$(self.dialog).find(".confirm-closing").fadeOut(100,function(){$(self.dialog).find("button.close").fadeIn(100)})});$(this.dialog).off("hide.bs.modal").on("hide.bs.modal",function(event){if(self.isSubmitting){event.preventDefault();return}if(self.compareFormSnaphsot(self.currentState,self.initialState)){return}if(self.firstCloseAttempt)return;event.preventDefault();self.firstCloseAttempt=true;$(self.dialog).find("button.close").fadeOut(100,function(){$(self.dialog).find(".confirm-closing").fadeIn(100)});return});$(this.dialog).off("hidden.bs.modal").on("hidden.bs.modal",function(event){for(const[selector,value]of Object.entries(self.initialState.inputs)){$(self.dialog).find(selector).val(value);$(self.dialog).find(selector).removeClass("is-invalid")}self.initialState.hidden.forEach($hidden=>{$hidden.hide()});self.element.find(`[type='submit']`).attr("disabled","disabled");self.currentState=null;self.firstCloseAttempt=false;$(self.dialog).find(".confirm-closing").fadeOut(100,function(){$(self.dialog).find("button.close").fadeIn(100)});self.cleanForm()})}fillFormModal(){return this.options.loadFormData()}invokeModalInit(data={}){const self=this;this.delegateModalClosing();this.data=data||this.fillFormModal();this.options.onModalInit(this.data,this);$(this.element).parents(".modal").on("show.bs.modal",function(){self.options.onModalShow()});this.initialState=this.createFormSnapshot();this.currentState=null;this.delegateResetButton()}delegateSubmit(){this.bindFormValidation();const self=this;this.submitHandler=function(e){if(!self.options.isSyncRequest){e.preventDefault();e.stopPropagation();self.makeRequest()}};$(this.element).on("submit",this.submitHandler)}bindFormValidation(){const self=this;$(this.element).find(`input,select,textarea`).each(async function(i,input){const $input=$(this);let timeoutId=-1;const validHostname=async()=>{const $spinner=$input.parent().find(".spinner-border");$input.attr("readonly",true);$spinner.show();const response=await NtopUtils.resolveDNS($(input).val());$input.removeAttr("readonly");$spinner.hide();if(response.rc<0){input.setCustomValidity(response.rc_str);return[false,i18n[response.rc_str]]}input.setCustomValidity("");return[true,"Success"]};const validInput=async validation=>{if(validation.data.resolveDNS&&$input.val().match(NtopUtils.REGEXES.domainName)){return await validHostname()}if(validation.data.cannotBeEmpty&&validation.isInputEmpty){input.setCustomValidity("Please fill the input.");return[false,validation.data.validationEmptyMessage||i18n.missing_field]}if(input.validity.patternMismatch){input.setCustomValidity("Pattern mismatch.");return[false,validation.data.validationMessage||i18n.invalid_field]}if(input.validity.rangeOverflow){input.setCustomValidity("Value exceed the maximum value.");return[false,validation.data.rangeOverflowMessage||i18n.invalid_field]}if(input.validity.rangeUnderflow){input.setCustomValidity("Value is under the minimum value.");return[false,validation.data.rangeUnderflowMessage||i18n.invalid_field]}input.setCustomValidity("");return[true,"Success"]};const checkValidation=async()=>{const validation={data:{validationMessage:$input.data("validationMessage"),validationEmptyMessage:$input.data("validationEmptyMessage"),cannotBeEmpty:$input.attr("required")==="required"||$input.data("validationNotEmpty")==true,resolveDNS:$input.data("validationResolvedns"),rangeOverflowMessage:$input.data("validationRangeOverflowMessage"),rangeUnderflowMessage:$input.data("validationUnderflowOverflowMessage")},isInputEmpty:typeof $input.val()==="string"?$input.val().trim()=="":false};const[isValid,messageToShow]=await validInput(validation);let $error=$input.parent().find(`.invalid-feedback`);if($error.length==0){$error=$(``)}if(!isValid){$input.addClass("is-invalid");$input.parent().append($error);$error.text(messageToShow)}else{$input.removeClass("is-invalid");$error.fadeOut(500,function(){$(this).remove()})}};$(this).off("input").on("input",function(e){self.currentState=self.createFormSnapshot();if(timeoutId!=-1)clearTimeout(timeoutId);if(!$input.attr("formnovalidate")){timeoutId=setTimeout(()=>{checkValidation();self.toggleFormSubmission()},300);self.firstCloseAttempt=false}});$(this).off("invalid").on("invalid",function(e){e.preventDefault();if(!$input.attr("formnovalidate")){checkValidation()}})})}getModalID(){return $(this.element).parents(".modal").attr("id")}toggleFormSubmission(){let isValid=true;$(this.element).find("input:not(:disabled),select:not(:disabled),textarea:not(:disabled)").each(function(idx,input){isValid&=input.validity.valid});isValid?$(this.element).find(`[type='submit'],[type='test']`).removeAttr("disabled"):$(this.element).find(`[type='submit'],[type='test']`).attr("disabled","disabled")}cleanForm(){$(this.element).find("input,textarea,select").each(function(i,input){$(this).removeClass(`is-valid`).removeClass(`is-invalid`)});$(this.element)[0].reset()}makeRequest(){const $feedbackLabel=$(this.element).find(`.invalid-feedback`);const submitButton=$(this.element).find(`[type='submit']`);let dataToSend=this.options.beforeSumbit(this.data);dataToSend.csrf=this.csrf;dataToSend=$.extend(dataToSend,this.options.submitOptions);submitButton.attr("disabled","disabled");let request;const self=this;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();self.options.onSubmitSuccess(response,dataToSend,self);$(self.element).off("submit",self.submitHandler);self.delegateSubmit()}).fail(function(jqxhr,textStatus,errorThrown){self.isSubmitting=false;const response=jqxhr.responseJSON;if(response.rc!==undefined&&response.rc<0){$feedbackLabel.html(i18n.rest[response.rc_str]).show()}self.options.onSubmitError(response,dataToSend,textStatus,errorThrown)}).always(function(d){submitButton.removeAttr("disabled")})}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);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"&&value===0)return"";return value});class DataTableFiltersMenu{constructor({tableAPI:tableAPI,filterMenuKey:filterMenuKey,filterTitle:filterTitle,filters:filters,columnIndex:columnIndex}){const self=this;this.tableAPI=tableAPI;this.filterTitle=filterTitle;this.filterMenuKey=filterMenuKey;this.columnIndex=columnIndex;this.preventUpdate=false;this.$datatableWrapper=$(tableAPI.context[0].nTableWrapper);this.$datatableWrapper.on("init.dt",function(){self._render(filters)});this.tableAPI.on("draw",function(){self._update()})}_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()});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={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}`)}};$menuContainer.prepend(this._createMenuEntry(allFilter));$dropdownContainer.append($dropdownButton);$dropdownContainer.append($menuContainer);this.$datatableWrapper.find(".dataTables_filter").prepend($dropdownContainer);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()}_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 DataTableUtils{static getStdDatatableConfig(dtButtons=[],dom="<'d-flex'<'mr-auto'l><'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,buttons:{buttons:dtButtons,dom:{button:{className:"btn btn-link"},container:{className:"border-left ml-1 float-right"}}}}}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})}}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 49010b99b0..ec0e1d0e90 100644 --- a/httpdocs/js/ntop.min.js.map +++ b/httpdocs/js/ntop.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["datatable_utils.js","ays_utils.js","string_utils.js","ntop_utils.js","graph_utils.js","ebpf_utils.js","ntopng_validators.js","main.js","notification-daemon.js","utils/modal-utils.js","utils/datatable-utils.js","utils/toast-utils.js"],"names":["datatableRemoveEmptyRow","table","$","remove","datatableAddEmptyRow","empty_str","columns","filter","this","css","length","html","datatableGetNumDisplayedItems","datatableIsEmpty","datatableGetByForm","form","parent","datatableUndoAddRow","new_row","bt_to_enable","callback_str","removeAttr","removeClass","closest","aysUpdateForm","dt","window","datatableForEachRow","callbacks","each","row_i","bind","i","datatableAddButtonCallback","td_idx","label","bs_class","link","visible","append","datatableAddDeleteButtonCallback","datatableAddActionButtonCallback","datatableAddLinkButtonCallback","datatableMakeSelectUnique","tr_obj","added_rows_prefix","options","NtopUtils","paramsExtend","on_change","noop","selector_fn","obj","find","first","datatableForeachSelectOtherThan","this_select","callback","other","datatableOptionChangeStatus","option_obj","enable","select_obj","should_reset","val","attr","new_val","datatableOnSelectEntryChange","change_callback","old_value","new_value","others","push","datatableOnAddSelectEntry","trigger","new_sel","select","on","datatableOrderedInsert","to_insert","to_insert_val","cmp_fn","a","b","inserted","tr","cmp_val","parseInt","isNaN","before","datatableIsLastPage","lastpage","hasClass","datatableGetColumn","id_key","id_value","res","data","resultset","item","datatableGetColumnIndex","column_key","index","findIndex","field","datatableInitRefreshRows","column_id","refresh_interval","trend_columns","$dt","rows","old_timer","old_req","clearInterval","removeData","abort","ids","id_to_row","row","data_id","params","custom_hosts","join","url","first_load","_process_result","result","JSON","parse","console","error","row_idx","row_html","row_tds","key","col_idx","cell","$cell","old_val","trend_value_formatter","arrows","parseFloat","warn","drawTrend","setInterval","ajax","type","cache","success","aysHandleForm","form_selector","default_options","submit_selector","on_dirty_callback","on_clean_callback","handle_submit_buttons","handle_datatable","handle_tabs","disable_on_dirty","ays_options","o","extend","areYouSure","addClass","aysResetForm","aysRecheckForm","aysGetDirty","fields_selector","getValue","$field","undefined","is","$option","isFieldDirty","origValue","curValue","dirty","l","dirty_status","input","String","prototype","capitalizeSingleWord","uc","toUpperCase","charAt","slice","capitalize","split","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","k","jQuery","fn","disable","state","$this","disabled","toggleClass","NTOPNG_MIN_VISUAL_VALUE","REGEXES","ipv4","ipv6","domainName","macAddress","username","singleword","email","https","token","[object Object]","substring","hostname","request","fetch","http_prefix","response","json","err","rc","rc_str","dataPattern","pattern","map","p","toString","mac","value","what","optional_mask","elems","mask","ip_addr","isNumeric","is_good_ipv4","address","is_good_ipv6","bits","sizes","bits_log1000","log","round","pow","ret","toFixed","eps","scaleValue","exports","exports_label","i18n","toLowerCase","bytes","fbits","pps","fps","mps","ms","aps","x","when","epoch","d","actual","str","len","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","hasOwnProperty","appendTo","host_key","info","hostinfo","nav_object","default_tab","click","e","preventDefault","id","target","history","replaceState","location","hash","tab","name","_add_find_host_link","network","snmp_port_idx","asn","html_tag","timestamp","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","oldLabelImportInput","filename","hide","$button","file","files","no_file","reader","FileReader","readAsText","onload","jsonConfiguration","rest_consts","responseJSON","done","status","xhr","successCallback","ToastUtils","showToast","level","title","body","manage_configurations","messagges","import_success","delay","modal","fail","PARTIAL_IMPORT_RC","failureCallback","FAILED_HTTP_REQUEST","always","serializedArray","serialized","forEach","includes","trim","formSelector","reset","uri","controller","AbortController","config","signal","timeout","setTimeout","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","document","ready","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","new_label","metrics_labels","ext_label","tags","category","l4proto","dscp_class","device","if_index","port","exporter","ifname","profile","user_script","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","num","t","values","checkSeriesConsinstency","schema_name","count","rv","upsampleSerie","num_points","intervals","lerp","v0","v1","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","xValueScale","xAxis","yValueScale","yAxis1","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_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","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","yAxis","y2_sum","nv","utils","windowResize","update","isLegendDisabled","default_val","localStorage","getItem","legend","dispatch","legend_key","setItem","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","checkQueryCompleted","flows_dt","wait_num_queries","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","no_data_available","req_params","show_unreachable","no_fill","get","tickValues","color_i","chart_colors","j","current_step","serie_type","serie_color","split_directions","axis","color","has_full_data","additional_series","total","other_serie","past_serie","ratio_over_total","is_disabled","classed","extra_series","class","no_trend","num_smoothed_points","smooth_functions","rsi","relativeStrengthIndexArray","periods","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","total_cell","average_cell","min_cell","max_cell","perc_cell","min_val","min_val_idx","max_val_idx","perc_val","by_serie","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","divider","first_view","setActiveGraphsTableView","has_nindex","nindex_query","per_page","graph_table","nindex_buttons","params_obj","nindex_view","col","textAlign","width","hidden","actions","white-space","text-align","old_dt","datatable","perPage","noResultsMessage","ts_chart","no_results_found","initial_point","detail_view","loadingYOffset","buttons","tableCallback","currentPage","stats_div","has_drilldown","some","drilldown","loading_time","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","height","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","registerServiceWorker","navigator","serviceWorker","register","NOTIFICATION_DEBUG","PushNotificationBuilder","icon","badge","lang","interaction","requireInteraction","Notification","onclick","NotificationManager","requestPermission","pushNotification","canReceiveNotification","registration","getRegistration","showNotification","permissionNotification","permission","ModalHandler","element","dialog","dontDisableSubmit","observer","MutationObserver","list","bindFormValidation","toggleFormSubmission","observe","childList","subtree","initialState","currentState","firstCloseAttempt","isSubmitting","submitButton","snapshot","inputs","s1","s2","self","off","reportValidity","fadeOut","fadeIn","compareFormSnaphsot","selector","$hidden","cleanForm","loadFormData","delegateModalClosing","fillFormModal","onModalInit","parents","onModalShow","createFormSnapshot","delegateResetButton","submitHandler","isSyncRequest","stopPropagation","makeRequest","async","$input","timeoutId","validHostname","$spinner","resolveDNS","setCustomValidity","validInput","validation","cannotBeEmpty","isInputEmpty","validationEmptyMessage","missing_field","validity","patternMismatch","validationMessage","invalid_field","rangeOverflow","rangeOverflowMessage","rangeUnderflow","rangeUnderflowMessage","checkValidation","isValid","messageToShow","$error","clearTimeout","valid","$feedbackLabel","dataToSend","beforeSumbit","submitOptions","method","endpoint","stringify","dataType","contentType","textStatus","resetAfterSubmit","onSubmitSuccess","delegateSubmit","jqxhr","errorThrown","rest","onSubmitError","resetButton","defaultValues","serializeFormArray","serializeArray","modalHandler","loadedData","sent","onModalReset","defaultData","mh","dataTableExt","sErrMode","formatSecondsToHHMMSS","absoluteFormatSecondsToHHMMSS","sortBytes","byte","hideIfZero","DataTableFiltersMenu","tableAPI","filterMenuKey","filterTitle","filters","columnIndex","preventUpdate","$datatableWrapper","context","nTableWrapper","_render","_update","regex","reg","cellValue","$entry","countable","_countEntries","$counter","$dropdown","prepend","newContent","container","column","draw","filtersCreated","$filter","_createMenuEntry","$node","$dropdownContainer","$dropdownButton","$dropdownTitle","_createFilters","button","$menuContainer","_","allFilter","all","_selectFilterFromState","filterKey","loaded","save","DataTableUtils","dtButtons","dom","pagingType","lengthMenu","language","showing_x_to_y_rows","script_search","infoFiltered","paginate","previous","next","saveState","className","external","dataSrc","extension","hasFilters","stateSaveCallback","settings","sInstance","stateLoadCallback","stateSaveParams","activeFilter","padZeroes","padStart","mins","urlParams","URLSearchParams","has","paramName","dataID","datatableInstance","toArray","cancelIf","$modal","getModalID","invokeModalInit","delete","referer","globalToasts","Toast","$toast","$toastHeader","bg","$toastBody","$anchor","dismissable","isAboveAll","toast","hideToast","$element","toastId","destroy","updateBody","option","styles","warning","render","toast_id"],"mappings":"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"} \ No newline at end of file +{"version":3,"sources":["datatable_utils.js","ays_utils.js","string_utils.js","ntop_utils.js","graph_utils.js","ebpf_utils.js","ntopng_validators.js","main.js","notification-daemon.js","utils/modal-utils.js","utils/datatable-utils.js","utils/toast-utils.js"],"names":["datatableRemoveEmptyRow","table","$","remove","datatableAddEmptyRow","empty_str","columns","filter","this","css","length","html","datatableGetNumDisplayedItems","datatableIsEmpty","datatableGetByForm","form","parent","datatableUndoAddRow","new_row","bt_to_enable","callback_str","removeAttr","removeClass","closest","aysUpdateForm","dt","window","datatableForEachRow","callbacks","each","row_i","bind","i","datatableAddButtonCallback","td_idx","label","bs_class","link","visible","append","datatableAddDeleteButtonCallback","datatableAddActionButtonCallback","datatableAddLinkButtonCallback","datatableMakeSelectUnique","tr_obj","added_rows_prefix","options","NtopUtils","paramsExtend","on_change","noop","selector_fn","obj","find","first","datatableForeachSelectOtherThan","this_select","callback","other","datatableOptionChangeStatus","option_obj","enable","select_obj","should_reset","val","attr","new_val","datatableOnSelectEntryChange","change_callback","old_value","new_value","others","push","datatableOnAddSelectEntry","trigger","new_sel","select","on","datatableOrderedInsert","to_insert","to_insert_val","cmp_fn","a","b","inserted","tr","cmp_val","parseInt","isNaN","before","datatableIsLastPage","lastpage","hasClass","datatableGetColumn","id_key","id_value","res","data","resultset","item","datatableGetColumnIndex","column_key","index","findIndex","field","datatableInitRefreshRows","column_id","refresh_interval","trend_columns","$dt","rows","old_timer","old_req","clearInterval","removeData","abort","ids","id_to_row","row","data_id","params","custom_hosts","join","url","first_load","_process_result","result","JSON","parse","console","error","row_idx","row_html","row_tds","key","col_idx","cell","$cell","old_val","trend_value_formatter","arrows","parseFloat","warn","drawTrend","setInterval","ajax","type","cache","success","aysHandleForm","form_selector","default_options","submit_selector","on_dirty_callback","on_clean_callback","handle_submit_buttons","handle_datatable","handle_tabs","disable_on_dirty","ays_options","o","extend","areYouSure","addClass","aysResetForm","aysRecheckForm","aysGetDirty","fields_selector","getValue","$field","undefined","is","$option","isFieldDirty","origValue","curValue","dirty","l","dirty_status","input","String","prototype","capitalizeSingleWord","uc","toUpperCase","charAt","slice","capitalize","split","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","k","jQuery","fn","disable","state","$this","disabled","toggleClass","NTOPNG_MIN_VISUAL_VALUE","REGEXES","ipv4","ipv6","domainName","macAddress","username","singleword","email","https","token","[object Object]","substring","hostname","request","fetch","http_prefix","response","json","err","rc","rc_str","dataPattern","pattern","map","p","toString","mac","value","what","optional_mask","elems","mask","ip_addr","isNumeric","is_good_ipv4","address","is_good_ipv6","bits","sizes","bits_log1000","log","round","pow","ret","toFixed","eps","scaleValue","exports","exports_label","i18n","toLowerCase","bytes","fbits","pps","fps","mps","ms","aps","x","when","epoch","d","actual","str","len","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","hasOwnProperty","appendTo","host_key","info","hostinfo","nav_object","default_tab","click","e","preventDefault","id","target","history","replaceState","location","hash","tab","name","_add_find_host_link","network","snmp_port_idx","asn","html_tag","timestamp","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","oldLabelImportInput","filename","hide","$button","file","files","no_file","reader","FileReader","readAsText","onload","jsonConfiguration","rest_consts","responseJSON","done","status","xhr","successCallback","ToastUtils","showToast","level","title","body","manage_configurations","messagges","import_success","delay","modal","fail","PARTIAL_IMPORT_RC","failureCallback","FAILED_HTTP_REQUEST","always","serializedArray","serialized","forEach","includes","trim","formSelector","reset","uri","controller","AbortController","config","signal","timeout","setTimeout","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","document","ready","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","new_label","metrics_labels","ext_label","tags","category","l4proto","dscp_class","device","if_index","port","exporter","ifname","profile","user_script","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","num","t","values","checkSeriesConsinstency","schema_name","count","rv","upsampleSerie","num_points","intervals","lerp","v0","v1","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","xValueScale","xAxis","yValueScale","yAxis1","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_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","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","yAxis","y2_sum","nv","utils","windowResize","update","isLegendDisabled","default_val","localStorage","getItem","legend","dispatch","legend_key","setItem","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","checkQueryCompleted","flows_dt","wait_num_queries","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","no_data_available","req_params","show_unreachable","no_fill","get","tickValues","color_i","chart_colors","j","current_step","serie_type","serie_color","split_directions","axis","color","has_full_data","additional_series","total","other_serie","past_serie","ratio_over_total","is_disabled","classed","extra_series","class","no_trend","num_smoothed_points","smooth_functions","rsi","relativeStrengthIndexArray","periods","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","total_cell","average_cell","min_cell","max_cell","perc_cell","min_val","min_val_idx","max_val_idx","perc_val","by_serie","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","divider","first_view","setActiveGraphsTableView","has_nindex","nindex_query","per_page","graph_table","nindex_buttons","params_obj","nindex_view","col","textAlign","width","hidden","actions","white-space","text-align","old_dt","datatable","perPage","noResultsMessage","ts_chart","no_results_found","initial_point","detail_view","loadingYOffset","buttons","tableCallback","currentPage","stats_div","has_drilldown","some","drilldown","loading_time","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","height","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","registerServiceWorker","navigator","serviceWorker","register","NOTIFICATION_DEBUG","PushNotificationBuilder","icon","badge","lang","interaction","requireInteraction","Notification","onclick","NotificationManager","requestPermission","pushNotification","canReceiveNotification","registration","getRegistration","showNotification","permissionNotification","permission","ModalHandler","element","dialog","dontDisableSubmit","observer","MutationObserver","list","bindFormValidation","toggleFormSubmission","observe","childList","subtree","initialState","currentState","firstCloseAttempt","isSubmitting","submitButton","snapshot","inputs","s1","s2","self","off","reportValidity","fadeOut","fadeIn","compareFormSnaphsot","selector","$hidden","cleanForm","loadFormData","delegateModalClosing","fillFormModal","onModalInit","parents","onModalShow","createFormSnapshot","delegateResetButton","submitHandler","isSyncRequest","stopPropagation","makeRequest","async","$input","timeoutId","validHostname","$spinner","resolveDNS","setCustomValidity","validInput","validation","cannotBeEmpty","isInputEmpty","validationEmptyMessage","missing_field","validity","patternMismatch","validationMessage","invalid_field","rangeOverflow","rangeOverflowMessage","rangeUnderflow","rangeUnderflowMessage","checkValidation","isValid","messageToShow","$error","clearTimeout","valid","$feedbackLabel","dataToSend","beforeSumbit","submitOptions","method","endpoint","stringify","dataType","contentType","textStatus","resetAfterSubmit","onSubmitSuccess","delegateSubmit","jqxhr","errorThrown","rest","onSubmitError","resetButton","defaultValues","serializeFormArray","serializeArray","modalHandler","loadedData","sent","onModalReset","defaultData","mh","dataTableExt","sErrMode","formatSecondsToHHMMSS","absoluteFormatSecondsToHHMMSS","sortBytes","byte","hideIfZero","DataTableFiltersMenu","tableAPI","filterMenuKey","filterTitle","filters","columnIndex","preventUpdate","$datatableWrapper","context","nTableWrapper","_render","_update","regex","reg","cellValue","$entry","countable","_countEntries","$counter","$dropdown","prepend","newContent","container","column","draw","filtersCreated","$filter","_createMenuEntry","$node","$dropdownContainer","$dropdownButton","$dropdownTitle","_createFilters","button","$menuContainer","_","allFilter","all","_selectFilterFromState","filterKey","loaded","save","DataTableUtils","dtButtons","dom","pagingType","lengthMenu","language","showing_x_to_y_rows","script_search","infoFiltered","paginate","previous","next","saveState","className","external","dataSrc","extension","hasFilters","stateSaveCallback","settings","sInstance","stateLoadCallback","stateSaveParams","activeFilter","padZeroes","padStart","mins","urlParams","URLSearchParams","has","paramName","dataID","datatableInstance","toArray","cancelIf","$modal","getModalID","invokeModalInit","delete","referer","globalToasts","Toast","$toast","$toastHeader","bg","$toastBody","$anchor","dismissable","isAboveAll","toast","hideToast","$element","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/ntop_utils.js b/httpdocs/js/ntop_utils.js index 5dacb138c3..9fee90de64 100644 --- a/httpdocs/js/ntop_utils.js +++ b/httpdocs/js/ntop_utils.js @@ -43,7 +43,7 @@ const REGEXES = { 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._%+-]{2,}@[a-zA-Z\-]{1,}([.]{1}[a-zA-Z]{2,}|[.]{1}[a-zA-Z]{2,}[.]{1}[a-zA-Z]{2,})", + email: "^([a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*)$", https: "^https?://.+$", token: "^[0-9a-f]{32}" };