< Summary

Information
Class: ProjectTemplate.Web.Options.ApplicationForwardedHeadersOptions
Assembly: ProjectTemplate.Web
File(s): /home/runner/work/NetCoreApplicationTemplate/NetCoreApplicationTemplate/src/ProjectTemplate.Web/Options/ApplicationForwardedHeadersOptions.cs
Line coverage
100%
Covered lines: 12
Uncovered lines: 0
Coverable lines: 12
Total lines: 61
Line coverage: 100%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
get_Enabled()100%11100%
get_Headers()100%11100%
.ctor()100%11100%
get_ForwardLimit()100%11100%
get_RequireHeaderSymmetry()100%11100%
get_ClearKnownNetworksAndProxies()100%11100%
get_KnownProxies()100%11100%
get_KnownNetworks()100%11100%
get_AllowedHosts()100%11100%

File(s)

/home/runner/work/NetCoreApplicationTemplate/NetCoreApplicationTemplate/src/ProjectTemplate.Web/Options/ApplicationForwardedHeadersOptions.cs

#LineLine coverage
 1namespace ProjectTemplate.Web.Options;
 2
 3/// <summary>
 4/// Configuration settings for forwarded headers support.
 5/// </summary>
 6public sealed class ApplicationForwardedHeadersOptions
 7{
 8    /// <summary>
 9    /// Configuration section name for forwarded headers settings.
 10    /// </summary>
 11    public const string SectionName = "ProjectTemplate:ForwardedHeaders";
 12
 13    /// <summary>
 14    /// Enables or disables forwarded headers middleware.
 15    /// </summary>
 111216    public bool Enabled { get; set; } = true;
 17
 18    /// <summary>
 19    /// Forwarded header values to process.
 20    /// Valid values include XForwardedFor, XForwardedProto, XForwardedHost, and XForwardedPrefix.
 21    /// </summary>
 154022    public string[] Headers { get; set; } =
 41823    [
 41824        "XForwardedFor",
 41825        "XForwardedProto"
 41826    ];
 27
 28    /// <summary>
 29    /// Limits the number of forwarded header entries processed.
 30    /// Keep this low unless the proxy chain is well understood.
 31    /// </summary>
 125632    public int? ForwardLimit { get; set; } = 1;
 33
 34    /// <summary>
 35    /// Requires the number of values to match across forwarded headers.
 36    /// </summary>
 55637    public bool RequireHeaderSymmetry { get; set; }
 38
 39    /// <summary>
 40    /// Clears default known proxies/networks before applying configured values.
 41    /// For production, set this to true and explicitly configure trusted proxies/networks.
 42    /// </summary>
 55643    public bool ClearKnownNetworksAndProxies { get; set; }
 44
 45    /// <summary>
 46    /// Exact proxy IP addresses trusted to send forwarded headers.
 47    /// </summary>
 167448    public string[] KnownProxies { get; set; } = [];
 49
 50    /// <summary>
 51    /// Trusted proxy networks in CIDR notation.
 52    /// Example: 10.0.0.0/24
 53    /// </summary>
 167454    public string[] KnownNetworks { get; set; } = [];
 55
 56    /// <summary>
 57    /// Allowed host values from X-Forwarded-Host.
 58    /// Only needed when XForwardedHost is enabled.
 59    /// </summary>
 139860    public string[] AllowedHosts { get; set; } = [];
 61}