Backend (Go): - Config: CORS, RabbitMQ, rate limit, main config updates - Routes: core, distribution, tracks routing changes - Middleware: rate limiter, endpoint limiter, response cache hardening - Handlers: distribution, search handler fixes - Workers: job worker improvements - Upload validator and logging config additions - New migrations: products, orders, performance indexes - Seed tooling and data Stream Server (Rust): - Audio processing, config, routes, simple stream server updates - Dockerfile improvements Infrastructure: - docker-compose.yml updates - nginx-rtmp config changes - Makefile improvements (config, dev, high, infra) - Root package.json and lock file updates - .env.example updates Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
59 lines
2.1 KiB
Go
59 lines
2.1 KiB
Go
package config
|
|
|
|
import (
|
|
"os"
|
|
)
|
|
|
|
// getDefaultRateLimitLimit retourne la limite globale par défaut selon l'environnement (A04)
|
|
func getDefaultRateLimitLimit(env string) int {
|
|
if env == EnvDevelopment || env == EnvTest {
|
|
return 1000 // Très permissif pour dev/tests
|
|
}
|
|
return 200 // Staging/prod
|
|
}
|
|
|
|
// getDefaultRegisterAttempts retourne le nombre d'inscriptions autorisées par heure (A04)
|
|
func getDefaultRegisterAttempts(env string) int {
|
|
if env == EnvDevelopment || env == EnvTest {
|
|
return 20 // Assoupli pour dev/tests
|
|
}
|
|
return 3 // Staging/prod
|
|
}
|
|
|
|
// getAuthRateLimitLoginAttempts retourne le nombre de tentatives de login autorisées
|
|
// Augmente les limites pour l'environnement de test/E2E
|
|
func getAuthRateLimitLoginAttempts(env string) int {
|
|
// Vérifier si on est en mode test/E2E
|
|
if env == "test" || env == "e2e" ||
|
|
os.Getenv("GO_ENV") == "test" ||
|
|
os.Getenv("GO_ENV") == "e2e" ||
|
|
os.Getenv("E2E_TEST") == "true" {
|
|
// Limite élevée pour les tests (100 tentatives)
|
|
return getEnvInt("AUTH_RATE_LIMIT_LOGIN_ATTEMPTS", 100)
|
|
}
|
|
// Limite normale en production (5 tentatives)
|
|
return getEnvInt("AUTH_RATE_LIMIT_LOGIN_ATTEMPTS", 5)
|
|
}
|
|
|
|
// getAuthRateLimitLoginWindow retourne la fenêtre de temps pour les tentatives de login
|
|
func getAuthRateLimitLoginWindow(env string) int {
|
|
// En mode test, utiliser 1 minute (comme en production)
|
|
// La fenêtre reste la même, seule la limite de tentatives change
|
|
return getEnvInt("AUTH_RATE_LIMIT_LOGIN_WINDOW", 1)
|
|
}
|
|
|
|
// getDefaultRateLimitIPPerHour returns default hourly limit for non-auth (TASK-SEC-003)
|
|
func getDefaultRateLimitIPPerHour(env string) int {
|
|
if env == EnvDevelopment || env == EnvTest {
|
|
return getEnvInt("RATE_LIMIT_IP_PER_HOUR", 5000) // Very relaxed in dev
|
|
}
|
|
return getEnvInt("RATE_LIMIT_IP_PER_HOUR", 100) // 100 req/h in prod
|
|
}
|
|
|
|
// getDefaultRateLimitUserPerHour returns default hourly limit for auth (TASK-SEC-003)
|
|
func getDefaultRateLimitUserPerHour(env string) int {
|
|
if env == EnvDevelopment || env == EnvTest {
|
|
return getEnvInt("RATE_LIMIT_USER_PER_HOUR", 2000) // More relaxed in dev
|
|
}
|
|
return getEnvInt("RATE_LIMIT_USER_PER_HOUR", 1000) // 1000 req/h in prod
|
|
}
|