diff --git a/Host/Web.Secrets.config.template b/Host/Web.Secrets.config.template index f71a7aaac..6f385fb10 100644 --- a/Host/Web.Secrets.config.template +++ b/Host/Web.Secrets.config.template @@ -13,4 +13,5 @@ + \ No newline at end of file diff --git a/Service/BeWoServiceEnums.cs b/Service/BeWoServiceEnums.cs index 7c59f8f81..f39e51168 100644 --- a/Service/BeWoServiceEnums.cs +++ b/Service/BeWoServiceEnums.cs @@ -30,6 +30,7 @@ namespace BeWo.Service OpenrouteServiceApiKey, GoogleDistanceMatrixApiKey, GkvSecretKey, + AppStatusApiKey } [DefaultValue(None)] diff --git a/Service/ServiceContracts/Enhanced/IStatusService.cs b/Service/ServiceContracts/Enhanced/IStatusService.cs index 343f981a6..317d6ad1a 100644 --- a/Service/ServiceContracts/Enhanced/IStatusService.cs +++ b/Service/ServiceContracts/Enhanced/IStatusService.cs @@ -15,6 +15,7 @@ namespace BeWo.Service.ServiceContracts.Enhanced { [OperationContract] [WebGet(UriTemplate = "/Status", ResponseFormat = WebMessageFormat.Json)] + [RequireApiAuthorization(ApiKeyName = WebSecretConfigSetting.AppStatusApiKey)] ServerStatusDC GetStatus(); } } diff --git a/Service/ServiceImplementations/Enhanced/StatusServiceImp.cs b/Service/ServiceImplementations/Enhanced/StatusServiceImp.cs index 73e4e7081..7fae8d88e 100644 --- a/Service/ServiceImplementations/Enhanced/StatusServiceImp.cs +++ b/Service/ServiceImplementations/Enhanced/StatusServiceImp.cs @@ -8,6 +8,7 @@ using System; using System.Collections.Generic; using System.IO; using System.Linq; +using System.Net; using System.Reflection; using System.ServiceModel; using System.ServiceModel.Web; @@ -38,6 +39,13 @@ namespace BeWo.Service.ServiceImplementations.Enhanced result.Services.Add(CheckService("AIModule", CheckAiModule())); result.Services.Add(CheckService("Web.config", CheckWebConfig())); + var allHealthy = result.DatabaseOk && result.Services.All(x => x.IsOk); + if (!allHealthy) + { + WebOperationContext.Current.OutgoingResponse.StatusCode = + HttpStatusCode.InternalServerError; + } + return result; } @@ -98,7 +106,7 @@ namespace BeWo.Service.ServiceImplementations.Enhanced { // #1 var url = MergedConfig.GetSetting(WebConfigSetting.AiPromptsUrl); - if (!string.IsNullOrWhiteSpace(url)) + if (string.IsNullOrWhiteSpace(url)) return "AiPromptsUrl wurde nicht korrekt konfiguriert"; return null;