diff --git a/httpdocs/css/minified/tempusdominus.min.css b/httpdocs/css/minified/tempusdominus.min.css index 1d8686e94a..8bec5a6375 100644 --- a/httpdocs/css/minified/tempusdominus.min.css +++ b/httpdocs/css/minified/tempusdominus.min.css @@ -1 +1 @@ -.bootstrap-datetimepicker-widget .btn[data-action=clear]::after,.bootstrap-datetimepicker-widget .btn[data-action=decrementHours]::after,.bootstrap-datetimepicker-widget .btn[data-action=decrementMinutes]::after,.bootstrap-datetimepicker-widget .btn[data-action=incrementHours]::after,.bootstrap-datetimepicker-widget .btn[data-action=incrementMinutes]::after,.bootstrap-datetimepicker-widget .btn[data-action=showHours]::after,.bootstrap-datetimepicker-widget .btn[data-action=showMinutes]::after,.bootstrap-datetimepicker-widget .btn[data-action=today]::after,.bootstrap-datetimepicker-widget .btn[data-action=togglePeriod]::after,.bootstrap-datetimepicker-widget .picker-switch::after,.bootstrap-datetimepicker-widget table th.next::after,.bootstrap-datetimepicker-widget table th.prev::after,.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.bootstrap-datetimepicker-widget{list-style:none}.bootstrap-datetimepicker-widget.dropdown-menu{display:block;margin:2px 0;padding:4px;width:auto}@media (min-width:576px){.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:768px){.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:992px){.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}.bootstrap-datetimepicker-widget.dropdown-menu:after,.bootstrap-datetimepicker-widget.dropdown-menu:before{content:'';display:inline-block;position:absolute}.bootstrap-datetimepicker-widget.dropdown-menu.bottom:before{border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid rgba(0,0,0,.2);top:-7px;left:7px}.bootstrap-datetimepicker-widget.dropdown-menu.bottom:after{border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;top:-6px;left:8px}.bootstrap-datetimepicker-widget.dropdown-menu.top:before{border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid rgba(0,0,0,.2);bottom:-7px;left:6px}.bootstrap-datetimepicker-widget.dropdown-menu.top:after{border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #fff;bottom:-6px;left:7px}.bootstrap-datetimepicker-widget.dropdown-menu.float-right:before{left:auto;right:6px}.bootstrap-datetimepicker-widget.dropdown-menu.float-right:after{left:auto;right:7px}.bootstrap-datetimepicker-widget.dropdown-menu.wider{width:16rem}.bootstrap-datetimepicker-widget .list-unstyled{margin:0}.bootstrap-datetimepicker-widget a[data-action]{padding:6px 0}.bootstrap-datetimepicker-widget a[data-action]:active{box-shadow:none}.bootstrap-datetimepicker-widget .timepicker-hour,.bootstrap-datetimepicker-widget .timepicker-minute,.bootstrap-datetimepicker-widget .timepicker-second{width:54px;font-weight:700;font-size:1.2em;margin:0}.bootstrap-datetimepicker-widget button[data-action]{padding:6px}.bootstrap-datetimepicker-widget .btn[data-action=incrementHours]::after{content:"Increment Hours"}.bootstrap-datetimepicker-widget .btn[data-action=incrementMinutes]::after{content:"Increment Minutes"}.bootstrap-datetimepicker-widget .btn[data-action=decrementHours]::after{content:"Decrement Hours"}.bootstrap-datetimepicker-widget .btn[data-action=decrementMinutes]::after{content:"Decrement Minutes"}.bootstrap-datetimepicker-widget .btn[data-action=showHours]::after{content:"Show Hours"}.bootstrap-datetimepicker-widget .btn[data-action=showMinutes]::after{content:"Show Minutes"}.bootstrap-datetimepicker-widget .btn[data-action=togglePeriod]::after{content:"Toggle AM/PM"}.bootstrap-datetimepicker-widget .btn[data-action=clear]::after{content:"Clear the picker"}.bootstrap-datetimepicker-widget .btn[data-action=today]::after{content:"Set the date to today"}.bootstrap-datetimepicker-widget .picker-switch{text-align:center}.bootstrap-datetimepicker-widget .picker-switch::after{content:"Toggle Date and Time Screens"}.bootstrap-datetimepicker-widget .picker-switch td{padding:0;margin:0;height:auto;width:auto;line-height:inherit}.bootstrap-datetimepicker-widget .picker-switch td span{line-height:2.5;height:2.5em;width:100%}.bootstrap-datetimepicker-widget table{width:100%;margin:0}.bootstrap-datetimepicker-widget table td,.bootstrap-datetimepicker-widget table th{text-align:center;border-radius:.25rem}.bootstrap-datetimepicker-widget table th{height:20px;line-height:20px;width:20px}.bootstrap-datetimepicker-widget table th.picker-switch{width:145px}.bootstrap-datetimepicker-widget table th.disabled,.bootstrap-datetimepicker-widget table th.disabled:hover{background:0 0;color:#6c757d;cursor:not-allowed}.bootstrap-datetimepicker-widget table th.prev::after{content:"Previous Month"}.bootstrap-datetimepicker-widget table th.next::after{content:"Next Month"}.bootstrap-datetimepicker-widget table thead tr:first-child th{cursor:pointer}.bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#e9ecef}.bootstrap-datetimepicker-widget table td{height:54px;line-height:54px;width:54px}.bootstrap-datetimepicker-widget table td.cw{font-size:.8em;height:20px;line-height:20px;color:#6c757d}.bootstrap-datetimepicker-widget table td.day{height:20px;line-height:20px;width:20px}.bootstrap-datetimepicker-widget table td.day:hover,.bootstrap-datetimepicker-widget table td.hour:hover,.bootstrap-datetimepicker-widget table td.minute:hover,.bootstrap-datetimepicker-widget table td.second:hover{background:#e9ecef;cursor:pointer}.bootstrap-datetimepicker-widget table td.new,.bootstrap-datetimepicker-widget table td.old{color:#6c757d}.bootstrap-datetimepicker-widget table td.today{position:relative}.bootstrap-datetimepicker-widget table td.today:before{content:'';display:inline-block;border:solid transparent;border-width:0 0 7px 7px;border-bottom-color:#007bff;border-top-color:rgba(0,0,0,.2);position:absolute;bottom:4px;right:4px}.bootstrap-datetimepicker-widget table td.active,.bootstrap-datetimepicker-widget table td.active:hover{background-color:#007bff;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.bootstrap-datetimepicker-widget table td.active.today:before{border-bottom-color:#fff}.bootstrap-datetimepicker-widget table td.disabled,.bootstrap-datetimepicker-widget table td.disabled:hover{background:0 0;color:#6c757d;cursor:not-allowed}.bootstrap-datetimepicker-widget table td span{display:inline-block;width:54px;height:54px;line-height:54px;margin:2px 1.5px;cursor:pointer;border-radius:.25rem}.bootstrap-datetimepicker-widget table td span:hover{background:#e9ecef}.bootstrap-datetimepicker-widget table td span.active{background-color:#007bff;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.bootstrap-datetimepicker-widget table td span.old{color:#6c757d}.bootstrap-datetimepicker-widget table td span.disabled,.bootstrap-datetimepicker-widget table td span.disabled:hover{background:0 0;color:#6c757d;cursor:not-allowed}.bootstrap-datetimepicker-widget.usetwentyfour td.hour{height:27px;line-height:27px}.input-group [data-toggle=datetimepicker]{cursor:pointer} \ No newline at end of file +.sr-only,.bootstrap-datetimepicker-widget .btn[data-action=incrementHours]::after,.bootstrap-datetimepicker-widget .btn[data-action=incrementMinutes]::after,.bootstrap-datetimepicker-widget .btn[data-action=decrementHours]::after,.bootstrap-datetimepicker-widget .btn[data-action=decrementMinutes]::after,.bootstrap-datetimepicker-widget .btn[data-action=showHours]::after,.bootstrap-datetimepicker-widget .btn[data-action=showMinutes]::after,.bootstrap-datetimepicker-widget .btn[data-action=togglePeriod]::after,.bootstrap-datetimepicker-widget .btn[data-action=clear]::after,.bootstrap-datetimepicker-widget .btn[data-action=today]::after,.bootstrap-datetimepicker-widget .picker-switch::after,.bootstrap-datetimepicker-widget table th.prev::after,.bootstrap-datetimepicker-widget table th.next::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.bootstrap-datetimepicker-widget{list-style:none}.bootstrap-datetimepicker-widget.dropdown-menu{display:block;margin:2px 0;padding:4px;width:auto}@media (min-width:576px){.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:768px){.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:992px){.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}.bootstrap-datetimepicker-widget.dropdown-menu:before,.bootstrap-datetimepicker-widget.dropdown-menu:after{content:'';display:inline-block;position:absolute}.bootstrap-datetimepicker-widget.dropdown-menu.bottom:before{border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,.2);top:-7px;left:7px}.bootstrap-datetimepicker-widget.dropdown-menu.bottom:after{border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;top:-6px;left:8px}.bootstrap-datetimepicker-widget.dropdown-menu.top:before{border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid #ccc;border-top-color:rgba(0,0,0,.2);bottom:-7px;left:6px}.bootstrap-datetimepicker-widget.dropdown-menu.top:after{border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #fff;bottom:-6px;left:7px}.bootstrap-datetimepicker-widget.dropdown-menu.float-right:before{left:auto;right:6px}.bootstrap-datetimepicker-widget.dropdown-menu.float-right:after{left:auto;right:7px}.bootstrap-datetimepicker-widget.dropdown-menu.wider{width:16rem}.bootstrap-datetimepicker-widget .list-unstyled{margin:0}.bootstrap-datetimepicker-widget a[data-action]{padding:6px 0}.bootstrap-datetimepicker-widget a[data-action]:active{box-shadow:none}.bootstrap-datetimepicker-widget .timepicker-hour,.bootstrap-datetimepicker-widget .timepicker-minute,.bootstrap-datetimepicker-widget .timepicker-second{width:54px;font-weight:700;font-size:1.2em;margin:0}.bootstrap-datetimepicker-widget button[data-action]{padding:6px}.bootstrap-datetimepicker-widget .btn[data-action=incrementHours]::after{content:"Increment Hours"}.bootstrap-datetimepicker-widget .btn[data-action=incrementMinutes]::after{content:"Increment Minutes"}.bootstrap-datetimepicker-widget .btn[data-action=decrementHours]::after{content:"Decrement Hours"}.bootstrap-datetimepicker-widget .btn[data-action=decrementMinutes]::after{content:"Decrement Minutes"}.bootstrap-datetimepicker-widget .btn[data-action=showHours]::after{content:"Show Hours"}.bootstrap-datetimepicker-widget .btn[data-action=showMinutes]::after{content:"Show Minutes"}.bootstrap-datetimepicker-widget .btn[data-action=togglePeriod]::after{content:"Toggle AM/PM"}.bootstrap-datetimepicker-widget .btn[data-action=clear]::after{content:"Clear the picker"}.bootstrap-datetimepicker-widget .btn[data-action=today]::after{content:"Set the date to today"}.bootstrap-datetimepicker-widget .picker-switch{text-align:center}.bootstrap-datetimepicker-widget .picker-switch::after{content:"Toggle Date and Time Screens"}.bootstrap-datetimepicker-widget .picker-switch td{padding:0;margin:0;height:auto;width:auto;line-height:inherit}.bootstrap-datetimepicker-widget .picker-switch td span{line-height:2.5;height:2.5em;width:100%}.bootstrap-datetimepicker-widget table{width:100%;margin:0}.bootstrap-datetimepicker-widget table td,.bootstrap-datetimepicker-widget table th{text-align:center;border-radius:.25rem}.bootstrap-datetimepicker-widget table th{height:20px;line-height:20px;width:20px}.bootstrap-datetimepicker-widget table th.picker-switch{width:145px}.bootstrap-datetimepicker-widget table th.disabled,.bootstrap-datetimepicker-widget table th.disabled:hover{background:0;color:#6c757d;cursor:not-allowed}.bootstrap-datetimepicker-widget table th.prev::after{content:"Previous Month"}.bootstrap-datetimepicker-widget table th.next::after{content:"Next Month"}.bootstrap-datetimepicker-widget table thead tr:first-child th{cursor:pointer}.bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#e9ecef}.bootstrap-datetimepicker-widget table td{height:54px;line-height:54px;width:54px}.bootstrap-datetimepicker-widget table td.cw{font-size:.8em;height:20px;line-height:20px;color:#6c757d}.bootstrap-datetimepicker-widget table td.day{height:20px;line-height:20px;width:20px}.bootstrap-datetimepicker-widget table td.day:hover,.bootstrap-datetimepicker-widget table td.hour:hover,.bootstrap-datetimepicker-widget table td.minute:hover,.bootstrap-datetimepicker-widget table td.second:hover{background:#e9ecef;cursor:pointer}.bootstrap-datetimepicker-widget table td.old,.bootstrap-datetimepicker-widget table td.new{color:#6c757d}.bootstrap-datetimepicker-widget table td.today{position:relative}.bootstrap-datetimepicker-widget table td.today:before{content:'';display:inline-block;border:solid transparent;border-width:0 0 7px 7px;border-bottom-color:#007bff;border-top-color:rgba(0,0,0,.2);position:absolute;bottom:4px;right:4px}.bootstrap-datetimepicker-widget table td.active,.bootstrap-datetimepicker-widget table td.active:hover{background-color:#007bff;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.bootstrap-datetimepicker-widget table td.active.today:before{border-bottom-color:#fff}.bootstrap-datetimepicker-widget table td.disabled,.bootstrap-datetimepicker-widget table td.disabled:hover{background:0;color:#6c757d;cursor:not-allowed}.bootstrap-datetimepicker-widget table td span{display:inline-block;width:54px;height:54px;line-height:54px;margin:2px 1.5px;cursor:pointer;border-radius:.25rem}.bootstrap-datetimepicker-widget table td span:hover{background:#e9ecef}.bootstrap-datetimepicker-widget table td span.active{background-color:#007bff;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.bootstrap-datetimepicker-widget table td span.old{color:#6c757d}.bootstrap-datetimepicker-widget table td span.disabled,.bootstrap-datetimepicker-widget table td span.disabled:hover{background:0;color:#6c757d;cursor:not-allowed}.bootstrap-datetimepicker-widget.usetwentyfour td.hour{height:27px;line-height:27px}.input-group [data-toggle=datetimepicker]{cursor:pointer} \ No newline at end of file diff --git a/httpdocs/js/ntop.min.js b/httpdocs/js/ntop.min.js index 5355ba75f6..61cbe0d4b5 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,"badge-danger",callback_str,"javascript:void(0)")}function datatableAddActionButtonCallback(td_idx,callback_str,label){datatableAddButtonCallback.bind(this)(td_idx,label,"badge-info",callback_str,"javascript:void(0)")}function datatableAddLinkButtonCallback(td_idx,link,label){datatableAddButtonCallback.bind(this)(td_idx,label,"badge-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]|[a-zA-Z][a-zA-Z0-9-]*[a-zA-Z0-9]).)*([A-Za-z]|[A-Za-z][A-Za-z0-9-]*[A-Za-z0-9])$",macAddress:"^([0-9A-Fa-f]{2}:){5}([0-9A-Fa-f]{2})$",username:"^(?=[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?://.+$"};class NtopUtils{static get REGEXES(){return REGEXES}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{return''}}static abbreviateString(str,len){if(!str)return"";if(str.length=0&&bytes=kilobyte&&bytes=megabyte&&bytes=gigabyte&&bytes=terabyte)return(bytes/terabyte).toFixed(precision)+" TB";else return 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);NtopUtils._add_find_host_link(form,"page","layer_2")}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(NtopUtils.check_status_code(xhr.status,xhr.statusText,$("#import-error"))){$button.removeAttr("disabled");return}if(!d.success){$("#import-error").text(d.error).show();$button.removeAttr("disabled");params.reset_csrf(d.csrf)}else{location.reload()}}).fail(({status:status,statusText:statusText})=>{NtopUtils.check_status_code(status,statusText,$("#import-error"));$button.removeAttr("disabled")})}};reader.readAsText(file,"UTF-8")}});$("#import-modal").on("submit","form",function(e){e.preventDefault();$("#btn-import").trigger("click")})}static serializeFormArray(serializedArray){const serialized={};serializedArray.forEach(obj=>{if(obj.name.includes("[]")){return}else{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 arrayToListString(array,limit){if(array==undefined)return"";if(array.length>limit){const otherStr=array.length-limit==1?i18n.other:i18n.others;return array.slice(0,limit).join(", ")+` ${i18n.and} ${array.length-limit} ${otherStr.toLowerCase()}`}return array.slice(0,limit).join(", ")}static getEditPoolLink(href,poolId){const url=new URL(href,window.location);url.searchParams.set("pool",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){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();$(`input#import-input`).on("change",function(){const filename=$(this).val().replace("C:\\fakepath\\","");$(`label[for='#import-input']`).html(filename)})});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)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){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 INDEX_SEARCH_COLUMN=3;$.fn.dataTable.ext.buttons.filterScripts={className:"filter-scripts-button",init:function(dt,node,config){const button_id=config.attr.id;$(node).removeClass("btn").removeClass("btn-secondary");const button_text=$(node).html();let count=0;if(button_id=="all-scripts"){count=dt.data().length}else if(button_id=="enabled-scripts"){dt.data().each(d=>{const parsed=d.is_enabled;if(parsed)count+=1})}else if(button_id=="disabled-scripts"){dt.data().each(d=>{const parsed=d.is_enabled;if(!parsed)count+=1})}$(node).html(`${button_text} (${count})`)},action:function(e,dt,node,config){const button_id=config.attr.id;$("#all-scripts, #enabled-scripts, #disabled-scripts").removeClass("active");if(button_id=="all-scripts"){dt.columns(INDEX_SEARCH_COLUMN).search("").draw();window.history.replaceState(undefined,undefined,"#all")}else if(button_id=="enabled-scripts"){dt.columns(INDEX_SEARCH_COLUMN).search("true").draw();window.history.replaceState(undefined,undefined,"#enabled")}else if(button_id=="disabled-scripts"){dt.columns(INDEX_SEARCH_COLUMN).search("false").draw();window.history.replaceState(undefined,undefined,"#disabled")}$(`span[data-toggle='popover']`).popover({trigger:"manual",html:true,animation:false}).on("mouseenter",function(){let self=this;$(this).popover("show");$(".popover").on("mouseleave",function(){$(self).popover("hide")})}).on("mouseleave",function(){let self=this;setTimeout(function(){if(!$(".popover:hover").length){$(self).popover("hide")}},50)});$(`#${button_id}`).addClass("active")}};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").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)})})}fillFormModal(){return this.options.loadFormData()}invokeModalInit(data={}){const self=this;this.delegateModalClosing();this.data=data||this.fillFormModal();this.options.onModalInit(this.data);$(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("Invalid input.");return[false,validation.data.validationMessage||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")},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()},500);self.firstCloseAttempt=false}});$(this).off("invalid").on("invalid",function(e){e.preventDefault();if(!$input.attr("formnovalidate")){checkValidation()}})})}toggleFormSubmission(){let isValid=true;$(this.element).find("input,select,textarea").each(function(idx,input){isValid&=input.validity.valid});isValid?$(this.element).find(`[type='submit']`).removeAttr("disabled"):$(this.element).find(`[type='submit']`).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 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();self.options.onSubmitSuccess(response,dataToSend,self);$(self.element).off("submit",self.submitHandler);self.delegateSubmit()}).fail(function(jqxhr,textStatus,errorThrown){self.isSubmitting=false;self.options.onSubmitError(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});class DataTableUtils{static getStdDatatableConfig(dtButtons=[],dom="<'d-flex'<'mr-auto'l><'dt-search'f>B>rtip"){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 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 countEntries(val,data){let counter=0;data.forEach(d=>{if(d.toLowerCase()==val.toLowerCase())counter++});return counter}static updateFilters(filterTitle,tableAPI){const menuFilterKey=filterTitle.toLowerCase().split(" ").join("_");const $menuFilter=$(`[data-filter='${menuFilterKey}']`);const columnIndex=$menuFilter.data("filterIndex");$menuFilter.find("[data-filter-key]").each(function(){const key=$(this).data("filterKey");if(key=="all")return;const count=DataTableUtils.countEntries(key,tableAPI.columns(columnIndex).data()[0]);if(count==0){$(this).hide()}else{$(this).show()}$(this).find(".counter").text(`(${count})`);$(`span[data-filter-key='${key}']`).find(".counter").text(`(${count})`)})}static addFilterDropdown(title,filters=[],columnIndex,filterID,tableAPI){const createEntry=(val,key,hasToCount,callback)=>{const $entry=$(``);if(hasToCount){const count=DataTableUtils.countEntries(val,tableAPI.columns(columnIndex).data()[0]);const $counter=$(`(${count})`);if(count==0)$entry.hide();$entry.append($counter)}$entry.click(function(e){if($dropdownTitle.parent().find(`i.fas`).length==0){$dropdownTitle.parent().prepend(``)}$dropdownTitle.html($entry.html());$dropdownTitle.attr(`data-filter-key`,key);$menuContainer.find("li").removeClass(`active`);$entry.addClass(`active`);if(callback)callback(e)});return $entry};const filterKey=title.toLowerCase().split(" ").join("_");const dropdownId=`${filterKey}-filter-menu`;const $dropdownContainer=$(``);const $dropdownButton=$(``);const $dropdownTitle=$(`${title}`);$dropdownButton.append($dropdownTitle);const $menuContainer=$(``);for(let filter of filters){const $entry=createEntry(filter.label,filter.key,filter.countable,function(e){if(filter.callback){filter.callback()}tableAPI.column(columnIndex).search(filter.regex,true,false).draw()});$menuContainer.append($entry)}const $allEntry=createEntry(i18n.all,"all",false,e=>{$dropdownTitle.parent().find("i.fas.fa-filter").remove();$dropdownTitle.html(`${title}`).removeAttr(`data-filter-key`);tableAPI.columns(columnIndex).search("").draw(true)});$(filterID).prepend($dropdownContainer.append($dropdownButton,$menuContainer.prepend($allEntry)));DataTableUtils.setCurrentFilter(tableAPI,filterKey)}static setCurrentFilter(tableAPI,filterKey){if(!tableAPI.state)return;if(!tableAPI.state.loaded())return;if(!tableAPI.state.loaded().filters)return;const filters=tableAPI.state.loaded().filters;if(!filters)return;const filter=filters[filterKey];if(!filter)return;const $entry=$(`#${filterKey}-filter-menu li[data-filter-key='${filter}']`).addClass("active");if(filter!="all")$(`#${filterKey}-filter-menu button`).prepend(``).find(`span`).html($entry.text());tableAPI.state.save()}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)}`}}const alertNotifications={};let alertNotificationUtilsId=0;class AlertNotification{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(){AlertNotificationUtils.hideAlert(self.id)});this.$element=$toast;return $toast}updateBody(body){if(this.$element==undefined)throw"[AlertNotification] :: The notification has not been rendered yet!";this.$element.find(".toast-body span").text(body)}destroy(){this.$element.toast("dispose");this.$element.empty()}}class AlertNotificationUtils{static initAlerts(){$(`.toast.alert-notification`).each(function(){const noScope=$(this).data("notificationNoScope");const pages=noScope==""||noScope==undefined?[]:noScope.split(";");if(pages.length>0&&pages.some(page=>location.href.contains(page))){$(this).remove()}$(this).toast("show")})}static hideAlert(notificationId){if(!notificationId){console.warn("[AlertNotificationUtils] :: The notification id cannot be null!");return}if(!(notificationId in alertNotifications)){console.warn("[AlertNotificationUtils] :: The notification hasn't been found!");return}alertNotifications[notificationId].destroy();delete alertNotifications[notificationId]}static updateNotification(notificationId,body){if(!(notificationId in alertNotifications)){throw"[AlertNotificationUtils] :: The notification was not found!"}alertNotifications[notificationId].updateBody(body)}static showAlert(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"[AlertNotificationUtils] :: An AlertNotification must have an in id!";if(option.id in alertNotifications)throw"[AlertNotificationUtils] :: An AlertNotification with the same id already exists!";if(option.title===undefined)throw"[AlertNotificationUtils]:: An AlertNotification must have a title!";if(option.body===undefined)throw"[AlertNotificationUtils]:: An AlertNotification must have a body!";const notification=new AlertNotification(option);$(`#main-container`).prepend(notification.render());alertNotifications[option.id]=notification;return notification}static bindClosingEvent(){$(".toast.alert-notification[data-notification-id]").on("hidden.bs.toast",function(){$.post(`${http_prefix}/lua/handler_alert_notification.lua`,{notification_id:$(this).data("notificationId"),action:`disposed`})})}} +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,"badge-danger",callback_str,"javascript:void(0)")}function datatableAddActionButtonCallback(td_idx,callback_str,label){datatableAddButtonCallback.bind(this)(td_idx,label,"badge-info",callback_str,"javascript:void(0)")}function datatableAddLinkButtonCallback(td_idx,link,label){datatableAddButtonCallback.bind(this)(td_idx,label,"badge-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]|[a-zA-Z][a-zA-Z0-9-]*[a-zA-Z0-9]).)*([A-Za-z]|[A-Za-z][A-Za-z0-9-]*[A-Za-z0-9])$",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?://.+$"};class NtopUtils{static get REGEXES(){return REGEXES}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{return''}}static abbreviateString(str,len){if(!str)return"";if(str.length=0&&bytes=kilobyte&&bytes=megabyte&&bytes=gigabyte&&bytes=terabyte)return(bytes/terabyte).toFixed(precision)+" TB";else return 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);NtopUtils._add_find_host_link(form,"page","layer_2")}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(NtopUtils.check_status_code(xhr.status,xhr.statusText,$("#import-error"))){$button.removeAttr("disabled");return}if(!d.success){$("#import-error").text(d.error).show();$button.removeAttr("disabled");params.reset_csrf(d.csrf)}else{location.reload()}}).fail(({status:status,statusText:statusText})=>{NtopUtils.check_status_code(status,statusText,$("#import-error"));$button.removeAttr("disabled")})}};reader.readAsText(file,"UTF-8")}});$("#import-modal").on("submit","form",function(e){e.preventDefault();$("#btn-import").trigger("click")})}static serializeFormArray(serializedArray){const serialized={};serializedArray.forEach(obj=>{if(obj.name.includes("[]")){return}else{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 arrayToListString(array,limit){if(array==undefined)return"";if(array.length>limit){const otherStr=array.length-limit==1?i18n.other:i18n.others;return array.slice(0,limit).join(", ")+` ${i18n.and} ${array.length-limit} ${otherStr.toLowerCase()}`}return array.slice(0,limit).join(", ")}static getEditPoolLink(href,poolId){const url=new URL(href,window.location);url.searchParams.set("pool",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){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();$(`input#import-input`).on("change",function(){const filename=$(this).val().replace("C:\\fakepath\\","");$(`label[for='#import-input']`).html(filename)})});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)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){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 INDEX_SEARCH_COLUMN=3;$.fn.dataTable.ext.buttons.filterScripts={className:"filter-scripts-button",init:function(dt,node,config){const button_id=config.attr.id;$(node).removeClass("btn").removeClass("btn-secondary");const button_text=$(node).html();let count=0;if(button_id=="all-scripts"){count=dt.data().length}else if(button_id=="enabled-scripts"){dt.data().each(d=>{const parsed=d.is_enabled;if(parsed)count+=1})}else if(button_id=="disabled-scripts"){dt.data().each(d=>{const parsed=d.is_enabled;if(!parsed)count+=1})}$(node).html(`${button_text} (${count})`)},action:function(e,dt,node,config){const button_id=config.attr.id;$("#all-scripts, #enabled-scripts, #disabled-scripts").removeClass("active");if(button_id=="all-scripts"){dt.columns(INDEX_SEARCH_COLUMN).search("").draw();window.history.replaceState(undefined,undefined,"#all")}else if(button_id=="enabled-scripts"){dt.columns(INDEX_SEARCH_COLUMN).search("true").draw();window.history.replaceState(undefined,undefined,"#enabled")}else if(button_id=="disabled-scripts"){dt.columns(INDEX_SEARCH_COLUMN).search("false").draw();window.history.replaceState(undefined,undefined,"#disabled")}$(`span[data-toggle='popover']`).popover({trigger:"manual",html:true,animation:false}).on("mouseenter",function(){let self=this;$(this).popover("show");$(".popover").on("mouseleave",function(){$(self).popover("hide")})}).on("mouseleave",function(){let self=this;setTimeout(function(){if(!$(".popover:hover").length){$(self).popover("hide")}},50)});$(`#${button_id}`).addClass("active")}};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").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)})})}fillFormModal(){return this.options.loadFormData()}invokeModalInit(data={}){const self=this;this.delegateModalClosing();this.data=data||this.fillFormModal();this.options.onModalInit(this.data);$(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("Invalid input.");return[false,validation.data.validationMessage||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")},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()},500);self.firstCloseAttempt=false}});$(this).off("invalid").on("invalid",function(e){e.preventDefault();if(!$input.attr("formnovalidate")){checkValidation()}})})}toggleFormSubmission(){let isValid=true;$(this.element).find("input,select,textarea").each(function(idx,input){isValid&=input.validity.valid});isValid?$(this.element).find(`[type='submit']`).removeAttr("disabled"):$(this.element).find(`[type='submit']`).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 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();self.options.onSubmitSuccess(response,dataToSend,self);$(self.element).off("submit",self.submitHandler);self.delegateSubmit()}).fail(function(jqxhr,textStatus,errorThrown){self.isSubmitting=false;self.options.onSubmitError(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});class DataTableUtils{static getStdDatatableConfig(dtButtons=[],dom="<'d-flex'<'mr-auto'l><'dt-search'f>B>rtip"){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 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 countEntries(val,data){let counter=0;data.forEach(d=>{if(d.toLowerCase()==val.toLowerCase())counter++});return counter}static updateFilters(filterTitle,tableAPI){const menuFilterKey=filterTitle.toLowerCase().split(" ").join("_");const $menuFilter=$(`[data-filter='${menuFilterKey}']`);const columnIndex=$menuFilter.data("filterIndex");$menuFilter.find("[data-filter-key]").each(function(){const key=$(this).data("filterKey");if(key=="all")return;const count=DataTableUtils.countEntries(key,tableAPI.columns(columnIndex).data()[0]);if(count==0){$(this).hide()}else{$(this).show()}$(this).find(".counter").text(`(${count})`);$(`span[data-filter-key='${key}']`).find(".counter").text(`(${count})`)})}static addFilterDropdown(title,filters=[],columnIndex,filterID,tableAPI){const createEntry=(val,key,hasToCount,callback)=>{const $entry=$(``);if(hasToCount){const count=DataTableUtils.countEntries(val,tableAPI.columns(columnIndex).data()[0]);const $counter=$(`(${count})`);if(count==0)$entry.hide();$entry.append($counter)}$entry.click(function(e){if($dropdownTitle.parent().find(`i.fas`).length==0){$dropdownTitle.parent().prepend(``)}$dropdownTitle.html($entry.html());$dropdownTitle.attr(`data-filter-key`,key);$menuContainer.find("li").removeClass(`active`);$entry.addClass(`active`);if(callback)callback(e)});return $entry};const filterKey=title.toLowerCase().split(" ").join("_");const dropdownId=`${filterKey}-filter-menu`;const $dropdownContainer=$(``);const $dropdownButton=$(``);const $dropdownTitle=$(`${title}`);$dropdownButton.append($dropdownTitle);const $menuContainer=$(``);for(let filter of filters){const $entry=createEntry(filter.label,filter.key,filter.countable,function(e){if(filter.callback){filter.callback()}tableAPI.column(columnIndex).search(filter.regex,true,false).draw()});$menuContainer.append($entry)}const $allEntry=createEntry(i18n.all,"all",false,e=>{$dropdownTitle.parent().find("i.fas.fa-filter").remove();$dropdownTitle.html(`${title}`).removeAttr(`data-filter-key`);tableAPI.columns(columnIndex).search("").draw(true)});$(filterID).prepend($dropdownContainer.append($dropdownButton,$menuContainer.prepend($allEntry)));DataTableUtils.setCurrentFilter(tableAPI,filterKey)}static setCurrentFilter(tableAPI,filterKey){if(!tableAPI.state)return;if(!tableAPI.state.loaded())return;if(!tableAPI.state.loaded().filters)return;const filters=tableAPI.state.loaded().filters;if(!filters)return;const filter=filters[filterKey];if(!filter)return;const $entry=$(`#${filterKey}-filter-menu li[data-filter-key='${filter}']`).addClass("active");if(filter!="all")$(`#${filterKey}-filter-menu button`).prepend(``).find(`span`).html($entry.text());tableAPI.state.save()}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)}`}}const alertNotifications={};let alertNotificationUtilsId=0;class AlertNotification{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(){AlertNotificationUtils.hideAlert(self.id)});this.$element=$toast;return $toast}updateBody(body){if(this.$element==undefined)throw"[AlertNotification] :: The notification has not been rendered yet!";this.$element.find(".toast-body span").text(body)}destroy(){this.$element.toast("dispose");this.$element.empty()}}class AlertNotificationUtils{static initAlerts(){$(`.toast.alert-notification`).each(function(){const noScope=$(this).data("notificationNoScope");const pages=noScope==""||noScope==undefined?[]:noScope.split(";");if(pages.length>0&&pages.some(page=>location.href.contains(page))){$(this).remove()}$(this).toast("show")})}static hideAlert(notificationId){if(!notificationId){console.warn("[AlertNotificationUtils] :: The notification id cannot be null!");return}if(!(notificationId in alertNotifications)){console.warn("[AlertNotificationUtils] :: The notification hasn't been found!");return}alertNotifications[notificationId].destroy();delete alertNotifications[notificationId]}static updateNotification(notificationId,body){if(!(notificationId in alertNotifications)){throw"[AlertNotificationUtils] :: The notification was not found!"}alertNotifications[notificationId].updateBody(body)}static showAlert(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"[AlertNotificationUtils] :: An AlertNotification must have an in id!";if(option.id in alertNotifications)throw"[AlertNotificationUtils] :: An AlertNotification with the same id already exists!";if(option.title===undefined)throw"[AlertNotificationUtils]:: An AlertNotification must have a title!";if(option.body===undefined)throw"[AlertNotificationUtils]:: An AlertNotification must have a body!";const notification=new AlertNotification(option);$(`#main-container`).prepend(notification.render());alertNotifications[option.id]=notification;return notification}static bindClosingEvent(){$(".toast.alert-notification[data-notification-id]").on("hidden.bs.toast",function(){$.post(`${http_prefix}/lua/handler_alert_notification.lua`,{notification_id:$(this).data("notificationId"),action:`disposed`})})}} //# 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 cbb936f57a..31d8496857 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","plugin-script-datatable.js","main.js","notification-daemon.js","utils/modal-utils.js","utils/datatable-utils.js","utils/alert-notifications-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","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","email","https","[object Object]","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","aps","x","when","epoch","d","actual","str","len","substring","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","text","request_failed_message","show","alert","load_config_xhr","hide","off","$button","file","files","no_file","reader","FileReader","onload","json_conf","invalid_file","done","status","xhr","check_status_code","statusText","reset_csrf","csrf","reload","fail","readAsText","serializedArray","serialized","forEach","includes","formSelector","reset","uri","controller","AbortController","config","signal","timeout","setTimeout","then","ok","Error","catch","array","limit","otherStr","and","href","poolId","URL","searchParams","set","poolType","getPoolLink","pool","rsp","document","ready","initDataPatterns","filename","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","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","always","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","title","textAlign","width","hidden","actions","white-space","text-align","old_dt","datatable","perPage","noResultsMessage","ts_chart","no_results_found","post","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","INDEX_SEARCH_COLUMN","dataTable","ext","filterScripts","className","init","node","button_id","button_text","parsed","is_enabled","action","draw","popover","animation","self","registerServiceWorker","navigator","serviceWorker","register","NOTIFICATION_DEBUG","PushNotificationBuilder","icon","badge","body","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","Object","entries","reportValidity","fadeOut","fadeIn","compareFormSnaphsot","selector","$hidden","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","checkValidation","trim","isValid","messageToShow","$error","clearTimeout","valid","dataToSend","beforeSumbit","submitOptions","method","endpoint","stringify","dataType","contentType","textStatus","resetAfterSubmit","cleanForm","onSubmitSuccess","delegateSubmit","jqxhr","errorThrown","onSubmitError","resetButton","defaultValues","serializeFormArray","serializeArray","modalHandler","loadedData","sent","onModalReset","defaultData","mh","dataTableExt","sErrMode","formatSecondsToHHMMSS","DataTableUtils","dtButtons","dom","pagingType","lengthMenu","all","language","showing_x_to_y_rows","script_search","infoFiltered","paginate","previous","next","saveState","button","container","dataSrc","extension","hasFilters","stateSaveCallback","settings","sInstance","stateLoadCallback","stateSaveParams","activeFilter","filters","counter","filterTitle","tableAPI","menuFilterKey","$menuFilter","columnIndex","countEntries","filterID","createEntry","hasToCount","$entry","$counter","$dropdownTitle","prepend","$menuContainer","filterKey","dropdownId","$dropdownContainer","$dropdownButton","countable","column","regex","$allEntry","setCurrentFilter","loaded","save","padZeroes","padStart","mins","alertNotifications","alertNotificationUtilsId","AlertNotification","delay","$toast","$toastHeader","bg","$toastBody","$anchor","dismissable","isAboveAll","toast","AlertNotificationUtils","hideAlert","$element","empty","noScope","pages","page","notificationId","destroy","updateBody","option","styles","warning","level","notification","render","notification_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","plugin-script-datatable.js","main.js","notification-daemon.js","utils/modal-utils.js","utils/datatable-utils.js","utils/alert-notifications-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","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","[object Object]","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","aps","x","when","epoch","d","actual","str","len","substring","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","text","request_failed_message","show","alert","load_config_xhr","hide","off","$button","file","files","no_file","reader","FileReader","onload","json_conf","invalid_file","done","status","xhr","check_status_code","statusText","reset_csrf","csrf","reload","fail","readAsText","serializedArray","serialized","forEach","includes","formSelector","reset","uri","controller","AbortController","config","signal","timeout","setTimeout","then","ok","Error","catch","array","limit","otherStr","and","href","poolId","URL","searchParams","set","poolType","getPoolLink","pool","rsp","document","ready","initDataPatterns","filename","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","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","always","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","title","textAlign","width","hidden","actions","white-space","text-align","old_dt","datatable","perPage","noResultsMessage","ts_chart","no_results_found","post","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","INDEX_SEARCH_COLUMN","dataTable","ext","filterScripts","className","init","node","button_id","button_text","parsed","is_enabled","action","draw","popover","animation","self","registerServiceWorker","navigator","serviceWorker","register","NOTIFICATION_DEBUG","PushNotificationBuilder","icon","badge","body","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","Object","entries","reportValidity","fadeOut","fadeIn","compareFormSnaphsot","selector","$hidden","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","checkValidation","trim","isValid","messageToShow","$error","clearTimeout","valid","dataToSend","beforeSumbit","submitOptions","method","endpoint","stringify","dataType","contentType","textStatus","resetAfterSubmit","cleanForm","onSubmitSuccess","delegateSubmit","jqxhr","errorThrown","onSubmitError","resetButton","defaultValues","serializeFormArray","serializeArray","modalHandler","loadedData","sent","onModalReset","defaultData","mh","dataTableExt","sErrMode","formatSecondsToHHMMSS","DataTableUtils","dtButtons","dom","pagingType","lengthMenu","all","language","showing_x_to_y_rows","script_search","infoFiltered","paginate","previous","next","saveState","button","container","dataSrc","extension","hasFilters","stateSaveCallback","settings","sInstance","stateLoadCallback","stateSaveParams","activeFilter","filters","counter","filterTitle","tableAPI","menuFilterKey","$menuFilter","columnIndex","countEntries","filterID","createEntry","hasToCount","$entry","$counter","$dropdownTitle","prepend","$menuContainer","filterKey","dropdownId","$dropdownContainer","$dropdownButton","countable","column","regex","$allEntry","setCurrentFilter","loaded","save","padZeroes","padStart","mins","alertNotifications","alertNotificationUtilsId","AlertNotification","delay","$toast","$toastHeader","bg","$toastBody","$anchor","dismissable","isAboveAll","toast","AlertNotificationUtils","hideAlert","$element","empty","noScope","pages","page","notificationId","destroy","updateBody","option","styles","warning","level","notification","render","notification_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 b0dc23253b..84bd1ee4da 100644 --- a/httpdocs/js/ntop_utils.js +++ b/httpdocs/js/ntop_utils.js @@ -40,7 +40,8 @@ const REGEXES = { 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|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[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|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[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|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[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|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[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|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[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|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[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|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$", domainName: "^(([a-zA-Z]|[a-zA-Z][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9])$", macAddress: "^([0-9A-Fa-f]{2}:){5}([0-9A-Fa-f]{2})$", - username: "^(?=[a-zA-Z0-9._]{3,20}$)(?!.*[_.]{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?://.+$", }; diff --git a/scripts/plugins/discord_alert_endpoint/templates/discord_endpoint.template b/scripts/plugins/discord_alert_endpoint/templates/discord_endpoint.template index 1f24e4d978..28add1b70e 100644 --- a/scripts/plugins/discord_alert_endpoint/templates/discord_endpoint.template +++ b/scripts/plugins/discord_alert_endpoint/templates/discord_endpoint.template @@ -1,12 +1,12 @@
- - {* i18n('discord_alert_endpoint.webhook_description') *}
+{* i18n('discord_alert_endpoint.webhook_description') *}