예제 #1
0
        private static void ConfigureIpFiltering(IServiceCollection serviceCollection,
                                                 IpFilteringOptions options)
        {
            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            serviceCollection.AddSingleton <IpFilteringOptions>(options);

            if (options.IpRulesSource == IpRulesSource.Configuration)
            {
                serviceCollection.AddSingleton <IIpRulesProvider>(new DefaultIpRulesProvider(
                                                                      options.Whitelist,
                                                                      options.Blacklist));
            }

            if (options.IpRulesCacheSource == IpRulesCacheSource.Configuration)
            {
                serviceCollection.AddSingleton <IIpAddressResultCache>(new DefaultIpResultCache(options.IpRulesCacheSource == IpRulesCacheSource.Configuration
                                                                                               ? options.DefaultIpRuleCacheDuration
                                                                                               : null));
            }

            serviceCollection.AddSingleton <IIpAddressValidator, AddressValidator>();
        }
예제 #2
0
        public static void AddIpFiltering(this IServiceCollection collection,
                                          IpFilteringOptions options)
        {
            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            ConfigureIpFiltering(collection, options);
        }