Monitoring api is now protected by key.

This commit is contained in:
Eduardo Silva 2024-04-15 13:59:13 -03:00
parent 847775f87a
commit ddb2304b64
7 changed files with 66 additions and 17 deletions

View file

@ -4,11 +4,13 @@ from monitoring.models import RouterDownTime
from router_manager.models import Router, RouterStatus, RouterGroup
from django.http import JsonResponse
from django.utils import timezone
from django.conf import settings
from routerfleet_tools.models import WebadminSettings
def view_router_config_timestamp(request):
if not request.user.is_authenticated and request.GET.get('key') != settings.MONITORING_KEY:
return JsonResponse({'error': 'Not authenticated'}, status=403)
webadmin_settings, _ = WebadminSettings.objects.get_or_create(name='webadmin_settings')
if not webadmin_settings.router_config_last_updated:
webadmin_settings.router_config_last_updated = timezone.now()
@ -18,6 +20,8 @@ def view_router_config_timestamp(request):
def view_router_last_status_change(request):
if not request.user.is_authenticated and request.GET.get('key') != settings.MONITORING_KEY:
return JsonResponse({'error': 'Not authenticated'}, status=403)
last_router_status_change = RouterStatus.objects.filter(last_status_change__isnull=False).order_by('-last_status_change').first()
if last_router_status_change:
last_status_change_timestamp = last_router_status_change.last_status_change.isoformat()
@ -27,6 +31,8 @@ def view_router_last_status_change(request):
def view_export_router_list(request):
if not request.user.is_authenticated and request.GET.get('key') != settings.MONITORING_KEY:
return JsonResponse({'error': 'Not authenticated'}, status=403)
webadmin_settings, _ = WebadminSettings.objects.get_or_create(name='webadmin_settings')
# Not updating the monitoring last run here, as this view is also used on the dashboard
if not webadmin_settings.router_config_last_updated:
@ -55,6 +61,8 @@ def view_export_router_list(request):
def view_update_router_status(request):
if not request.user.is_authenticated and request.GET.get('key') != settings.MONITORING_KEY:
return JsonResponse({'error': 'Not authenticated'}, status=403)
router = Router.objects.get(uuid=request.GET.get('uuid'))
new_status = request.GET.get('status')
if router.routerstatus.status_online: