enforce fixed refresh interval if cache is enabled

This commit is contained in:
Eduardo Silva
2026-01-07 12:11:35 -03:00
parent 65a2e8de79
commit cf61c3113f
5 changed files with 19 additions and 8 deletions

View File

@@ -34,7 +34,7 @@
<div class="form-group col-md-6"> <div class="form-group col-md-6">
<label for="{{ form.peer_list_refresh_interval.id_for_label }}">{{ form.peer_list_refresh_interval.label }}</label> <label for="{{ form.peer_list_refresh_interval.id_for_label }}">{{ form.peer_list_refresh_interval.label }}</label>
<input type="number" class="form-control" id="{{ form.peer_list_refresh_interval.id_for_label }}" name="{{ form.peer_list_refresh_interval.html_name }}" placeholder="Persistent Keepalive" value="{{ form.peer_list_refresh_interval.value|default_if_none:'' }}" required> <input type="number" class="form-control" id="{{ form.peer_list_refresh_interval.id_for_label }}" name="{{ form.peer_list_refresh_interval.html_name }}" placeholder="Persistent Keepalive" value="{% if force_cache_refresh > 0 %}{{ force_cache_refresh }}{% else %}{{ form.peer_list_refresh_interval.value|default_if_none:'' }}{% endif %}" required {% if force_cache_refresh > 0 %}readonly{% endif %}>
</div> </div>

View File

@@ -171,7 +171,7 @@
<p id="invitePassword"></p> <p id="invitePassword"></p>
<p> <p>
{% trans 'Expires on' %}: <span id="inviteExpiration"></span> {% trans 'Expires on' %}: <span id="inviteExpiration"></span>
<i class="fas fa-sync-alt" id="refreshInviteButton" style="cursor: pointer;" title="Refresh Invite"></i> <i class="fas fa-sync-alt" id="refreshInviteButton" style="cursor: pointer;" title="{% trans 'Refresh Invite' %}"></i>
</p> </p>
<div class="form-group"> <div class="form-group">
<label for="inviteContactInput">{% trans 'Enter Email or WhatsApp Number' %}:</label> <label for="inviteContactInput">{% trans 'Enter Email or WhatsApp Number' %}:</label>
@@ -522,7 +522,7 @@
}; };
fetchWireguardStatus(); fetchWireguardStatus();
setInterval(fetchWireguardStatus, {{ current_instance.peer_list_refresh_interval }} * 1000); setInterval(fetchWireguardStatus, {{ refresh_interval }} * 1000);
}); });
const updateUI = (data) => { const updateUI = (data) => {

View File

@@ -1,5 +1,6 @@
import subprocess import subprocess
from django.conf import settings
from django.contrib import messages from django.contrib import messages
from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import login_required
from django.db import models from django.db import models
@@ -159,7 +160,11 @@ def view_wireguard_manage_instance(request):
form = WireGuardInstanceForm(initial=generate_instance_defaults()) form = WireGuardInstanceForm(initial=generate_instance_defaults())
else: else:
form = WireGuardInstanceForm(instance=current_instance) form = WireGuardInstanceForm(instance=current_instance)
context = {'page_title': page_title, 'wireguard_instances': wireguard_instances, 'current_instance': current_instance, 'form': form} 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) return render(request, 'wireguard/wireguard_manage_server.html', context)

View File

@@ -1,6 +1,7 @@
import ipaddress import ipaddress
import subprocess import subprocess
from django.conf import settings
from django.contrib import messages from django.contrib import messages
from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import login_required
from django.http import Http404 from django.http import Http404
@@ -50,6 +51,7 @@ def view_wireguard_peer_list(request):
page_title = _('WireGuard Peer List') page_title = _('WireGuard Peer List')
user_acl = get_object_or_404(UserAcl, user=request.user) user_acl = get_object_or_404(UserAcl, user=request.user)
wireguard_instances = user_allowed_instances(user_acl) wireguard_instances = user_allowed_instances(user_acl)
refresh_interval = 120
if wireguard_instances: if wireguard_instances:
if request.GET.get('uuid'): if request.GET.get('uuid'):
@@ -66,10 +68,14 @@ def view_wireguard_peer_list(request):
add_peer_enabled = False add_peer_enabled = False
if current_instance: if current_instance:
refresh_interval = current_instance.peer_list_refresh_interval
if user_has_access_to_instance(user_acl, current_instance): if user_has_access_to_instance(user_acl, current_instance):
add_peer_enabled = True 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) return render(request, 'wireguard/wireguard_peer_list.html', context)

View File

@@ -157,7 +157,7 @@ STATICFILES_DIRS = [
WIREGUARD_STATUS_CACHE_ENABLED = True WIREGUARD_STATUS_CACHE_ENABLED = True
WIREGUARD_STATUS_CACHE_MAX_AGE = 600 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 WIREGUARD_STATUS_CACHE_WEB_LOAD_PREVIOUS_COUNT = 10
# Default primary key field type # Default primary key field type