Skip to content

Commit

Permalink
Moved snmp similarity page to vue and changed some files wrongly named
Browse files Browse the repository at this point in the history
  • Loading branch information
MatteoBiscosi committed May 14, 2024
1 parent d9fad2c commit af3fd48
Show file tree
Hide file tree
Showing 8 changed files with 338 additions and 143 deletions.
6 changes: 4 additions & 2 deletions http_src/vue/ntop_vue.js
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,8 @@ import { default as PageSNMPUsage } from "./page-snmp-usage.vue"
import { default as PageHostsList } from "./page-hosts-list.vue"
import { default as PageFlowsList } from "./page-flows-list.vue"
import { default as PageSNMPInterfaces } from "./page-snmp-interfaces.vue"
import { default as PageTopology } from "./page-topology.vue"
import { default as PageSNMPTopology } from "./page-snmp-topology.vue"
import { default as PageSNMPSimilarity } from "./page-snmp-similarity.vue"
import { default as PageSNMPDevices } from "./page-snmp-devices.vue"
import { default as PageBlacklists } from "./page-blacklists.vue"
import { default as PageHistoricalFlow } from "./page-historical-flow-details.vue"
Expand Down Expand Up @@ -134,7 +135,8 @@ let ntopVue = {
PageVulnerabilityScanReport: PageVulnerabilityScanReport,
PageSNMPUsage: PageSNMPUsage,
PageSNMPInterfaces: PageSNMPInterfaces,
PageTopology: PageTopology,
PageSNMPTopology: PageSNMPTopology,
PageSNMPSimilarity: PageSNMPSimilarity,
PageFlowsList: PageFlowsList,
PageSNMPDevices: PageSNMPDevices,

Expand Down
124 changes: 124 additions & 0 deletions http_src/vue/page-snmp-similarity.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
<!--
(C) 2013-23 - ntop.org
-->

<template>
<div class="m-2 mb-3">
<TableWithConfig ref="table_similarity" :table_id="table_id" :csrf="context.csrf"
:f_map_columns="map_table_def_columns" :get_extra_params_obj="get_extra_params_obj" :f_sort_rows="columns_sorting"
@rows_loaded="on_table_loaded">
</TableWithConfig>
<div class="card-footer">
<NoteList :note_list="note_list"> </NoteList>
</div>
</div>
</template>

<script setup>
/* Imports */
import { ref } from "vue";
import { default as NoteList } from "./note-list.vue";
import { default as TableWithConfig } from "./table-with-config.vue";
import { ntopng_url_manager } from "../services/context/ntopng_globals_services.js";
import { default as sortingFunctions } from "../utilities/sorting-utils.js";
import formatterUtils from "../utilities/formatter-utils";
/* ******************************************************************** */
/* Consts */
const _i18n = (t) => i18n(t);
const note_list = [
_i18n("snmp.snmp_similarity_note"),
_i18n("snmp.snmp_similarity_time_note")
]
const timestamp = Math.floor(Date.now() / 1000);
const device_href = `${http_prefix}/lua/pro/enterprise/snmp_device_details.lua?host=%host`;
const interface_href = `${http_prefix}/lua/pro/enterprise/snmp_interface_details.lua?host=%host&snmp_port_idx=%ifid&page=historical&epoch_begin=${timestamp - 86400}&epoch_end=${timestamp}`;
const table_id = ref("snmp_similarity");
const table_similarity = ref();
const total_rows = ref(0);
const props = defineProps({
context: Object,
});
const context = ref({
csrf: props.context.csrf,
ifid: props.context.ifid,
});
const get_extra_params_obj = () => {
let extra_params = ntopng_url_manager.get_url_object();
return extra_params;
};
/* This function simply return the data of the exact column and row requested */
function column_data(col, row) {
let data = row[col.data.data_field];
if (col.data.data_field == "port_id") {
return Number(data.split(">")[1].split("<")[0]);
}
return data;
}
/* Function used to sort the columns of the table */
function columns_sorting(col, r0, r1) {
if (col != null) {
let r0_col = column_data(col, r0);
let r1_col = column_data(col, r1);
if (col.id == "average_traffic_a" || col.id == "average_traffic_b" || col.id == "similarity") {
return sortingFunctions.sortByNumber(r0_col, r1_col, col.sort);
} else if (col.id == "device_a" || col.id == "device_b") {
return sortingFunctions.sortByName(r0_col.name, r1_col.name, col.sort);
} else if (col.id == "port_a" || col.id == "port_b") {
return sortingFunctions.sortByName(r0_col.name, r1_col.name, col.sort);
}
}
}
/* Get the number of rows of the table */
function on_table_loaded() {
total_rows.value = table_similarity.value.get_rows_num();
}
/* ******************************************************************** */
/* Function to map columns data */
const map_table_def_columns = (columns) => {
let map_columns = {
"device_a": (data, row) => {
return `<a href='${device_href.replace('%host', data.ip)}'>${data.name}</a>`;
},
"device_b": (data, row) => {
return `<a href='${device_href.replace('%host', data.ip)}'>${data.name}</a>`;
},
"port_a": (data, row) => {
return `<a href='${interface_href.replace('%host', row.device_a.ip).replace('%ifid', data.port)}'>${data.name}</a>`;
},
"port_b": (data, row) => {
return `<a href='${interface_href.replace('%host', row.device_b.ip).replace('%ifid', data.port)}'>${data.name}</a>`;
},
"average_traffic_a": (data, row) => {
return formatterUtils.getFormatter("bps_no_scale")(data);
},
"average_traffic_b": (data, row) => {
return formatterUtils.getFormatter("bps_no_scale")(data);
},
};
columns.forEach((c) => {
c.render_func = map_columns[c.data_field];
});
return columns;
};
</script>
Original file line number Diff line number Diff line change
Expand Up @@ -3,29 +3,17 @@
-->

<template>
<div class="row">
<div class="col-md-12 col-lg-12">
<div class="card card-shadow">
<div class="card-body">
<TableWithConfig
ref="table_topology"
:table_id="table_id"
:csrf="context.csrf"
:f_map_columns="map_table_def_columns"
:get_extra_params_obj="get_extra_params_obj"
:f_sort_rows="columns_sorting"
@rows_loaded="on_table_loaded"
>
</TableWithConfig>
</div>
<div class="card-footer">
<NoteList :note_list="note_list"> </NoteList>
</div>
</div>
<div class="m-2 mb-3">
<TableWithConfig ref="table_topology" :table_id="table_id" :csrf="context.csrf"
:f_map_columns="map_table_def_columns" :get_extra_params_obj="get_extra_params_obj" :f_sort_rows="columns_sorting"
@rows_loaded="on_table_loaded">
</TableWithConfig>
<div class="card-footer">
<NoteList :note_list="note_list"> </NoteList>
</div>
</div>
</template>

<script setup>
/* Imports */
import { ref } from "vue";
Expand All @@ -47,7 +35,7 @@ const note_list = [
_i18n("snmp.snmp_lldp_cdp_descr")
]
const table_id = ref("topology");
const table_id = ref("snmp_topology");
const table_topology = ref();
const total_rows = ref(0);
Expand Down Expand Up @@ -83,12 +71,12 @@ function columns_sorting(col, r0, r1) {
let r0_col = column_data(col, r0);
let r1_col = column_data(col, r1);
if (col.id == "port_id") {
return sortingFunctions.sortByNumber(r0_col, r1_col, col.sort);
} else if (col.id == "port_thpt_value") {
return sortingFunctions.sortByNumber(r0_col, r1_col, col.sort);
} else {
} else {
return sortingFunctions.sortByName(r0_col, r1_col, col.sort);
}
}
Expand Down Expand Up @@ -119,9 +107,8 @@ const map_table_def_columns = (columns) => {
columns.forEach((c) => {
c.render_func = map_columns[c.data_field];
});
return columns;
};
</script>

</script>
70 changes: 70 additions & 0 deletions httpdocs/tables_config/snmp_similarity.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
{
"id": "snmp_topology",
"data_url": "lua/pro/rest/v2/get/snmp/device/similarity.lua",
"use_current_page": false,
"enable_search": false,
"paging": false,
"display_empty_rows": true,
"default_sort": {
"column_id": "similarity",
"sort": 0
},
"columns": [
{
"title_i18n": "snmp.snmp_device",
"data_field": "device_a",
"sortable": true,
"class": [
"text-left"
]
},
{
"title_i18n": "snmp.ifindex",
"data_field": "port_a",
"sortable": true,
"class": [
"text-left"
]
},
{
"title_i18n": "snmp.snmp_avg_traffic",
"data_field": "average_traffic_a",
"sortable": true,
"class": [
"text-center"
]
},
{
"title_i18n": "snmp.snmp_device",
"data_field": "device_b",
"sortable": true,
"class": [
"text-left"
]
},
{
"title_i18n": "snmp.ifindex",
"data_field": "port_b",
"sortable": true,
"class": [
"text-left"
]
},
{
"title_i18n": "snmp.snmp_avg_traffic",
"data_field": "average_traffic_b",
"sortable": true,
"class": [
"text-center"
]
},
{
"title_i18n": "snmp.similarity",
"data_field": "similarity",
"sortable": true,
"class": [
"text-center"
]
}
]
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"id": "topology",
"id": "snmp_topology",
"data_url": "lua/pro/enterprise/snmp_device_stats.lua",
"use_current_page": false,
"enable_search": false,
Expand Down
6 changes: 6 additions & 0 deletions scripts/lua/modules/check_redis_prefs.lua
Original file line number Diff line number Diff line change
Expand Up @@ -253,3 +253,9 @@ function interfaceHasClickHouseSupport()
require "check_redis_prefs"
return (hasClickHouseSupport() and ntop.getPrefs()["is_dump_flows_to_clickhouse_enabled"])
end

-- ##############################################

function isAllowedSystemInterface()
return ntop.isAllowedInterface(tonumber(getSystemInterfaceId()))
end

0 comments on commit af3fd48

Please sign in to comment.