包含 webapp(Next.js 用户端)、webapp-back(Go 后端)、 antdesign(管理后台)、landingpage(营销落地页)、 数据库 SQL 和配置文件。
109 lines
2.6 KiB
Go
109 lines
2.6 KiB
Go
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
|
|
}
|