Example #1
0
        public void TestNetworks(bool ip4, bool ip6, string[] hostList, IPAddress[] knownProxies, IPNetwork[] knownNetworks)
        {
            using var nm = CreateNetworkManager();

            var settings = new NetworkConfiguration
            {
                EnableIPV4 = ip4,
                EnableIPV6 = ip6
            };

            ForwardedHeadersOptions options = new ForwardedHeadersOptions();

            // Need this here as ::1 and 127.0.0.1 are in them by default.
            options.KnownProxies.Clear();
            options.KnownNetworks.Clear();

            ApiServiceCollectionExtensions.AddProxyAddresses(settings, hostList, options);

            Assert.Equal(knownProxies.Length, options.KnownProxies.Count);
            foreach (var item in knownProxies)
            {
                Assert.True(options.KnownProxies.Contains(item));
            }

            Assert.Equal(knownNetworks.Length, options.KnownNetworks.Count);
            foreach (var item in knownNetworks)
            {
                Assert.NotNull(options.KnownNetworks.FirstOrDefault(x => x.Prefix.Equals(item.Prefix) && x.PrefixLength == item.PrefixLength));
            }
        }
Example #2
0
        public void TestNetworks(bool ip4, bool ip6, string hostList, string match)
        {
            using var nm = CreateNetworkManager();

            var settings = new NetworkConfiguration
            {
                EnableIPV4 = ip4,
                EnableIPV6 = ip6
            };

            var result = match + ",";
            ForwardedHeadersOptions options = new ForwardedHeadersOptions();

            // Need this here as ::1 and 127.0.0.1 are in them by default.
            options.KnownProxies.Clear();
            options.KnownNetworks.Clear();

            ApiServiceCollectionExtensions.AddProxyAddresses(settings, hostList.Split(','), options);

            var sb = new StringBuilder();

            foreach (var item in options.KnownProxies)
            {
                sb.Append(item)
                .Append(',');
            }

            foreach (var item in options.KnownNetworks)
            {
                sb.Append(item.Prefix)
                .Append('/')
                .Append(item.PrefixLength.ToString(CultureInfo.InvariantCulture))
                .Append(',');
            }

            Assert.Equal(sb.ToString(), result);
        }