rate-limiter

module
v0.0.0-...-85a377b Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 23, 2024 License: MIT

README

O que é isso?

Este é um middleware limitador de taxa configurável para Golang que bloqueia requisições após o limite estipulado de tentaivas tanto por IP com por Token.

Como funciona?

O RateLimiter utiliza o redis para armazenar os acessos dos IP e Tokens, a fim fr bloquea-los em caso de ultrapassar o limite de rqueisições permitidas por segundo, deixando-os bloqueados pelo tempo determinado nas configurações.

Como testar?

Execute-o com o docker compose:

No bash execute o comando

docker compose up -d

Ative p modo de depuração para poder acompanhar os logs com: No bash execute o comando

docker compose logs server --follow 

Você pode enviar solicitações de qualquer browser ou outro aplicativo que realize requisições HTTP (REST Client como Postman, insominia etc) utilizando o endpoint http://localhost:8080 com uma chamada GET ou usar um testador de estresse, como o postman runner. Ou utilizando os arquivos .http na pasta api do projeto

Como configurar o projeto?

Variáveis ​​ambientais

Você pode configurar as variáveis de ambiente apenas editando o arquivo .env:

Value Type Description Default Value
MAX_REQUESTS_RATE_LIMITER_IP integer Solicitações por segundo permitidas para um IP. 100

|BLOCK_TIME_RATE_LIMITER_IP|integer|Tempo de bloqueio em milissegundos para IPs que atingem sua cota de solicitações.|1000|

|MAX_REQUESTS_RATE_LIMITER_TOKEN|integer|Solicitações por segundo permitidas para um token. Isto tem prioridade sobre a configuração IP.|200|

|BLOCK_TIME_RATE_LIMITER_TOKEN|integer|Tempo de bloqueio em milissegundos para tokens que atinjam sua cota de solicitação. Isto tem prioridade sobre a configuração IP.|500|

|MAX_REQUESTS_RATE_LIMITER_TOKEN_ABC|integer|Solicitações por segundo permitidas para o token "ABC". Se não for definido, usará MAX_REQUESTS_RATE_LIMITER_TOKEN. |-|

|BLOCK_TIME_RATE_LIMITER_TOKEN_ABC|integer|Tempo de bloqueio em milissegundos para o token "ABC". Se não for definido, usará BLOCK_TIME_RATE_LIMITER_TOKEN. |-|

|DEBUG_RATE_LIMITER|boolean|Executa em modo de depuração e mensagens são exibidas bash.|false|

|USE_RATE_LIMITER_REDIS|boolean|Usa o Adpter de Storage do Redis.|false|

|ADDRESS_RATE_LIMITER_REDIS|string|Endereço para o Adpter de Storage do Redis.|-|

|PASSWORD_RATE_LIMITER_REDIS|string|Password para o Adpter de Storage do Redis.|-|

|DB_RATE_LIMITER_REDIS|integer|Database para o Adpter de Storage do Redis.|-|

Directories

Path Synopsis
cmd
mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL