diff --git a/extensions/Servers/Proxmox/views/firewall.blade.php b/extensions/Servers/Proxmox/views/firewall.blade.php
index 77e454a63..595b6e116 100644
--- a/extensions/Servers/Proxmox/views/firewall.blade.php
+++ b/extensions/Servers/Proxmox/views/firewall.blade.php
@@ -347,6 +347,28 @@
padding-top: 0.5rem;
border-top: 1px solid rgba(var(--color-neutral), 0.3);
}
+
+ /* Network Analysis Link */
+ .firewall-network-link {
+ display: inline-flex;
+ align-items: center;
+ gap: 0.375rem;
+ padding: 0.25rem 0.5rem;
+ font-size: 0.7rem;
+ font-weight: 500;
+ border-radius: 0.375rem;
+ background-color: rgba(var(--color-primary), 0.1);
+ color: rgba(var(--color-primary), 1);
+ border: 1px solid rgba(var(--color-primary), 0.3);
+ text-decoration: none;
+ transition: all 0.15s ease;
+ white-space: nowrap;
+ }
+ .firewall-network-link:hover {
+ background-color: rgba(var(--color-primary), 0.2);
+ border-color: rgba(var(--color-primary), 0.5);
+ color: rgba(var(--color-primary), 1);
+ }
@@ -1067,6 +1089,9 @@
+
+ Actions
+ |
@@ -1438,6 +1463,18 @@
+
+
+
+
+
+
+ Network
+
+
+ |
diff --git a/extensions/Servers/Proxmox/views/statistics.blade.php b/extensions/Servers/Proxmox/views/statistics.blade.php
index 88fb7c06a..923c6ec35 100644
--- a/extensions/Servers/Proxmox/views/statistics.blade.php
+++ b/extensions/Servers/Proxmox/views/statistics.blade.php
@@ -3834,10 +3834,32 @@
};
window.tableFilterSort = function(tableId) {
+ // Check for network_search query parameter for the connections table
+ var initialSearch = '';
+ if (tableId === 'network-connections-table') {
+ var urlParams = new URLSearchParams(window.location.search);
+ var networkSearch = urlParams.get('network_search');
+ if (networkSearch) {
+ initialSearch = networkSearch;
+ // Clean up URL by removing the query parameter (optional)
+ // window.history.replaceState({}, document.title, window.location.pathname + window.location.hash);
+ }
+ }
+
var component = {
- search: '',
+ search: initialSearch,
sortColumn: null,
sortDirection: 'asc',
+ init: function() {
+ // If there's an initial search, trigger the filter after a short delay
+ // to ensure the table is fully rendered
+ if (this.search) {
+ var self = this;
+ setTimeout(function() {
+ self.filterTable();
+ }, 100);
+ }
+ },
filterTable: function() {
var table = document.getElementById(tableId);
if (!table) {
@@ -4809,6 +4831,27 @@
console.log('Network Analysis loaded successfully on page load, refresh flag cleared for server ' + serverId);
}
}, 2000);
+
+ // Handle cross-reference from firewall logs
+ // If URL has network_search parameter and #network-analysis-card hash, scroll to it
+ var urlParams = new URLSearchParams(window.location.search);
+ var networkSearch = urlParams.get('network_search');
+ if (networkSearch && window.location.hash === '#network-analysis-card') {
+ // Wait a bit for page to fully render, then scroll to Network Analysis
+ setTimeout(function() {
+ var networkCard = document.getElementById('network-analysis-card');
+ if (networkCard) {
+ networkCard.scrollIntoView({ behavior: 'smooth', block: 'start' });
+
+ // Flash highlight the card briefly to draw attention
+ networkCard.style.transition = 'box-shadow 0.3s ease';
+ networkCard.style.boxShadow = '0 0 0 3px rgba(var(--color-primary), 0.5)';
+ setTimeout(function() {
+ networkCard.style.boxShadow = '';
+ }, 2000);
+ }
+ }, 500);
+ }
});
// Listen for 502 retry events from Core Router API