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; }
public IpPolicyStore( ICacheManager cacheManager, IOptions <IpRateLimitOptions> options = null, IOptions <IpRateLimitPolicies> policies = null) { _cacheManager = cacheManager; _options = options?.Value; _policies = policies?.Value; }
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); } }
public void Set(string id, IpRateLimitPolicies policy) { _memoryCache.Set(id, policy); }
public void Set(string id, IpRateLimitPolicies policy) { _memoryCache.Set <IpRateLimitPolicies>(id, policy, TimeSpan.MaxValue); }