Example #1
0
        static IpRateLimit()
        {
            if (Setting.Configuration?.IpRateLimiting == null)
            {
                return;
            }

            Logger = Factory.Logger.Value;

            Options = Setting.Configuration.IpRateLimiting;

            Policies = Setting.Configuration.IpRateLimitPolicies;

            IpParser = new ReversProxyIpParser(Options.RealIpHeader);

            MemoryCache = Factory.MemoryCache.Value;

            var rateLimitCounterStore = Factory.RateLimitCounterStore.Value;

            var ipPolicyStore = new MemoryCacheIpPolicyStore(MemoryCache, Options, Policies);

            Processor = new IpRateLimitProcessor(Options, rateLimitCounterStore, ipPolicyStore, IpParser);

            Configurationed = true;
        }
Example #2
0
 public IpPolicyStore(
     ICacheManager cacheManager,
     IOptions <IpRateLimitOptions> options   = null,
     IOptions <IpRateLimitPolicies> policies = null)
 {
     _cacheManager = cacheManager;
     _options      = options?.Value;
     _policies     = policies?.Value;
 }
Example #3
0
        public MemoryCacheIpPolicyStore(IMemoryCache memoryCache,
                                        IpRateLimitOptions options   = null,
                                        IpRateLimitPolicies policies = null)
        {
            _memoryCache = memoryCache;

            //save ip rules defined in appsettings in cache on startup
            if (options != null && policies != null && policies.IpRules != null)
            {
                Set($"{options.IpPolicyPrefix}", policies);
            }
        }
Example #4
0
 public void Set(string id, IpRateLimitPolicies policy)
 {
     _memoryCache.Set(id, policy);
 }
Example #5
0
 public void Set(string id, IpRateLimitPolicies policy)
 {
     _memoryCache.Set <IpRateLimitPolicies>(id, policy, TimeSpan.MaxValue);
 }