From cf61c3113f838cc0d4811763bde82c14997ae7bb Mon Sep 17 00:00:00 2001 From: Eduardo Silva Date: Wed, 7 Jan 2026 12:11:35 -0300 Subject: [PATCH] enforce fixed refresh interval if cache is enabled --- templates/wireguard/wireguard_manage_server.html | 2 +- templates/wireguard/wireguard_peer_list.html | 4 ++-- wireguard/views.py | 9 +++++++-- wireguard_peer/views.py | 10 ++++++++-- wireguard_webadmin/settings.py | 2 +- 5 files changed, 19 insertions(+), 8 deletions(-) diff --git a/templates/wireguard/wireguard_manage_server.html b/templates/wireguard/wireguard_manage_server.html index 8286d5f..4448450 100644 --- a/templates/wireguard/wireguard_manage_server.html +++ b/templates/wireguard/wireguard_manage_server.html @@ -34,7 +34,7 @@
- + 0 %}readonly{% endif %}>
diff --git a/templates/wireguard/wireguard_peer_list.html b/templates/wireguard/wireguard_peer_list.html index f137fe8..3aa1449 100644 --- a/templates/wireguard/wireguard_peer_list.html +++ b/templates/wireguard/wireguard_peer_list.html @@ -171,7 +171,7 @@

{% trans 'Expires on' %}: - +

@@ -522,7 +522,7 @@ }; fetchWireguardStatus(); - setInterval(fetchWireguardStatus, {{ current_instance.peer_list_refresh_interval }} * 1000); + setInterval(fetchWireguardStatus, {{ refresh_interval }} * 1000); }); const updateUI = (data) => { diff --git a/wireguard/views.py b/wireguard/views.py index fa5d6a1..896d592 100644 --- a/wireguard/views.py +++ b/wireguard/views.py @@ -1,5 +1,6 @@ import subprocess +from django.conf import settings from django.contrib import messages from django.contrib.auth.decorators import login_required from django.db import models @@ -158,8 +159,12 @@ def view_wireguard_manage_instance(request): if not current_instance: form = WireGuardInstanceForm(initial=generate_instance_defaults()) else: - form = WireGuardInstanceForm(instance=current_instance) - context = {'page_title': page_title, 'wireguard_instances': wireguard_instances, 'current_instance': current_instance, 'form': form} + form = WireGuardInstanceForm(instance=current_instance) + if settings.WIREGUARD_STATUS_CACHE_ENABLED: + force_cache_refresh = settings.WIREGUARD_STATUS_CACHE_REFRESH_INTERVAL + else: + force_cache_refresh = 0 + context = {'page_title': page_title, 'wireguard_instances': wireguard_instances, 'current_instance': current_instance, 'form': form, 'force_cache_refresh': force_cache_refresh} return render(request, 'wireguard/wireguard_manage_server.html', context) diff --git a/wireguard_peer/views.py b/wireguard_peer/views.py index ee8d43f..355d2e6 100644 --- a/wireguard_peer/views.py +++ b/wireguard_peer/views.py @@ -1,6 +1,7 @@ import ipaddress import subprocess +from django.conf import settings from django.contrib import messages from django.contrib.auth.decorators import login_required from django.http import Http404 @@ -50,6 +51,7 @@ def view_wireguard_peer_list(request): page_title = _('WireGuard Peer List') user_acl = get_object_or_404(UserAcl, user=request.user) wireguard_instances = user_allowed_instances(user_acl) + refresh_interval = 120 if wireguard_instances: if request.GET.get('uuid'): @@ -66,10 +68,14 @@ def view_wireguard_peer_list(request): add_peer_enabled = False if current_instance: + refresh_interval = current_instance.peer_list_refresh_interval if user_has_access_to_instance(user_acl, current_instance): add_peer_enabled = True - - context = {'page_title': page_title, 'wireguard_instances': wireguard_instances, 'current_instance': current_instance, 'peer_list': peer_list, 'add_peer_enabled': add_peer_enabled, 'user_acl': user_acl} + + if settings.WIREGUARD_STATUS_CACHE_ENABLED: + refresh_interval = settings.WIREGUARD_STATUS_CACHE_REFRESH_INTERVAL + + context = {'page_title': page_title, 'wireguard_instances': wireguard_instances, 'current_instance': current_instance, 'peer_list': peer_list, 'add_peer_enabled': add_peer_enabled, 'user_acl': user_acl, 'refresh_interval': refresh_interval} return render(request, 'wireguard/wireguard_peer_list.html', context) diff --git a/wireguard_webadmin/settings.py b/wireguard_webadmin/settings.py index c80b83f..eea5563 100644 --- a/wireguard_webadmin/settings.py +++ b/wireguard_webadmin/settings.py @@ -157,7 +157,7 @@ STATICFILES_DIRS = [ WIREGUARD_STATUS_CACHE_ENABLED = True WIREGUARD_STATUS_CACHE_MAX_AGE = 600 -WIREGUARD_STATUS_CACHE_REFRESH = 60 +WIREGUARD_STATUS_CACHE_REFRESH_INTERVAL = 60 WIREGUARD_STATUS_CACHE_WEB_LOAD_PREVIOUS_COUNT = 10 # Default primary key field type