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
+25 -26
View File
@@ -26,7 +26,7 @@ func NewHandler(cfg *config.Config, api *tgbotapi.BotAPI) *Handler {
return &Handler{
cfg: cfg,
api: api,
panel: remnawave.NewClient(cfg.RemnawaveURL, cfg.RemnawaveToken, cfg.RemnawaveCaddy),
panel: remnawave.NewClient(cfg.RemnawavePanelURL, cfg.RemnawaveAPIToken, cfg.CaddyAuthAPIToken),
admin: cfg.TelegramAdminID,
}
}
@@ -172,25 +172,32 @@ func (h *Handler) sendAdminHelp(chatID int64) {
func (h *Handler) sendPanelConfig(chatID int64) {
subURL := h.cfg.RemnawaveSubscription
if subURL == "" {
subURL = "не задан"
subURL = "не задана (опционально)"
}
caddy := h.cfg.CaddyAuthAPIToken
if caddy == "" {
caddy = "не задан"
} else {
caddy = maskSecret(caddy)
}
text := fmt.Sprintf(
"⚙️ *%s* (Remnawave)\n\n"+
"• URL панели: `%s`\n"+
"• URL подписки: `%s`\n"+
"• API token: `%s`\n"+
"• Caddy token: %s\n\n"+
"Токен API: панель → *Settings → API Tokens*.\n"+
"Документация: %s",
escapeMarkdown(h.cfg.RemnawaveName),
escapeMarkdown(h.cfg.RemnawaveURL),
escapeMarkdown(subURL),
escapeMarkdown(maskSecret(h.cfg.RemnawaveToken)),
caddyStatus(h.cfg.RemnawaveCaddy),
docsURL,
"⚙️ %s (Remnawave)\n\n"+
"REMNAWAVE_PANEL_URL:\n%s\n"+
"(API: %s/api/... + Bearer REMNAWAVE_API_TOKEN)\n\n"+
"REMNAWAVE_SUBSCRIPTION_URL (опц.):\n%s\n\n"+
"REMNAWAVE_API_TOKEN: %s\n"+
"CADDY_AUTH_API_TOKEN: %s\n\n"+
"Токен: Remnawave Settings → API Tokens\n"+
"Док: %s",
h.cfg.RemnawaveName,
h.cfg.RemnawavePanelURL,
h.cfg.RemnawavePanelURL,
subURL,
maskSecret(h.cfg.RemnawaveAPIToken),
caddy,
"https://docs.rw/docs/install/subscription-page/bundled",
)
msg := tgbotapi.NewMessage(chatID, text)
msg.ParseMode = "Markdown"
msg.ReplyMarkup = adminInlineKeyboard()
h.send(msg)
}
@@ -202,19 +209,11 @@ func (h *Handler) sendPanelCheck(chatID int64) {
defer cancel()
report := h.panel.FullCheck(ctx, h.cfg.RemnawaveSubscription)
text := remnawave.FormatReport(
report,
escapeMarkdown(h.cfg.RemnawaveName),
escapeMarkdown(h.cfg.RemnawaveURL),
)
text := remnawave.FormatReport(report, h.cfg.RemnawaveName)
msg := tgbotapi.NewMessage(chatID, text)
msg.ParseMode = "Markdown"
msg.ReplyMarkup = adminInlineKeyboard()
if err := h.sendReturnErr(msg); err != nil {
msg.ParseMode = ""
h.send(msg)
}
h.send(msg)
}
func adminInlineKeyboard() tgbotapi.InlineKeyboardMarkup {