package main import ( "log" "os" "strconv" "github.com/joho/godotenv" ) /* CONFIG */ var ( // API bearerToken string originURL = "https://api.test.ru/api/v1/l7/origin/global?limit=1000&l7ResourceId=" aliasURL = "https://api.test.ru/api/v1/l7/alias/global?limit=1000&l7ResourceId=" whoisURL = "https://api.test.ru/api/v1/l7/resource/" // DB dbHost string dbPort int dbUser string dbPassword string dbName string // Telegram telegramBotToken string telegramChatID string // Telegram proxy telegramHTTPProxy string telegramSocks5Proxy string telegramSocks5User string telegramSocks5Password string // Mattermost mattermostURL string mattermostBotToken string mattermostChannelID string // Email smtpHost string smtpPort int smtpUser string smtpPassword string smtpFrom string smtpTo string smtpSkipTLS bool // Git gitRepoURL string gitRepoPath string whitelistFile string // Concurrency maxConcurrentWorkers int // Features checkDuplicates bool ) // Загружаем переменные из sp_sync.env при старте func init() { log.Println("[Config] Attempting to load sp_sync.env...") if err := godotenv.Load("/etc/sp_sync/sp_sync.env"); err != nil { log.Printf("[Config] ERROR loading sp_sync.env: %v", err) log.Println("[Config] Using environment variables instead") } else { log.Println("[Config] sp_sync.env loaded successfully") } // Инициализируем переменные ПОСЛЕ загрузки .env файла bearerToken = getEnv("BEARER_TOKEN", "") dbHost = getEnv("DB_HOST", "localhost") dbPort = getEnvAsInt("DB_PORT", 5432) dbUser = getEnv("DB_USER", "") dbPassword = getEnv("DB_PASSWORD", "") dbName = getEnv("DB_NAME", "waf_info") telegramBotToken = getEnv("TELEGRAM_BOT_TOKEN", "") telegramChatID = getEnv("TELEGRAM_CHAT_ID", "") telegramHTTPProxy = getEnv("TELEGRAM_HTTP_PROXY", "") telegramSocks5Proxy = getEnv("TELEGRAM_SOCKS5_PROXY", "") telegramSocks5User = getEnv("TELEGRAM_SOCKS5_USER", "") telegramSocks5Password = getEnv("TELEGRAM_SOCKS5_PASSWORD", "") mattermostURL = getEnv("MATTERMOST_URL", "") mattermostBotToken = getEnv("MATTERMOST_BOT_TOKEN", "") mattermostChannelID = getEnv("MATTERMOST_CHANNEL_ID", "") smtpHost = getEnv("EMAIL_SMTP_HOST", "") smtpPort = getEnvAsInt("EMAIL_SMTP_PORT", 587) smtpUser = getEnv("EMAIL_SMTP_USER", "") smtpPassword = getEnv("EMAIL_SMTP_PASSWORD", "") smtpFrom = getEnv("EMAIL_FROM", "") smtpTo = getEnv("EMAIL_TO", "") smtpSkipTLS = getEnv("EMAIL_SKIP_TLS_VERIFY", "") == "true" gitRepoURL = getEnv("GIT_REPO_URL", "https://token@svc-git.cirex.ru/wmx/waf_whitelist.git") gitRepoPath = getEnv("GIT_REPO_PATH", "/home/install/waf_whitelist") whitelistFile = getEnv("WHITELIST_FILE", "whitelist_ptaf.txt") maxConcurrentWorkers = getEnvAsInt("MAX_CONCURRENT_WORKERS", 5) checkDuplicates = getEnv("CHECK_DUPLICATES", "true") != "false" // Отладка загрузки переменных log.Printf("[Config] DB_USER loaded: '%s'", dbUser) log.Printf("[Config] DB_PASSWORD loaded: [%d chars]", len(dbPassword)) log.Printf("[Config] DB_HOST: %s", dbHost) log.Printf("[Config] DB_PORT: %d", dbPort) log.Printf("[Config] DB_NAME: %s", dbName) } // Вспомогательная функция для получения переменной окружения со значением по умолчанию func getEnv(key, defaultValue string) string { if value := os.Getenv(key); value != "" { return value } return defaultValue } // Вспомогательная функция для получения целочисленной переменной окружения func getEnvAsInt(key string, defaultValue int) int { valueStr := os.Getenv(key) if valueStr == "" { return defaultValue } value, err := strconv.Atoi(valueStr) if err != nil { log.Printf("Warning: invalid integer value for %s: %s, using default %d", key, valueStr, defaultValue) return defaultValue } return value }