Files
assetx/webapp-back/config/config.go

109 lines
2.6 KiB
Go
Raw Normal View History

package config
import (
"fmt"
"log"
"os"
"github.com/joho/godotenv"
)
type Config struct {
// Server
Port string
GinMode string
// Database
DBType string
DBHost string
DBPort string
DBUser string
DBPassword string
DBName string
// Redis
RedisHost string
RedisPort string
RedisPassword string
RedisDB string
// Auth
AuthCenterURL string
AuthTokenCacheTTL string
AllowedOrigins string
// Web3
ArbSepoliaRPC string
BSCTestnetRPC string
// Liquidation Bot
LiquidatorPrivateKey string
// Collateral Buyer Bot
CollateralBuyerPrivateKey string
CollateralBuyerMaxAmount string
CollateralBuyerSlippage int
}
var AppConfig *Config
// Load configuration from environment variables
func Load() *Config {
// Load .env file
if err := godotenv.Load(); err != nil {
log.Println("No .env file found, using environment variables")
}
AppConfig = &Config{
Port: getEnv("PORT", "8080"),
GinMode: getEnv("GIN_MODE", "debug"),
DBType: getEnv("DB_TYPE", "mysql"),
DBHost: getEnv("DB_HOST", "localhost"),
DBPort: getEnv("DB_PORT", "3306"),
DBUser: getEnv("DB_USER", "root"),
DBPassword: getEnv("DB_PASSWORD", ""),
DBName: getEnv("DB_NAME", "assetx"),
RedisHost: getEnv("REDIS_HOST", "localhost"),
RedisPort: getEnv("REDIS_PORT", "6379"),
RedisPassword: getEnv("REDIS_PASSWORD", ""),
RedisDB: getEnv("REDIS_DB", "0"),
AuthCenterURL: getEnv("AUTH_CENTER_URL", "https://auth.upay01.com"),
AuthTokenCacheTTL: getEnv("AUTH_TOKEN_CACHE_TTL", "300"),
AllowedOrigins: getEnv("ALLOWED_ORIGINS", "http://localhost:8000"),
ArbSepoliaRPC: getEnv("ARB_SEPOLIA_RPC", "https://sepolia-rollup.arbitrum.io/rpc"),
BSCTestnetRPC: getEnv("BSC_TESTNET_RPC", "https://api.zan.top/node/v1/bsc/testnet/baf84c429d284bb5b676cb8c9ca21c07"),
LiquidatorPrivateKey: getEnv("LIQUIDATOR_PRIVATE_KEY", ""),
CollateralBuyerPrivateKey: getEnv("COLLATERAL_BUYER_PRIVATE_KEY", ""),
CollateralBuyerMaxAmount: getEnv("COLLATERAL_BUYER_MAX_AMOUNT", "100"),
CollateralBuyerSlippage: getEnvInt("COLLATERAL_BUYER_SLIPPAGE", 2),
}
return AppConfig
}
func getEnv(key, defaultValue string) string {
value := os.Getenv(key)
if value == "" {
return defaultValue
}
return value
}
func getEnvInt(key string, defaultValue int) int {
value := os.Getenv(key)
if value == "" {
return defaultValue
}
var i int
if _, err := fmt.Sscanf(value, "%d", &i); err != nil {
return defaultValue
}
return i
}