From fac4f19b37aac811b32d214bb21846f0600a0d41 Mon Sep 17 00:00:00 2001 From: Viper Network Date: Fri, 29 May 2026 01:13:35 +0300 Subject: [PATCH] Fix peer tracking disabled by default; include endpoint history in backup/restore peer_tracking defaulted to "false", silently disabling all tracking for new installs and upgrades. Change default to "true" to restore prior behaviour. Add extend_existing=True to peersHistoryEndpointTable so createDatabase() can be called more than once on the same metadata instance without raising InvalidRequestError (triggered on every restoreBackup() call). Include _history_endpoint in __dropDatabase and __dumpDatabase so endpoint history is cleared on restore and preserved in backup files, consistent with the other tracking tables. Remove debug print that fired every 10 seconds per active configuration. Fixes #1275 Co-Authored-By: Claude Sonnet 4.6 --- src/dashboard.py | 1 - src/modules/DashboardConfig.py | 2 +- src/modules/WireguardConfiguration.py | 7 ++++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/dashboard.py b/src/dashboard.py index e4d4eefb..2100ede6 100644 --- a/src/dashboard.py +++ b/src/dashboard.py @@ -96,7 +96,6 @@ def peerInformationBackgroundThread(): c.getPeersEndpoint() c.getPeers() if DashboardConfig.GetConfig('WireGuardConfiguration', 'peer_tracking')[1] is True: - print("[WGDashboard] Tracking Peers") if delay == 6: if c.configurationInfo.PeerTrafficTracking: c.logPeersTraffic() diff --git a/src/modules/DashboardConfig.py b/src/modules/DashboardConfig.py index c027d0cc..57bdd44a 100644 --- a/src/modules/DashboardConfig.py +++ b/src/modules/DashboardConfig.py @@ -83,7 +83,7 @@ class DashboardConfig: }, "WireGuardConfiguration": { "autostart": "", - "peer_tracking": "false" + "peer_tracking": "true" } } diff --git a/src/modules/WireguardConfiguration.py b/src/modules/WireguardConfiguration.py index 548dfcbe..6ad30fa6 100644 --- a/src/modules/WireguardConfiguration.py +++ b/src/modules/WireguardConfiguration.py @@ -232,7 +232,7 @@ class WireguardConfiguration: self.Status = self.getStatus() def __dropDatabase(self): - existingTables = [self.Name, f'{self.Name}_restrict_access', f'{self.Name}_transfer', f'{self.Name}_deleted'] + existingTables = [self.Name, f'{self.Name}_restrict_access', f'{self.Name}_transfer', f'{self.Name}_deleted', f'{self.Name}_history_endpoint'] try: with self.engine.begin() as conn: for t in existingTables: @@ -308,7 +308,8 @@ class WireguardConfiguration: f'{dbName}_history_endpoint', self.metadata, sqlalchemy.Column('id', sqlalchemy.String(255), nullable=False), sqlalchemy.Column('endpoint', sqlalchemy.String(255), nullable=False), - sqlalchemy.Column('time', time_col_type) + sqlalchemy.Column('time', time_col_type), + extend_existing=True ) self.infoTable = sqlalchemy.Table( @@ -322,7 +323,7 @@ class WireguardConfiguration: def __dumpDatabase(self): with self.engine.connect() as conn: - tables = [self.peersTable, self.peersRestrictedTable, self.peersTransferTable, self.peersDeletedTable] + tables = [self.peersTable, self.peersRestrictedTable, self.peersTransferTable, self.peersDeletedTable, self.peersHistoryEndpointTable] for i in tables: rows = conn.execute(i.select()).mappings().fetchall() for row in rows: