125 lines
3.8 KiB
Go
125 lines
3.8 KiB
Go
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
|
||
}
|