59 lines
1.6 KiB
Go
59 lines
1.6 KiB
Go
package config
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
type Config struct {
|
|
BotToken string
|
|
BotDebug bool
|
|
TelegramAdminID int64
|
|
RemnawaveName string
|
|
RemnawaveURL string
|
|
RemnawaveToken string
|
|
RemnawaveCaddy string
|
|
}
|
|
|
|
func Load() (*Config, error) {
|
|
token := strings.TrimSpace(os.Getenv("BOT_TOKEN"))
|
|
if token == "" {
|
|
return nil, fmt.Errorf("BOT_TOKEN не задан")
|
|
}
|
|
|
|
adminID, err := strconv.ParseInt(strings.TrimSpace(os.Getenv("TELEGRAM_ADMIN_ID")), 10, 64)
|
|
if err != nil || adminID <= 0 {
|
|
return nil, fmt.Errorf("TELEGRAM_ADMIN_ID не задан или неверный")
|
|
}
|
|
|
|
panelURL := strings.TrimRight(strings.TrimSpace(os.Getenv("REMNAWAVE_PANEL_URL")), "/")
|
|
if panelURL == "" {
|
|
return nil, fmt.Errorf("REMNAWAVE_PANEL_URL не задан")
|
|
}
|
|
if !strings.HasPrefix(panelURL, "http://") && !strings.HasPrefix(panelURL, "https://") {
|
|
return nil, fmt.Errorf("REMNAWAVE_PANEL_URL должен начинаться с http:// или https://")
|
|
}
|
|
|
|
panelToken := strings.TrimSpace(os.Getenv("REMNAWAVE_API_TOKEN"))
|
|
if panelToken == "" {
|
|
return nil, fmt.Errorf("REMNAWAVE_API_TOKEN не задан (создайте в панели: Settings → API Tokens)")
|
|
}
|
|
|
|
name := strings.TrimSpace(os.Getenv("REMNAWAVE_PANEL_NAME"))
|
|
if name == "" {
|
|
name = "Панель 1"
|
|
}
|
|
|
|
return &Config{
|
|
BotToken: token,
|
|
BotDebug: strings.EqualFold(strings.TrimSpace(os.Getenv("BOT_DEBUG")), "true"),
|
|
TelegramAdminID: adminID,
|
|
RemnawaveName: name,
|
|
RemnawaveURL: panelURL,
|
|
RemnawaveToken: panelToken,
|
|
RemnawaveCaddy: strings.TrimSpace(os.Getenv("REMNAWAVE_CADDY_TOKEN")),
|
|
}, nil
|
|
}
|