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">
<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>

View File

@@ -171,7 +171,7 @@
<p id="invitePassword"></p>
<p>
{% 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>
<div class="form-group">
<label for="inviteContactInput">{% trans 'Enter Email or WhatsApp Number' %}:</label>
@@ -522,7 +522,7 @@
};
fetchWireguardStatus();
setInterval(fetchWireguardStatus, {{ current_instance.peer_list_refresh_interval }} * 1000);
setInterval(fetchWireguardStatus, {{ refresh_interval }} * 1000);
});
const updateUI = (data) => {

View File

@@ -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)

View File

@@ -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)

View File

@@ -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