diff --git a/build/Version.props b/build/Version.props
index 6c380db619..5e2e897532 100644
--- a/build/Version.props
+++ b/build/Version.props
@@ -3,7 +3,7 @@
- 6.15.100
+ 6.15.101
5.6.0
10.13.0
0.6.0
diff --git a/src/Tgstation.Server.Host/Core/Application.cs b/src/Tgstation.Server.Host/Core/Application.cs
index 0eebc4ebe2..11f9e8763a 100644
--- a/src/Tgstation.Server.Host/Core/Application.cs
+++ b/src/Tgstation.Server.Host/Core/Application.cs
@@ -577,6 +577,7 @@ namespace Tgstation.Server.Host.Core
/// The containing the to use.
/// The containing the to use.
/// The for the .
+ #pragma warning disable
public void Configure(
IApplicationBuilder applicationBuilder,
IServerControl serverControl,
@@ -618,12 +619,34 @@ namespace Tgstation.Server.Host.Core
// Wrap exceptions in a 500 (ErrorMessage) response
applicationBuilder.UseServerErrorHandling();
+ applicationBuilder.Use((context, next) =>
+ {
+ logger.LogDebug("Crossedfall Pre middleware:");
+ foreach (var header in context.Request.Headers)
+ {
+ logger.LogDebug("{header}: {value}", header.Key, header.Value);
+ }
+
+ return next();
+ });
+
// header forwarding important for OIDC
applicationBuilder.UseMiddleware(Options.Create(new ForwardedHeadersOptions
{
ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto | ForwardedHeaders.XForwardedHost,
}));
+ applicationBuilder.Use((context, next) =>
+ {
+ logger.LogDebug("Crossedfall Post middleware:");
+ foreach (var header in context.Request.Headers)
+ {
+ logger.LogDebug("{header}: {value}", header.Key, header.Value);
+ }
+
+ return next();
+ });
+
/*applicationBuilder.UseForwardedHeaders(new ForwardedHeadersOptions
{
ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto | ForwardedHeaders.XForwardedHost,
diff --git a/src/Tgstation.Server.Host/Core/ForwardedHeadersMiddleware.cs b/src/Tgstation.Server.Host/Core/ForwardedHeadersMiddleware.cs
index e151890c3c..a128a24e8f 100644
--- a/src/Tgstation.Server.Host/Core/ForwardedHeadersMiddleware.cs
+++ b/src/Tgstation.Server.Host/Core/ForwardedHeadersMiddleware.cs
@@ -122,7 +122,9 @@ public class ForwardedHeadersMiddleware
/// The for the current request.
public Task Invoke(HttpContext context)
{
+ _logger.LogDebug("Pre apply");
ApplyForwarders(context);
+ _logger.LogDebug("Post apply");
return _next(context);
}
@@ -150,6 +152,7 @@ public class ForwardedHeadersMiddleware
{
checkProto = true;
forwardedProto = requestHeaders.GetCommaSeparatedValues(_options.ForwardedProtoHeaderName);
+ _logger.LogDebug("Checking proto: {forwarded}", forwardedProto);
if (_options.RequireHeaderSymmetry && checkFor && forwardedFor!.Length != forwardedProto.Length)
{
_logger.LogWarning(1, "Parameter count mismatch between X-Forwarded-For and X-Forwarded-Proto.");
@@ -197,6 +200,7 @@ public class ForwardedHeadersMiddleware
var sets = new SetOfForwarders[entryCount];
for (int i = 0; i < sets.Length; i++)
{
+ _logger.LogDebug("Set iter: {i}", i);
// They get processed in reverse order, right to left.
var set = new SetOfForwarders();
if (checkFor && i < forwardedFor!.Length)
@@ -206,6 +210,7 @@ public class ForwardedHeadersMiddleware
if (checkProto && i < forwardedProto!.Length)
{
set.Scheme = forwardedProto[forwardedProto.Length - i - 1];
+ _logger.LogDebug("Set scheme: {scheme}", set.Scheme);
}
if (checkHost && i < forwardedHost!.Length)
{
@@ -232,6 +237,7 @@ public class ForwardedHeadersMiddleware
for (; entriesConsumed < sets.Length; entriesConsumed++)
{
+ _logger.LogDebug("Consume iter: {i}", entriesConsumed);
var set = sets[entriesConsumed];
if (checkFor)
{
@@ -271,8 +277,10 @@ public class ForwardedHeadersMiddleware
if (checkProto)
{
+ _logger.LogDebug("Consume check proto: {setScheme}", set.Scheme);
if (!string.IsNullOrEmpty(set.Scheme) && set.Scheme.AsSpan().IndexOfAnyExcept(SchemeChars) < 0)
{
+ _logger.LogDebug("Consume apply proto");
applyChanges = true;
currentValues.Scheme = set.Scheme;
}
@@ -315,6 +323,7 @@ public class ForwardedHeadersMiddleware
if (applyChanges)
{
+ _logger.LogDebug("Apply changes: {scheme}", currentValues.Scheme);
if (checkFor && currentValues.RemoteIpAndPort != null)
{
if (connection.RemoteIpAddress != null)
@@ -353,6 +362,8 @@ public class ForwardedHeadersMiddleware
requestHeaders.Remove(_options.ForwardedProtoHeaderName);
}
request.Scheme = currentValues.Scheme;
+
+ _logger.LogDebug("Do apply proto: {scheme}, {forwarded}", request.Scheme, forwardedProto);
}
if (checkHost && currentValues.Host != null)