mirror of
https://github.com/eduardogsilva/wireguard_webadmin.git
synced 2026-01-11 10:26:17 +00:00
add support for previous cache entry retrieval in WireGuard status function
This commit is contained in:
21
api/views.py
21
api/views.py
@@ -273,9 +273,17 @@ def func_apply_enhanced_filter(data: dict, user_acl: UserAcl):
|
|||||||
return data
|
return data
|
||||||
|
|
||||||
|
|
||||||
def func_get_wireguard_status():
|
def func_get_wireguard_status(cache_previous: int = 0):
|
||||||
if settings.WIREGUARD_STATUS_CACHE_ENABLED:
|
if settings.WIREGUARD_STATUS_CACHE_ENABLED:
|
||||||
cache_entry = WireguardStatusCache.objects.filter(cache_type='master').order_by('-created').first()
|
cache_objects = WireguardStatusCache.objects.filter(cache_type='master').order_by('-created')
|
||||||
|
if cache_previous > 0:
|
||||||
|
try:
|
||||||
|
cache_entry = cache_objects[cache_previous]
|
||||||
|
except IndexError:
|
||||||
|
cache_entry = None
|
||||||
|
else:
|
||||||
|
cache_entry = cache_objects.first()
|
||||||
|
|
||||||
if cache_entry:
|
if cache_entry:
|
||||||
data = cache_entry.data
|
data = cache_entry.data
|
||||||
data['cache_information'] = {
|
data['cache_information'] = {
|
||||||
@@ -285,6 +293,7 @@ def func_get_wireguard_status():
|
|||||||
'cache_hit': True,
|
'cache_hit': True,
|
||||||
'cache_enabled': True,
|
'cache_enabled': True,
|
||||||
'cache_uuid': str(cache_entry.uuid),
|
'cache_uuid': str(cache_entry.uuid),
|
||||||
|
'cache_previous_requested': cache_previous,
|
||||||
}
|
}
|
||||||
data['status'] = 'success'
|
data['status'] = 'success'
|
||||||
data['message'] = 'WireGuard status retrieved from cache'
|
data['message'] = 'WireGuard status retrieved from cache'
|
||||||
@@ -295,6 +304,7 @@ def func_get_wireguard_status():
|
|||||||
'cache_information': {
|
'cache_information': {
|
||||||
'cache_hit': False,
|
'cache_hit': False,
|
||||||
'cache_enabled': True,
|
'cache_enabled': True,
|
||||||
|
'cache_previous_requested': cache_previous,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else:
|
else:
|
||||||
@@ -328,6 +338,11 @@ def wireguard_status(request):
|
|||||||
enhanced_filter = False
|
enhanced_filter = False
|
||||||
filter_peer_list = []
|
filter_peer_list = []
|
||||||
|
|
||||||
|
try:
|
||||||
|
cache_previous = int(request.GET.get('cache_previous', 0))
|
||||||
|
except:
|
||||||
|
cache_previous = 0
|
||||||
|
|
||||||
if request.user.is_authenticated:
|
if request.user.is_authenticated:
|
||||||
user_acl = get_object_or_404(UserAcl, user=request.user)
|
user_acl = get_object_or_404(UserAcl, user=request.user)
|
||||||
if user_acl.enable_enhanced_filter and user_acl.peer_groups.count() > 0:
|
if user_acl.enable_enhanced_filter and user_acl.peer_groups.count() > 0:
|
||||||
@@ -347,7 +362,7 @@ def wireguard_status(request):
|
|||||||
else:
|
else:
|
||||||
return HttpResponseForbidden()
|
return HttpResponseForbidden()
|
||||||
|
|
||||||
data = func_get_wireguard_status()
|
data = func_get_wireguard_status(cache_previous)
|
||||||
return JsonResponse(data)
|
return JsonResponse(data)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user