api_sync/config.go

125 lines
3.8 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package main
import (
"log"
"os"
"strconv"
"github.com/joho/godotenv"
)
/* CONFIG */
var (
// API
bearerToken string
originURL = "https://api.servicepipe.ru/api/v1/l7/origin/global?limit=1000&l7ResourceId="
aliasURL = "https://api.servicepipe.ru/api/v1/l7/alias/global?limit=1000&l7ResourceId="
whoisURL = "https://api.servicepipe.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
// Git
gitRepoURL string
gitRepoPath string
whitelistFile string
// Concurrency
maxConcurrentWorkers int
)
// Загружаем переменные из 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", "")
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)
// Отладка загрузки переменных
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
}