From aca274a49b7e0d5cbb0359470501159e19091537 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 3 Sep 2019 14:44:22 -0400 Subject: [PATCH] add new properties to LogContext --- src/Api/Startup.cs | 2 +- .../Utilities/ServiceCollectionExtensions.cs | 31 ++++++++++++++----- src/Events/Startup.cs | 2 +- src/Identity/Startup.cs | 2 +- 4 files changed, 27 insertions(+), 10 deletions(-) diff --git a/src/Api/Startup.cs b/src/Api/Startup.cs index 11ac8f0c36..fcac01aec2 100644 --- a/src/Api/Startup.cs +++ b/src/Api/Startup.cs @@ -146,7 +146,7 @@ namespace Bit.Api app.UseSerilog(env, appLifetime, globalSettings); // Default Middleware - app.UseDefaultMiddleware(env); + app.UseDefaultMiddleware(env, globalSettings); if(!globalSettings.SelfHosted) { diff --git a/src/Core/Utilities/ServiceCollectionExtensions.cs b/src/Core/Utilities/ServiceCollectionExtensions.cs index 8fc90ff6af..e6f1a3f92a 100644 --- a/src/Core/Utilities/ServiceCollectionExtensions.cs +++ b/src/Core/Utilities/ServiceCollectionExtensions.cs @@ -30,6 +30,8 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.HttpOverrides; using System.Linq; using System.Security.Cryptography.X509Certificates; +using Bit.Core.Utilities; +using Serilog.Context; namespace Bit.Core.Utilities { @@ -407,18 +409,33 @@ namespace Bit.Core.Utilities return globalSettings; } - public static void UseDefaultMiddleware(this IApplicationBuilder app, IHostingEnvironment env) + public static void UseDefaultMiddleware(this IApplicationBuilder app, + IHostingEnvironment env, GlobalSettings globalSettings) { + string GetHeaderValue(HttpContext httpContext, string header) + { + if(httpContext.Request.Headers.ContainsKey(header)) + { + return httpContext.Request.Headers[header]; + } + return null; + } + // Add version information to response headers app.Use(async (httpContext, next) => { - httpContext.Response.OnStarting((state) => + using(LogContext.PushProperty("IPAddress", httpContext.GetIpAddress(globalSettings))) + using(LogContext.PushProperty("UserAgent", GetHeaderValue(httpContext, "user-agent"))) + using(LogContext.PushProperty("DeviceType", GetHeaderValue(httpContext, "device-type"))) + using(LogContext.PushProperty("Origin", GetHeaderValue(httpContext, "origin"))) { - httpContext.Response.Headers.Append("Server-Version", CoreHelpers.GetVersion()); - return Task.FromResult(0); - }, null); - - await next.Invoke(); + httpContext.Response.OnStarting((state) => + { + httpContext.Response.Headers.Append("Server-Version", CoreHelpers.GetVersion()); + return Task.FromResult(0); + }, null); + await next.Invoke(); + } }); } diff --git a/src/Events/Startup.cs b/src/Events/Startup.cs index 23b92e136b..1eb309b022 100644 --- a/src/Events/Startup.cs +++ b/src/Events/Startup.cs @@ -91,7 +91,7 @@ namespace Bit.Events } // Default Middleware - app.UseDefaultMiddleware(env); + app.UseDefaultMiddleware(env, globalSettings); // Add Cors app.UseCors(policy => policy.SetIsOriginAllowed(h => true) diff --git a/src/Identity/Startup.cs b/src/Identity/Startup.cs index a5a477914c..a7449e1792 100644 --- a/src/Identity/Startup.cs +++ b/src/Identity/Startup.cs @@ -80,7 +80,7 @@ namespace Bit.Identity app.UseSerilog(env, appLifetime, globalSettings); // Default Middleware - app.UseDefaultMiddleware(env); + app.UseDefaultMiddleware(env, globalSettings); if(!globalSettings.SelfHosted) {