From befbcdf38f438858bbbdb1d8e930b83bae6699e4 Mon Sep 17 00:00:00 2001 From: Brett Hazen <2651260+bhazen@users.noreply.github.com> Date: Mon, 2 Jun 2025 12:56:59 -0500 Subject: [PATCH] Added diagnostic entry for basic server info --- .../BuilderExtensions/Core.cs | 2 ++ .../BasicServerInfoDiagnosticEntry.cs | 20 +++++++++++++++++ .../BasicServerInfoDiagnosticEntryTests.cs | 22 +++++++++++++++++++ 3 files changed, 44 insertions(+) create mode 100644 identity-server/src/IdentityServer/Licensing/V2/Diagnostics/DiagnosticEntries/BasicServerInfoDiagnosticEntry.cs create mode 100644 identity-server/test/IdentityServer.UnitTests/Licensing/v2/DiagnosticEntries/BasicServerInfoDiagnosticEntryTests.cs diff --git a/identity-server/src/IdentityServer/Configuration/DependencyInjection/BuilderExtensions/Core.cs b/identity-server/src/IdentityServer/Configuration/DependencyInjection/BuilderExtensions/Core.cs index f509e6959..fc553ea94 100644 --- a/identity-server/src/IdentityServer/Configuration/DependencyInjection/BuilderExtensions/Core.cs +++ b/identity-server/src/IdentityServer/Configuration/DependencyInjection/BuilderExtensions/Core.cs @@ -4,6 +4,7 @@ #nullable enable +using System.Net; using Duende.IdentityServer; using Duende.IdentityServer.Configuration; using Duende.IdentityServer.Configuration.DependencyInjection; @@ -220,6 +221,7 @@ public static IIdentityServerBuilder AddCoreServices(this IIdentityServerBuilder builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddSingleton(); + builder.Services.AddSingleton(new BasicServerInfoDiagnosticEntry(Dns.GetHostName)); builder.Services.AddSingleton(); builder.Services.AddHostedService(); diff --git a/identity-server/src/IdentityServer/Licensing/V2/Diagnostics/DiagnosticEntries/BasicServerInfoDiagnosticEntry.cs b/identity-server/src/IdentityServer/Licensing/V2/Diagnostics/DiagnosticEntries/BasicServerInfoDiagnosticEntry.cs new file mode 100644 index 000000000..ba5ad55a2 --- /dev/null +++ b/identity-server/src/IdentityServer/Licensing/V2/Diagnostics/DiagnosticEntries/BasicServerInfoDiagnosticEntry.cs @@ -0,0 +1,20 @@ +// Copyright (c) Duende Software. All rights reserved. +// See LICENSE in the project root for license information. + +using System.Text.Json; + +namespace Duende.IdentityServer.Licensing.V2.Diagnostics.DiagnosticEntries; + +internal class BasicServerInfoDiagnosticEntry(Func hostNameResolver) : IDiagnosticEntry +{ + public Task WriteAsync(Utf8JsonWriter writer) + { + writer.WriteStartObject("BasicServerInfo"); + + writer.WriteString("HostName", hostNameResolver()); + + writer.WriteEndObject(); + + return Task.CompletedTask; + } +} diff --git a/identity-server/test/IdentityServer.UnitTests/Licensing/v2/DiagnosticEntries/BasicServerInfoDiagnosticEntryTests.cs b/identity-server/test/IdentityServer.UnitTests/Licensing/v2/DiagnosticEntries/BasicServerInfoDiagnosticEntryTests.cs new file mode 100644 index 000000000..46eebaeda --- /dev/null +++ b/identity-server/test/IdentityServer.UnitTests/Licensing/v2/DiagnosticEntries/BasicServerInfoDiagnosticEntryTests.cs @@ -0,0 +1,22 @@ +// Copyright (c) Duende Software. All rights reserved. +// See LICENSE in the project root for license information. + +using Duende.IdentityServer.Licensing.V2.Diagnostics.DiagnosticEntries; +using IdentityServer.UnitTests.Licensing.V2.DiagnosticEntries; + +namespace IdentityServer.UnitTests.Licensing.v2.DiagnosticEntries; + +public class BasicServerInfoDiagnosticEntryTests +{ + [Fact] + public async Task WriteAsync_ShouldWriteBasicServerInfo() + { + const string expectedHostName = "testing.local"; + var subject = new BasicServerInfoDiagnosticEntry(() => expectedHostName); + + var result = await DiagnosticEntryTestHelper.WriteEntryToJson(subject); + + var basicServerInfo = result.RootElement.GetProperty("BasicServerInfo"); + basicServerInfo.GetProperty("HostName").GetString().ShouldBe(expectedHostName); + } +}