From 328ba3b45eb2108abe8a985f9c060ba4187e1596 Mon Sep 17 00:00:00 2001 From: mr-shura <65220775+mr-shura@users.noreply.github.com> Date: Mon, 19 Jan 2026 15:33:17 +0400 Subject: [PATCH] fix Telegram bot ignores reverse proxy setting #3673 (#3684) Refactor URL construction to use pre-configured URIs if available, otherwise fallback to default scheme and host. --- web/service/tgbot.go | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/web/service/tgbot.go b/web/service/tgbot.go index 3a98dcb4..96299050 100644 --- a/web/service/tgbot.go +++ b/web/service/tgbot.go @@ -2267,6 +2267,8 @@ func (t *Tgbot) buildSubscriptionURLs(email string) (string, string, error) { } // Gather settings to construct absolute URLs + subURI, _ := t.settingService.GetSubURI() + subJsonURI, _ := t.settingService.GetSubJsonURI() subDomain, _ := t.settingService.GetSubDomain() subPort, _ := t.settingService.GetSubPort() subPath, _ := t.settingService.GetSubPath() @@ -2314,8 +2316,29 @@ func (t *Tgbot) buildSubscriptionURLs(email string) (string, string, error) { subJsonPath = subJsonPath + "/" } - subURL := fmt.Sprintf("%s://%s%s%s", scheme, host, subPath, client.SubID) - subJsonURL := fmt.Sprintf("%s://%s%s%s", scheme, host, subJsonPath, client.SubID) + var subURL string + var subJsonURL string + + // If pre-configured URIs are available, use them directly + if subURI != "" { + if !strings.HasSuffix(subURI, "/") { + subURI = subURI + "/" + } + subURL = fmt.Sprintf("%s%s", subURI, client.SubID) + } else { + subURL = fmt.Sprintf("%s://%s%s%s", scheme, host, subPath, client.SubID) + } + + if subJsonURI != "" { + if !strings.HasSuffix(subJsonURI, "/") { + subJsonURI = subJsonURI + "/" + } + subJsonURL = fmt.Sprintf("%s%s", subJsonURI, client.SubID) + } else { + + subJsonURL = fmt.Sprintf("%s://%s%s%s", scheme, host, subJsonPath, client.SubID) + } + if !subJsonEnable { subJsonURL = "" }