Align Remnawave config with official docs and fix admin health check

This commit is contained in:
tgvpn
2026-05-21 00:59:55 +03:00
parent 7bde0d8a26
commit 7d63603150
7 changed files with 231 additions and 105 deletions
+22 -14
View File
@@ -7,14 +7,17 @@ import (
"strings"
)
// См. официальную схему env: https://docs.rw/docs/install/subscription-page/bundled
// REMNAWAVE_PANEL_URL + REMNAWAVE_API_TOKEN (+ опционально CADDY_AUTH_API_TOKEN)
type Config struct {
BotToken string
BotDebug bool
TelegramAdminID int64
BotToken string
BotDebug bool
TelegramAdminID int64
RemnawaveName string
RemnawaveURL string
RemnawaveToken string
RemnawaveCaddy string
RemnawavePanelURL string
RemnawaveAPIToken string
CaddyAuthAPIToken string
RemnawaveSubscription string
}
@@ -31,15 +34,15 @@ func Load() (*Config, error) {
panelURL := strings.TrimRight(strings.TrimSpace(os.Getenv("REMNAWAVE_PANEL_URL")), "/")
if panelURL == "" {
return nil, fmt.Errorf("REMNAWAVE_PANEL_URL не задан")
return nil, fmt.Errorf("REMNAWAVE_PANEL_URL не задан (URL панели, см. https://docs.rw/docs/install/subscription-page/bundled)")
}
if !strings.HasPrefix(panelURL, "http://") && !strings.HasPrefix(panelURL, "https://") {
return nil, fmt.Errorf("REMNAWAVE_PANEL_URL должен начинаться с http:// или https://")
return nil, fmt.Errorf("REMNAWAVE_PANEL_URL должен быть с http:// или https:// (как в документации Remnawave)")
}
panelToken := strings.TrimSpace(os.Getenv("REMNAWAVE_API_TOKEN"))
if panelToken == "" {
return nil, fmt.Errorf("REMNAWAVE_API_TOKEN не задан (создайте в панели: Settings → API Tokens)")
apiToken := strings.TrimSpace(os.Getenv("REMNAWAVE_API_TOKEN"))
if apiToken == "" {
return nil, fmt.Errorf("REMNAWAVE_API_TOKEN не задан (Remnawave Settings → API Tokens)")
}
name := strings.TrimSpace(os.Getenv("REMNAWAVE_PANEL_NAME"))
@@ -47,6 +50,11 @@ func Load() (*Config, error) {
name = "Панель 1"
}
caddy := strings.TrimSpace(os.Getenv("CADDY_AUTH_API_TOKEN"))
if caddy == "" {
caddy = strings.TrimSpace(os.Getenv("REMNAWAVE_CADDY_TOKEN")) // устаревшее имя
}
subURL := strings.TrimRight(strings.TrimSpace(os.Getenv("REMNAWAVE_SUBSCRIPTION_URL")), "/")
if subURL != "" && !strings.HasPrefix(subURL, "http://") && !strings.HasPrefix(subURL, "https://") {
return nil, fmt.Errorf("REMNAWAVE_SUBSCRIPTION_URL должен начинаться с http:// или https://")
@@ -57,9 +65,9 @@ func Load() (*Config, error) {
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")),
RemnawavePanelURL: panelURL,
RemnawaveAPIToken: apiToken,
CaddyAuthAPIToken: caddy,
RemnawaveSubscription: subURL,
}, nil
}