public BaseControllerServices(ILogger <BaseController> logger, IAuthTokenService <long> authService, IMapper mapper, IEventTracker tracker, RateLimitConfig rateConfig, IDbServicesFactory factory) { this.logger = logger; this.authService = authService; this.mapper = mapper; this.tracker = tracker; this.rateConfig = rateConfig; this.dbFactory = factory; }
public void Init(Gateway gateway, Assembly assembly) { _config = ConfigHelper.GetConfig(); log = new LoggerConfiguration() //Error .WriteTo.Conditional(a => a.Level == LogEventLevel.Error, a => a.Async(a => a.File(new CompactJsonFormatter(), "./logs/error_ratelimit_ip_.clef", rollingInterval: RollingInterval.Day, restrictedToMinimumLevel: Serilog.Events.LogEventLevel.Information), bufferSize: 100)) //Other .WriteTo.Conditional(a => (a.Level <= LogEventLevel.Warning), a => a.Async(a => a.File(new CompactJsonFormatter(), "./logs/log_ratelimit_ip_.clef", rollingInterval: RollingInterval.Day, restrictedToMinimumLevel: Serilog.Events.LogEventLevel.Information), bufferSize: 100)) .CreateLogger(); g = gateway; netCoreRateLimit = new NetCoreRateLimit(RateLimitType.IP); netCoreRateLimit.RequestBlocked += NetCoreRateLimit_RequestBlocked; netCoreRateLimit.Requested += NetCoreRateLimit_Requested; }
public NetCoreRateLimit(RateLimitType rateLimitType) { _config = ConfigHelper.GetConfig(); _cache = new MemoryCache(new MemoryCacheOptions()); memoryCacheRateLimitCounterStore = new MemoryCacheRateLimitCounterStore(_cache); memoryCacheIpPolicyStore = new MemoryCacheIpPolicyStore(_cache, _config.IpRateLimitOptions, _config.IpRateLimitPolicies); //添加Policy进内存 memoryCacheIpPolicyStore.SeedAsync().Wait(); memoryCacheClientPolicyStore = new MemoryCacheClientPolicyStore(_cache, _config.ClientRateLimitOptions, _config.ClientRateLimitPolicies); //添加Policy进内存 memoryCacheClientPolicyStore.SeedAsync().Wait(); rateLimitConfiguration = new RateLimitConfiguration(_config.IpRateLimitOptions, _config.ClientRateLimitOptions); switch (rateLimitType) { case RateLimitType.CLIENT_ID: _processor = new ClientRateLimitProcessor(_config.ClientRateLimitOptions , memoryCacheRateLimitCounterStore, memoryCacheClientPolicyStore, rateLimitConfiguration); _options = _config.ClientRateLimitOptions as RateLimitOptions; break; case RateLimitType.IP: _processor = new IpRateLimitProcessor(_config.IpRateLimitOptions , memoryCacheRateLimitCounterStore, memoryCacheIpPolicyStore, rateLimitConfiguration); _options = _config.IpRateLimitOptions as RateLimitOptions; break; default: _processor = new IpRateLimitProcessor(_config.IpRateLimitOptions , memoryCacheRateLimitCounterStore, memoryCacheIpPolicyStore, rateLimitConfiguration); _options = _config.IpRateLimitOptions as RateLimitOptions; break; } }
public static RateLimitConfig GetConfig(String file = CONFIG_FILE) { if (rateLimitConfig != null) { return(rateLimitConfig); } if (System.IO.File.Exists(file)) { using (System.IO.StreamReader reader = new System.IO.StreamReader(file, Encoding.UTF8)) { string configData = reader.ReadToEnd(); rateLimitConfig = Newtonsoft.Json.JsonConvert.DeserializeObject <RateLimitConfig>(configData); return(rateLimitConfig); } } else { throw new FileNotFoundException($"Config file [{file}] not found!", file); } }
public RateLimitHandler(RateLimitConfig rateLimit) { }