65 lines
2.1 KiB
Go
65 lines
2.1 KiB
Go
package config
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"git.secnex.io/secnex/auth-api/utils"
|
|
)
|
|
|
|
type Config struct {
|
|
Debug bool
|
|
FiberShowStartupMessage bool
|
|
CorsAllowOrigins string
|
|
CorsAllowHeaders string
|
|
CorsAllowMethods string
|
|
Address string
|
|
DatabaseHost string
|
|
DatabasePort string
|
|
DatabaseUser string
|
|
DatabasePassword string
|
|
DatabaseName string
|
|
RedisHost string
|
|
RedisPort string
|
|
RedisPassword string
|
|
JwtSecret string
|
|
ENV string
|
|
UNPROTECTED_ENDPOINTS []string
|
|
}
|
|
|
|
var CONFIG *Config
|
|
|
|
func generateSecret() string {
|
|
return utils.GenerateRandomString(32)
|
|
}
|
|
|
|
func NewConfig() *Config {
|
|
ENV := utils.GetEnv("ENV", "development")
|
|
UNPROTECTED_ENDPOINTS := strings.Split(utils.GetEnv("UNPROTECTED_ENDPOINTS", ""), ",")
|
|
|
|
if ENV == "development" {
|
|
UNPROTECTED_ENDPOINTS = append(UNPROTECTED_ENDPOINTS, "/api_keys")
|
|
}
|
|
|
|
c := &Config{
|
|
Debug: utils.GetEnvBool("DEBUG", false),
|
|
FiberShowStartupMessage: utils.GetEnvBool("FIBER_SHOW_STARTUP_MESSAGE", false),
|
|
CorsAllowOrigins: utils.GetEnv("CORS_ALLOW_ORIGINS", "*"),
|
|
CorsAllowHeaders: utils.GetEnv("CORS_ALLOW_HEADERS", "Origin, Content-Type, Accept"),
|
|
CorsAllowMethods: utils.GetEnv("CORS_ALLOW_METHODS", "GET, POST, PUT, DELETE"),
|
|
Address: utils.GetEnv("ADDRESS", ":3000"),
|
|
DatabaseHost: utils.GetEnv("DATABASE_HOST", "localhost"),
|
|
DatabasePort: utils.GetEnv("DATABASE_PORT", "5432"),
|
|
DatabaseUser: utils.GetEnv("DATABASE_USER", "postgres"),
|
|
DatabasePassword: utils.GetEnv("DATABASE_PASSWORD", "postgres"),
|
|
DatabaseName: utils.GetEnv("DATABASE_NAME", "secnex"),
|
|
JwtSecret: utils.GetEnv("JWT_SECRET", "your-256-bit-secret"),
|
|
RedisHost: utils.GetEnv("REDIS_HOST", "localhost"),
|
|
RedisPort: utils.GetEnv("REDIS_PORT", "6379"),
|
|
RedisPassword: utils.GetEnv("REDIS_PASSWORD", ""),
|
|
ENV: ENV,
|
|
UNPROTECTED_ENDPOINTS: UNPROTECTED_ENDPOINTS,
|
|
}
|
|
CONFIG = c
|
|
return c
|
|
}
|