- env_helpers.go: getEnv*, parseLogAggregationLabels - db_init.go: initDatabaseWithRetry - redis_init.go: initRedis, filteredRedisLogger - rabbitmq.go: getRabbitMQURL - cors.go: CORS, cookies - rate_limit.go: rate limit defaults - services_init.go: initServices - middlewares_init.go: initMiddlewares, SetupMiddleware - config.go réduit de ~1487 à ~550 LOC
74 lines
2.5 KiB
Go
74 lines
2.5 KiB
Go
package config
|
|
|
|
import (
|
|
"veza-backend-api/internal/repositories"
|
|
"veza-backend-api/internal/services"
|
|
)
|
|
|
|
// initServices initialise tous les services
|
|
func (c *Config) initServices() error {
|
|
// Service de session
|
|
c.SessionService = services.NewSessionService(c.Database, c.Logger)
|
|
|
|
// Service d'audit
|
|
c.AuditService = services.NewAuditService(c.Database, c.Logger)
|
|
|
|
// Service TOTP
|
|
c.TOTPService = services.NewTOTPService(c.Database, c.Logger)
|
|
|
|
// Validateur d'upload
|
|
uploadConfig := services.DefaultUploadConfig()
|
|
// Lire ENABLE_CLAMAV depuis l'environnement (défaut: true pour sécurité en production)
|
|
// En développement, peut être désactivé si ClamAV n'est pas disponible
|
|
clamAVEnabled := getEnvBool("ENABLE_CLAMAV", true)
|
|
uploadConfig.ClamAVEnabled = clamAVEnabled
|
|
if !clamAVEnabled {
|
|
c.Logger.Warn("ENABLE_CLAMAV=false - ClamAV virus scanning is disabled. This should only be used in development environments.")
|
|
}
|
|
// MOD-P1-002: Lire CLAMAV_REQUIRED depuis l'environnement (défaut: true pour sécurité)
|
|
clamAVRequired := getEnvBool("CLAMAV_REQUIRED", true)
|
|
uploadConfig.ClamAVRequired = clamAVRequired
|
|
if !clamAVRequired {
|
|
c.Logger.Warn("CLAMAV_REQUIRED=false - Uploads will be accepted even if ClamAV is unavailable (degraded mode). This should only be used in development or with alternative security measures.")
|
|
}
|
|
// Chemin vers clamdscan (exec) - remplace go-clamd abandonné
|
|
if p := getEnv("CLAMAV_CLAMD_PATH", ""); p != "" {
|
|
uploadConfig.ClamAVClamdPath = p
|
|
}
|
|
var err error
|
|
c.UploadValidator, err = services.NewUploadValidator(uploadConfig, c.Logger)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
// Service de cache
|
|
c.CacheService = services.NewCacheService(c.RedisClient, c.Logger)
|
|
|
|
// Service de playlist
|
|
c.PlaylistService = services.NewPlaylistServiceWithDB(c.Database.GormDB, c.Logger)
|
|
|
|
// Service de permissions
|
|
c.PermissionService = services.NewPermissionService(c.Database.GormDB)
|
|
|
|
// JWT Service
|
|
c.JWTService, err = services.NewJWTService(c.JWTSecret, c.JWTIssuer, c.JWTAudience)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
// User Service
|
|
userRepo := repositories.NewGormUserRepository(c.Database.GormDB)
|
|
c.UserService = services.NewUserServiceWithDB(userRepo, c.Database.GormDB)
|
|
|
|
// BE-SVC-001: Set cache service for UserService
|
|
if c.CacheService != nil {
|
|
c.UserService.SetCacheService(c.CacheService)
|
|
}
|
|
|
|
// BE-SVC-001: Set cache service for PlaylistService
|
|
if c.CacheService != nil && c.PlaylistService != nil {
|
|
c.PlaylistService.SetCacheService(c.CacheService)
|
|
}
|
|
|
|
return nil
|
|
}
|