Exemplo n.º 1
0
 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;
 }
Exemplo n.º 2
0
 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;
 }
Exemplo n.º 3
0
        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;
            }
        }
Exemplo n.º 4
0
        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);
            }
        }
Exemplo n.º 5
0
 public RateLimitHandler(RateLimitConfig rateLimit)
 {
 }