From a967916cd37755a0e1bb4710e76ad2af37710a86 Mon Sep 17 00:00:00 2001 From: Tommaso Bailetti Date: Tue, 23 Dec 2025 09:26:56 +0100 Subject: [PATCH 01/20] feat: added flows table --- .../standalone/monitoring/FlowTableRow.vue | 129 ++++++ .../standalone/monitoring/FlowsTable.vue | 421 ++++++++++++++++++ src/i18n/en.json | 23 +- .../monitoring/RealTimeMonitoringView.vue | 6 + 4 files changed, 577 insertions(+), 2 deletions(-) create mode 100644 src/components/standalone/monitoring/FlowTableRow.vue create mode 100644 src/components/standalone/monitoring/FlowsTable.vue diff --git a/src/components/standalone/monitoring/FlowTableRow.vue b/src/components/standalone/monitoring/FlowTableRow.vue new file mode 100644 index 000000000..fa7fc916b --- /dev/null +++ b/src/components/standalone/monitoring/FlowTableRow.vue @@ -0,0 +1,129 @@ + + + diff --git a/src/components/standalone/monitoring/FlowsTable.vue b/src/components/standalone/monitoring/FlowsTable.vue new file mode 100644 index 000000000..e114a0057 --- /dev/null +++ b/src/components/standalone/monitoring/FlowsTable.vue @@ -0,0 +1,421 @@ + + + diff --git a/src/i18n/en.json b/src/i18n/en.json index c3cf617a6..23aec5671 100644 --- a/src/i18n/en.json +++ b/src/i18n/en.json @@ -429,7 +429,8 @@ "duplicate_port": "Port has already been used", "cannot_regenerate_cert": "Cannot regenerate certificates", "cannot_renew_server_cert": "Cannot renew server certificate", - "cannot_regenerate_all_certs": "Cannot regenerate all certificates" + "cannot_regenerate_all_certs": "Cannot regenerate all certificates", + "cannot_retrieve_flows": "Cannot retrieve flows, please try again later" }, "ne_text_input": { "show_password": "Show password", @@ -2355,7 +2356,25 @@ "public_ip_address": "Public IP address", "error_fetching_data": "Error fetching data", "remote_hosts": "Remote hosts", - "no_data_available": "No data available" + "no_data_available": "No data available", + "flows": "Flows" + }, + "flows": { + "subtitle": "View real-time network connections, each row represents an active flow with live transfer rates and total traffic.", + "application": "Application", + "protocol": "Protocol", + "source": "Source", + "destination": "Destination", + "origin": "Origin", + "duration": "Duration", + "download": "Download", + "upload": "Upload", + "total_download": "Tot. download", + "total_upload": "Tot. upload", + "local": "Local", + "remote": "Remote", + "last_seen_at": "Last seen at", + "refresh_interval": "Refresh interval: { value }" }, "ping_latency_monitor": { "title": "Ping latency monitor", diff --git a/src/views/standalone/monitoring/RealTimeMonitoringView.vue b/src/views/standalone/monitoring/RealTimeMonitoringView.vue index 1ce12b590..b385d3399 100644 --- a/src/views/standalone/monitoring/RealTimeMonitoringView.vue +++ b/src/views/standalone/monitoring/RealTimeMonitoringView.vue @@ -21,6 +21,7 @@ import { isStandaloneMode } from '@/lib/config' import { onMounted, ref } from 'vue' import { ubusCall } from '@/lib/standalone/ubus' import InstantTrafficMonitor from '@/components/standalone/monitoring/InstantTrafficMonitor.vue' +import FlowsTable from '@/components/standalone/monitoring/FlowsTable.vue' const { t } = useI18n() @@ -44,6 +45,10 @@ const { tabs, selectedTab } = useTabs([ { name: 'instant-traffic', label: t('standalone.real_time_monitor.instant_traffic') + }, + { + name: 'flows', + label: t('standalone.real_time_monitor.flows') } ]) @@ -167,5 +172,6 @@ function openGrafana() { + From f24521afc5c7339c645689a61b2992fc4402477c Mon Sep 17 00:00:00 2001 From: Tommaso Bailetti Date: Thu, 15 Jan 2026 14:51:42 +0100 Subject: [PATCH 02/20] wip --- src/components/standalone/NetifydIcon.vue | 26 +++ .../standalone/monitoring/FlowTableRow.vue | 129 -------------- .../standalone/monitoring/FlowsTable.vue | 61 ++++--- .../standalone/monitoring/flows/FlowBadge.vue | 18 ++ .../monitoring/flows/FlowTableRow.vue | 161 ++++++++++++++++++ src/i18n/en.json | 11 +- src/stores/standalone/netifyd.ts | 8 + 7 files changed, 260 insertions(+), 154 deletions(-) create mode 100644 src/components/standalone/NetifydIcon.vue delete mode 100644 src/components/standalone/monitoring/FlowTableRow.vue create mode 100644 src/components/standalone/monitoring/flows/FlowBadge.vue create mode 100644 src/components/standalone/monitoring/flows/FlowTableRow.vue create mode 100644 src/stores/standalone/netifyd.ts diff --git a/src/components/standalone/NetifydIcon.vue b/src/components/standalone/NetifydIcon.vue new file mode 100644 index 000000000..c1b1f6dde --- /dev/null +++ b/src/components/standalone/NetifydIcon.vue @@ -0,0 +1,26 @@ + + + diff --git a/src/components/standalone/monitoring/FlowTableRow.vue b/src/components/standalone/monitoring/FlowTableRow.vue deleted file mode 100644 index fa7fc916b..000000000 --- a/src/components/standalone/monitoring/FlowTableRow.vue +++ /dev/null @@ -1,129 +0,0 @@ - - - diff --git a/src/components/standalone/monitoring/FlowsTable.vue b/src/components/standalone/monitoring/FlowsTable.vue index e114a0057..17f77c84b 100644 --- a/src/components/standalone/monitoring/FlowsTable.vue +++ b/src/components/standalone/monitoring/FlowsTable.vue @@ -1,6 +1,6 @@ + + diff --git a/src/components/standalone/monitoring/flows/FlowTableRow.vue b/src/components/standalone/monitoring/flows/FlowTableRow.vue new file mode 100644 index 000000000..00e665844 --- /dev/null +++ b/src/components/standalone/monitoring/flows/FlowTableRow.vue @@ -0,0 +1,161 @@ + + + diff --git a/src/i18n/en.json b/src/i18n/en.json index 23aec5671..f15eaa3b7 100644 --- a/src/i18n/en.json +++ b/src/i18n/en.json @@ -70,7 +70,8 @@ "automated_tooltip": "This item is managed by the system and cannot be modified.", "remove": "Remove", "connected": "Connected", - "not_connected": "Not connected" + "not_connected": "Not connected", + "port": "Port" }, "error": { "generic_error": "Something went wrong", @@ -2372,9 +2373,15 @@ "total_download": "Tot. download", "total_upload": "Tot. upload", "local": "Local", + "local_description": "Connection originated from Source IP address", "remote": "Remote", + "remote_description": "Connection originated from Destination IP address", "last_seen_at": "Last seen at", - "refresh_interval": "Refresh interval: { value }" + "refresh_interval": "Refresh interval: { value }", + "tags": "Tags", + "internal": "Internal", + "internal_description": "Connection is between local networks", + "more_info": "More info" }, "ping_latency_monitor": { "title": "Ping latency monitor", diff --git a/src/stores/standalone/netifyd.ts b/src/stores/standalone/netifyd.ts new file mode 100644 index 000000000..4972cb745 --- /dev/null +++ b/src/stores/standalone/netifyd.ts @@ -0,0 +1,8 @@ +import { defineStore } from 'pinia' +import { data } from '@/catalog.json' + +export const useNetifydStore = defineStore('netifyd', () => { + return { + data + } +}) From 804d18a83ae2ee94d1dfb2ca5f000efd58593814 Mon Sep 17 00:00:00 2001 From: Tommaso Bailetti Date: Wed, 21 Jan 2026 12:28:25 +0100 Subject: [PATCH 03/20] removed netifyicon added flowdetail modal --- src/components/standalone/NetifydIcon.vue | 26 -- .../standalone/monitoring/FlowsTable.vue | 199 +++++++------ .../monitoring/flows/FlowDetail.vue | 265 ++++++++++++++++++ .../monitoring/flows/FlowTableRow.vue | 87 +++--- src/i18n/en.json | 31 +- src/stores/standalone/netifyd.ts | 8 - 6 files changed, 453 insertions(+), 163 deletions(-) delete mode 100644 src/components/standalone/NetifydIcon.vue create mode 100644 src/components/standalone/monitoring/flows/FlowDetail.vue delete mode 100644 src/stores/standalone/netifyd.ts diff --git a/src/components/standalone/NetifydIcon.vue b/src/components/standalone/NetifydIcon.vue deleted file mode 100644 index c1b1f6dde..000000000 --- a/src/components/standalone/NetifydIcon.vue +++ /dev/null @@ -1,26 +0,0 @@ - - - diff --git a/src/components/standalone/monitoring/FlowsTable.vue b/src/components/standalone/monitoring/FlowsTable.vue index 17f77c84b..b181d1ad8 100644 --- a/src/components/standalone/monitoring/FlowsTable.vue +++ b/src/components/standalone/monitoring/FlowsTable.vue @@ -1,6 +1,6 @@ diff --git a/src/components/standalone/monitoring/flows/FlowDetail.vue b/src/components/standalone/monitoring/flows/FlowDetail.vue new file mode 100644 index 000000000..7c277845e --- /dev/null +++ b/src/components/standalone/monitoring/flows/FlowDetail.vue @@ -0,0 +1,265 @@ + + + diff --git a/src/components/standalone/monitoring/flows/FlowTableRow.vue b/src/components/standalone/monitoring/flows/FlowTableRow.vue index 00e665844..0d3421925 100644 --- a/src/components/standalone/monitoring/flows/FlowTableRow.vue +++ b/src/components/standalone/monitoring/flows/FlowTableRow.vue @@ -1,12 +1,6 @@