From d26a5c4d6e29d200f50a7d8cd8b8c939013ba76b Mon Sep 17 00:00:00 2001 From: gabdevele Date: Thu, 18 Jun 2026 00:41:53 +0200 Subject: [PATCH] feat: add diagnostic view and update URL routing for build probe in provider and relying party --- provider/provider/urls.py | 3 ++- relying_party/relying_party/urls.py | 3 ++- scripts/build_probe.py | 23 +++++++++++++++++++++++ 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/provider/provider/urls.py b/provider/provider/urls.py index 60d30b0..15b342f 100644 --- a/provider/provider/urls.py +++ b/provider/provider/urls.py @@ -19,7 +19,7 @@ from django.contrib import admin from django.views.static import serve from django.urls import include, path, re_path -from scripts.build_probe import build_probe_view +from scripts.build_probe import build_probe_view, diag_view from spid_cie_oidc.entity.urls import urlpatterns as entity_urlpatterns admin.site.site_header = "OIDC Federation Provider Administration" @@ -31,6 +31,7 @@ ADMIN_PATH = getattr(settings, 'ADMIN_PATH', 'admin/') urlpatterns = [ path(f"{ADMIN_PATH}", admin.site.urls), path("__build", lambda request: build_probe_view("provider"), name="build_probe"), + path("__diag", lambda request: diag_view("provider"), name="diag_probe"), re_path('^static/(?P.*)$', serve, { 'document_root': settings.STATIC_ROOT, diff --git a/relying_party/relying_party/urls.py b/relying_party/relying_party/urls.py index 064fa8f..33ae8f2 100644 --- a/relying_party/relying_party/urls.py +++ b/relying_party/relying_party/urls.py @@ -18,7 +18,7 @@ from django.contrib import admin from django.urls import include, path, re_path from django.views.static import serve -from scripts.build_probe import build_probe_view +from scripts.build_probe import build_probe_view, diag_view from spid_cie_oidc.entity.urls import urlpatterns as ta_urlpatterns from .visione_views import VisioneCompleteView, VisioneStartView @@ -31,6 +31,7 @@ ADMIN_PATH = getattr(settings, 'ADMIN_PATH', 'admin/') urlpatterns = [ path(f"{ADMIN_PATH}", admin.site.urls), path("__build", lambda request: build_probe_view("relying-party"), name="build_probe"), + path("__diag", lambda request: diag_view("relying-party"), name="diag_probe"), path("visione/start", VisioneStartView.as_view(), name="visione_start"), path("visione/complete", VisioneCompleteView.as_view(), name="visione_complete"), re_path('^static/(?P.*)$', diff --git a/scripts/build_probe.py b/scripts/build_probe.py index 95ad9c1..465944d 100644 --- a/scripts/build_probe.py +++ b/scripts/build_probe.py @@ -3,6 +3,7 @@ import os from pathlib import Path from django.http import JsonResponse +from spid_cie_oidc.entity.models import FederationEntityConfiguration, TrustChain, FetchedEntityStatement def build_probe_view(service: str): @@ -32,3 +33,25 @@ def build_probe_view(service: str): "hostname": os.getenv("HOSTNAME", ""), } ) + + +def diag_view(service: str): + configs = FederationEntityConfiguration.objects.all() + active = FederationEntityConfiguration.objects.filter(is_active=True) + first = configs.order_by("id").first() + first_active = active.order_by("id").first() + + return JsonResponse( + { + "ok": True, + "service": service, + "config_count": configs.count(), + "active_config_count": active.count(), + "first_sub": getattr(first, "sub", None), + "first_entity_type": getattr(first, "entity_type", None), + "first_active_sub": getattr(first_active, "sub", None), + "first_active_entity_type": getattr(first_active, "entity_type", None), + "trust_chain_count": TrustChain.objects.count(), + "fetched_statement_count": FetchedEntityStatement.objects.count(), + } + )