From 0603f1029c75697b5bfa405be719c4c06d56aa42 Mon Sep 17 00:00:00 2001 From: C-Y-X <3958013+C-Y-X@users.noreply.github.com> Date: Fri, 8 Mar 2024 17:54:10 +0800 Subject: [PATCH] Added support for custom Telegram proxy host --- options/locale/locale_en-US.ini | 1 + routers/web/repo/setting/webhook.go | 12 ++++++++---- services/forms/repo_form.go | 7 ++++--- services/webhook/telegram.go | 7 ++++--- templates/repo/settings/webhook/telegram.tmpl | 4 ++++ 5 files changed, 21 insertions(+), 10 deletions(-) diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index d30c8e521d..e70babc279 100644 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -2433,6 +2433,7 @@ settings.tags.protection.none = There are no protected tags. settings.tags.protection.pattern.description = You can use a single name or a glob pattern or regular expression to match multiple tags. Read more in the protected tags guide. settings.bot_token = Bot Token settings.chat_id = Chat ID +settings.custom_host= Custom Host settings.thread_id = Thread ID settings.matrix.homeserver_url = Homeserver URL settings.matrix.room_id = Room ID diff --git a/routers/web/repo/setting/webhook.go b/routers/web/repo/setting/webhook.go index bba4d4df51..0067b956aa 100644 --- a/routers/web/repo/setting/webhook.go +++ b/routers/web/repo/setting/webhook.go @@ -425,15 +425,19 @@ func TelegramHooksEditPost(ctx *context.Context) { func telegramHookParams(ctx *context.Context) webhookParams { form := web.GetForm(ctx).(*forms.NewTelegramHookForm) + if form.CustomHost == "" { + form.CustomHost = "https://api.telegram.org" + } return webhookParams{ Type: webhook_module.TELEGRAM, - URL: fmt.Sprintf("https://api.telegram.org/bot%s/sendMessage?chat_id=%s&message_thread_id=%s", url.PathEscape(form.BotToken), url.QueryEscape(form.ChatID), url.QueryEscape(form.ThreadID)), + URL: fmt.Sprintf("%s/bot%s/sendMessage?chat_id=%s&message_thread_id=%s", form.CustomHost, url.PathEscape(form.BotToken), url.QueryEscape(form.ChatID), url.QueryEscape(form.ThreadID)), ContentType: webhook.ContentTypeJSON, WebhookForm: form.WebhookForm, Meta: &webhook_service.TelegramMeta{ - BotToken: form.BotToken, - ChatID: form.ChatID, - ThreadID: form.ThreadID, + BotToken: form.BotToken, + ChatID: form.ChatID, + CustomHost: form.CustomHost, + ThreadID: form.ThreadID, }, } } diff --git a/services/forms/repo_form.go b/services/forms/repo_form.go index e45a2a1695..23a071e935 100644 --- a/services/forms/repo_form.go +++ b/services/forms/repo_form.go @@ -350,9 +350,10 @@ func (f *NewDingtalkHookForm) Validate(req *http.Request, errs binding.Errors) b // NewTelegramHookForm form for creating telegram hook type NewTelegramHookForm struct { - BotToken string `binding:"Required"` - ChatID string `binding:"Required"` - ThreadID string + BotToken string `binding:"Required"` + ChatID string `binding:"Required"` + CustomHost string + ThreadID string WebhookForm } diff --git a/services/webhook/telegram.go b/services/webhook/telegram.go index 1bdc74e183..53048ff79d 100644 --- a/services/webhook/telegram.go +++ b/services/webhook/telegram.go @@ -26,9 +26,10 @@ type ( // TelegramMeta contains the telegram metadata TelegramMeta struct { - BotToken string `json:"bot_token"` - ChatID string `json:"chat_id"` - ThreadID string `json:"thread_id"` + BotToken string `json:"bot_token"` + ChatID string `json:"chat_id"` + CustomHost string `json:"custom_host"` + ThreadID string `json:"thread_id"` } ) diff --git a/templates/repo/settings/webhook/telegram.tmpl b/templates/repo/settings/webhook/telegram.tmpl index f92c2be0db..78647e666b 100644 --- a/templates/repo/settings/webhook/telegram.tmpl +++ b/templates/repo/settings/webhook/telegram.tmpl @@ -10,6 +10,10 @@ +