1
0
Fork 0
mirror of https://github.com/miniflux/v2.git synced 2025-08-01 17:38:37 +00:00

feat(integration): add webhook URL per feed

This commit is contained in:
Wesley van Tilburg 2025-02-01 01:33:11 +01:00 committed by GitHub
parent b193bc212a
commit 459284ab96
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
26 changed files with 105 additions and 55 deletions

View file

@ -990,4 +990,8 @@ var migrations = []func(tx *sql.Tx, driver string) error{
_, err = tx.Exec(sql) _, err = tx.Exec(sql)
return err return err
}, },
func(tx *sql.Tx, _ string) (err error) {
_, err = tx.Exec(`ALTER TABLE feeds ADD COLUMN webhook_url text default '';`)
return err
},
} }

View file

@ -474,20 +474,27 @@ func PushEntries(feed *model.Feed, entries model.Entries, userIntegrations *mode
} }
if userIntegrations.WebhookEnabled { if userIntegrations.WebhookEnabled {
var webhookURL string
if feed.WebhookURL != "" {
webhookURL = feed.WebhookURL
} else {
webhookURL = userIntegrations.WebhookURL
}
slog.Debug("Sending new entries to Webhook", slog.Debug("Sending new entries to Webhook",
slog.Int64("user_id", userIntegrations.UserID), slog.Int64("user_id", userIntegrations.UserID),
slog.Int("nb_entries", len(entries)), slog.Int("nb_entries", len(entries)),
slog.Int64("feed_id", feed.ID), slog.Int64("feed_id", feed.ID),
slog.String("webhook_url", userIntegrations.WebhookURL), slog.String("webhook_url", webhookURL),
) )
webhookClient := webhook.NewClient(userIntegrations.WebhookURL, userIntegrations.WebhookSecret) webhookClient := webhook.NewClient(webhookURL, userIntegrations.WebhookSecret)
if err := webhookClient.SendNewEntriesWebhookEvent(feed, entries); err != nil { if err := webhookClient.SendNewEntriesWebhookEvent(feed, entries); err != nil {
slog.Debug("Unable to send new entries to Webhook", slog.Debug("Unable to send new entries to Webhook",
slog.Int64("user_id", userIntegrations.UserID), slog.Int64("user_id", userIntegrations.UserID),
slog.Int("nb_entries", len(entries)), slog.Int("nb_entries", len(entries)),
slog.Int64("feed_id", feed.ID), slog.Int64("feed_id", feed.ID),
slog.String("webhook_url", userIntegrations.WebhookURL), slog.String("webhook_url", webhookURL),
slog.Any("error", err), slog.Any("error", err),
) )
} }

View file

@ -339,6 +339,7 @@
"form.feed.label.scraper_rules": "Extraktionsregeln", "form.feed.label.scraper_rules": "Extraktionsregeln",
"form.feed.label.rewrite_rules": "Umschreiberegeln", "form.feed.label.rewrite_rules": "Umschreiberegeln",
"form.feed.label.apprise_service_urls": "Kommaseparierte Liste der Apprise-Service-URLs", "form.feed.label.apprise_service_urls": "Kommaseparierte Liste der Apprise-Service-URLs",
"form.feed.label.webhook_url": "Webhook-URL überschreiben",
"form.feed.label.blocklist_rules": "Blockierregeln", "form.feed.label.blocklist_rules": "Blockierregeln",
"form.feed.label.keeplist_rules": "Erlaubnisregeln", "form.feed.label.keeplist_rules": "Erlaubnisregeln",
"form.feed.label.urlrewrite_rules": "Umschreibregeln für URL", "form.feed.label.urlrewrite_rules": "Umschreibregeln für URL",
@ -501,8 +502,8 @@
"form.integration.shaarli_activate": "Artikel in Shaarli speichern", "form.integration.shaarli_activate": "Artikel in Shaarli speichern",
"form.integration.shaarli_endpoint": "Shaarli-URL", "form.integration.shaarli_endpoint": "Shaarli-URL",
"form.integration.shaarli_api_secret": "Shaarli-API-Geheimnis", "form.integration.shaarli_api_secret": "Shaarli-API-Geheimnis",
"form.integration.webhook_activate": "Webhook aktivieren", "form.integration.webhook_activate": "Webhooks aktivieren",
"form.integration.webhook_url": "Webhook-URL", "form.integration.webhook_url": "Standard Webhook-URL",
"form.integration.webhook_secret": "Webhook-Geheimnis", "form.integration.webhook_secret": "Webhook-Geheimnis",
"form.integration.rssbridge_activate": "Beim Hinzufügen von Abonnements RSS-Bridge prüfen.", "form.integration.rssbridge_activate": "Beim Hinzufügen von Abonnements RSS-Bridge prüfen.",
"form.integration.rssbridge_url": "RSS-Bridge-Server-URL", "form.integration.rssbridge_url": "RSS-Bridge-Server-URL",

View file

@ -325,6 +325,7 @@
"error.feed_invalid_keeplist_rule": "Ο κανόνας keep list δεν είναι έγκυρος.", "error.feed_invalid_keeplist_rule": "Ο κανόνας keep list δεν είναι έγκυρος.",
"form.feed.label.urlrewrite_rules": "επανεγγραφή κανόνων για τη διεύθυνση URL.", "form.feed.label.urlrewrite_rules": "επανεγγραφή κανόνων για τη διεύθυνση URL.",
"form.feed.label.apprise_service_urls": "Comma separated list of Apprise service URLs", "form.feed.label.apprise_service_urls": "Comma separated list of Apprise service URLs",
"form.feed.label.webhook_url": "Override webhook url",
"error.user_mandatory_fields": "Το όνομα χρήστη είναι υποχρεωτικό.", "error.user_mandatory_fields": "Το όνομα χρήστη είναι υποχρεωτικό.",
"error.api_key_already_exists": "Αυτό το κλειδί API υπάρχει ήδη.", "error.api_key_already_exists": "Αυτό το κλειδί API υπάρχει ήδη.",
"error.unable_to_create_api_key": "Δεν είναι δυνατή η δημιουργία αυτού του κλειδιού API.", "error.unable_to_create_api_key": "Δεν είναι δυνατή η δημιουργία αυτού του κλειδιού API.",
@ -501,9 +502,9 @@
"form.integration.shaarli_activate": "Save articles to Shaarli", "form.integration.shaarli_activate": "Save articles to Shaarli",
"form.integration.shaarli_endpoint": "Shaarli URL", "form.integration.shaarli_endpoint": "Shaarli URL",
"form.integration.shaarli_api_secret": "Shaarli API Secret", "form.integration.shaarli_api_secret": "Shaarli API Secret",
"form.integration.webhook_activate": "Enable Webhook", "form.integration.webhook_activate": "Enable Webhooks",
"form.integration.webhook_url": "Webhook URL", "form.integration.webhook_url": "Default Webhook URL",
"form.integration.webhook_secret": "Webhook Secret", "form.integration.webhook_secret": "Webhooks Secret",
"form.integration.rssbridge_activate": "Check RSS-Bridge when adding subscriptions", "form.integration.rssbridge_activate": "Check RSS-Bridge when adding subscriptions",
"form.integration.rssbridge_url": "RSS-Bridge server URL", "form.integration.rssbridge_url": "RSS-Bridge server URL",
"form.integration.ntfy_activate": "Push entries to ntfy", "form.integration.ntfy_activate": "Push entries to ntfy",

View file

@ -339,6 +339,7 @@
"form.feed.label.scraper_rules": "Scraper Rules", "form.feed.label.scraper_rules": "Scraper Rules",
"form.feed.label.rewrite_rules": "Rewrite Rules", "form.feed.label.rewrite_rules": "Rewrite Rules",
"form.feed.label.apprise_service_urls": "Comma separated list of Apprise service URLs", "form.feed.label.apprise_service_urls": "Comma separated list of Apprise service URLs",
"form.feed.label.webhook_url": "Override webhook url",
"form.feed.label.blocklist_rules": "Block Rules", "form.feed.label.blocklist_rules": "Block Rules",
"form.feed.label.keeplist_rules": "Keep Rules", "form.feed.label.keeplist_rules": "Keep Rules",
"form.feed.label.urlrewrite_rules": "URL Rewrite Rules", "form.feed.label.urlrewrite_rules": "URL Rewrite Rules",
@ -499,9 +500,9 @@
"form.integration.shaarli_activate": "Save articles to Shaarli", "form.integration.shaarli_activate": "Save articles to Shaarli",
"form.integration.shaarli_endpoint": "Shaarli URL", "form.integration.shaarli_endpoint": "Shaarli URL",
"form.integration.shaarli_api_secret": "Shaarli API Secret", "form.integration.shaarli_api_secret": "Shaarli API Secret",
"form.integration.webhook_activate": "Enable Webhook", "form.integration.webhook_activate": "Enable Webhooks",
"form.integration.webhook_url": "Webhook URL", "form.integration.webhook_url": "Default Webhook URL",
"form.integration.webhook_secret": "Webhook Secret", "form.integration.webhook_secret": "Webhooks Secret",
"form.integration.rssbridge_activate": "Check RSS-Bridge when adding subscriptions", "form.integration.rssbridge_activate": "Check RSS-Bridge when adding subscriptions",
"form.integration.rssbridge_url": "RSS-Bridge server URL", "form.integration.rssbridge_url": "RSS-Bridge server URL",
"form.integration.ntfy_activate": "Push entries to ntfy", "form.integration.ntfy_activate": "Push entries to ntfy",

View file

@ -339,6 +339,7 @@
"form.feed.label.scraper_rules": "Reglas de extracción de información", "form.feed.label.scraper_rules": "Reglas de extracción de información",
"form.feed.label.rewrite_rules": "Reglas de reescribir", "form.feed.label.rewrite_rules": "Reglas de reescribir",
"form.feed.label.apprise_service_urls": "Lista separada por comas de las URL del servicio Apprise", "form.feed.label.apprise_service_urls": "Lista separada por comas de las URL del servicio Apprise",
"form.feed.label.webhook_url": "Override webhook url",
"form.feed.label.blocklist_rules": "Reglas de Filtrado (Bloquear)", "form.feed.label.blocklist_rules": "Reglas de Filtrado (Bloquear)",
"form.feed.label.keeplist_rules": "Reglas de Filtrado (Permitir)", "form.feed.label.keeplist_rules": "Reglas de Filtrado (Permitir)",
"form.feed.label.urlrewrite_rules": "Reglas de Filtrado (Reescritura)", "form.feed.label.urlrewrite_rules": "Reglas de Filtrado (Reescritura)",
@ -501,9 +502,9 @@
"form.integration.shaarli_activate": "Guardar artículos en Shaarli", "form.integration.shaarli_activate": "Guardar artículos en Shaarli",
"form.integration.shaarli_endpoint": "URL de Shaarli", "form.integration.shaarli_endpoint": "URL de Shaarli",
"form.integration.shaarli_api_secret": "Secreto API de Shaarli", "form.integration.shaarli_api_secret": "Secreto API de Shaarli",
"form.integration.webhook_activate": "Habilitar Webhook", "form.integration.webhook_activate": "Habilitar Webhooks",
"form.integration.webhook_url": "URL de Webhook", "form.integration.webhook_url": "Defecto URL de Webhook",
"form.integration.webhook_secret": "Secreto de Webhook", "form.integration.webhook_secret": "Secreto de Webhooks",
"form.integration.rssbridge_activate": "Vericar RSS-Bridge al agregar suscripciones", "form.integration.rssbridge_activate": "Vericar RSS-Bridge al agregar suscripciones",
"form.integration.rssbridge_url": "URL del servidro RSS-Bridge", "form.integration.rssbridge_url": "URL del servidro RSS-Bridge",
"form.integration.ntfy_activate": "Enviar artículos a ntfy", "form.integration.ntfy_activate": "Enviar artículos a ntfy",

View file

@ -325,6 +325,7 @@
"error.feed_invalid_keeplist_rule": "The keep list rule is invalid.", "error.feed_invalid_keeplist_rule": "The keep list rule is invalid.",
"form.feed.label.urlrewrite_rules": "URL-osoitteen uudelleenkirjoitussäännöt", "form.feed.label.urlrewrite_rules": "URL-osoitteen uudelleenkirjoitussäännöt",
"form.feed.label.apprise_service_urls": "Comma separated list of Apprise service URLs", "form.feed.label.apprise_service_urls": "Comma separated list of Apprise service URLs",
"form.feed.label.webhook_url": "Override webhook url",
"error.user_mandatory_fields": "Käyttäjätunnus on pakollinen.", "error.user_mandatory_fields": "Käyttäjätunnus on pakollinen.",
"error.api_key_already_exists": "API-avain on jo olemassa.", "error.api_key_already_exists": "API-avain on jo olemassa.",
"error.unable_to_create_api_key": "API-avainta ei voi luoda.", "error.unable_to_create_api_key": "API-avainta ei voi luoda.",
@ -501,9 +502,9 @@
"form.integration.shaarli_activate": "Save articles to Shaarli", "form.integration.shaarli_activate": "Save articles to Shaarli",
"form.integration.shaarli_endpoint": "Shaarli URL", "form.integration.shaarli_endpoint": "Shaarli URL",
"form.integration.shaarli_api_secret": "Shaarli API Secret", "form.integration.shaarli_api_secret": "Shaarli API Secret",
"form.integration.webhook_activate": "Enable Webhook", "form.integration.webhook_activate": "Enable Webhooks",
"form.integration.webhook_url": "Webhook URL", "form.integration.webhook_url": "Default Webhook URL",
"form.integration.webhook_secret": "Webhook Secret", "form.integration.webhook_secret": "Webhooks Secret",
"form.integration.rssbridge_activate": "Check RSS-Bridge when adding subscriptions", "form.integration.rssbridge_activate": "Check RSS-Bridge when adding subscriptions",
"form.integration.rssbridge_url": "RSS-Bridge server URL", "form.integration.rssbridge_url": "RSS-Bridge server URL",
"form.integration.ntfy_activate": "Push entries to ntfy", "form.integration.ntfy_activate": "Push entries to ntfy",

View file

@ -339,6 +339,7 @@
"form.feed.label.scraper_rules": "Règles pour récupérer le contenu original", "form.feed.label.scraper_rules": "Règles pour récupérer le contenu original",
"form.feed.label.rewrite_rules": "Règles de réécriture", "form.feed.label.rewrite_rules": "Règles de réécriture",
"form.feed.label.apprise_service_urls": "Liste séparée par des virgules des URL du service Apprise", "form.feed.label.apprise_service_urls": "Liste séparée par des virgules des URL du service Apprise",
"form.feed.label.webhook_url": "Remplacer l'URL du webhook",
"form.feed.label.blocklist_rules": "Règles de blocage", "form.feed.label.blocklist_rules": "Règles de blocage",
"form.feed.label.keeplist_rules": "Règles d'autorisation", "form.feed.label.keeplist_rules": "Règles d'autorisation",
"form.feed.label.urlrewrite_rules": "Règles de réécriture d'URL", "form.feed.label.urlrewrite_rules": "Règles de réécriture d'URL",

View file

@ -339,6 +339,7 @@
"form.feed.label.scraper_rules": "खुरचनी नियम", "form.feed.label.scraper_rules": "खुरचनी नियम",
"form.feed.label.rewrite_rules": "नियम फिर से लिखें", "form.feed.label.rewrite_rules": "नियम फिर से लिखें",
"form.feed.label.apprise_service_urls": "Comma separated list of Apprise service URLs", "form.feed.label.apprise_service_urls": "Comma separated list of Apprise service URLs",
"form.feed.label.webhook_url": "Override webhook url",
"form.feed.label.blocklist_rules": "ब्लॉक नियम", "form.feed.label.blocklist_rules": "ब्लॉक नियम",
"form.feed.label.keeplist_rules": "नियम बनाए रखें", "form.feed.label.keeplist_rules": "नियम बनाए रखें",
"form.feed.label.urlrewrite_rules": " यूआरएल पुनर्लेखन नियम", "form.feed.label.urlrewrite_rules": " यूआरएल पुनर्लेखन नियम",
@ -501,9 +502,9 @@
"form.integration.shaarli_activate": "Save articles to Shaarli", "form.integration.shaarli_activate": "Save articles to Shaarli",
"form.integration.shaarli_endpoint": "Shaarli URL", "form.integration.shaarli_endpoint": "Shaarli URL",
"form.integration.shaarli_api_secret": "Shaarli API Secret", "form.integration.shaarli_api_secret": "Shaarli API Secret",
"form.integration.webhook_activate": "Enable Webhook", "form.integration.webhook_activate": "Enable Webhooks",
"form.integration.webhook_url": "Webhook URL", "form.integration.webhook_url": "Default Webhook URL",
"form.integration.webhook_secret": "Webhook Secret", "form.integration.webhook_secret": "Webhooks Secret",
"form.integration.rssbridge_activate": "Check RSS-Bridge when adding subscriptions", "form.integration.rssbridge_activate": "Check RSS-Bridge when adding subscriptions",
"form.integration.rssbridge_url": "RSS-Bridge server URL", "form.integration.rssbridge_url": "RSS-Bridge server URL",
"form.integration.ntfy_activate": "Push entries to ntfy", "form.integration.ntfy_activate": "Push entries to ntfy",

View file

@ -329,6 +329,7 @@
"form.feed.label.scraper_rules": "Aturan Pengambil Data", "form.feed.label.scraper_rules": "Aturan Pengambil Data",
"form.feed.label.rewrite_rules": "Aturan Tulis Ulang", "form.feed.label.rewrite_rules": "Aturan Tulis Ulang",
"form.feed.label.apprise_service_urls": "Comma separated list of Apprise service URLs", "form.feed.label.apprise_service_urls": "Comma separated list of Apprise service URLs",
"form.feed.label.webhook_url": "Override webhook url",
"form.feed.label.blocklist_rules": "Aturan Blokir", "form.feed.label.blocklist_rules": "Aturan Blokir",
"form.feed.label.keeplist_rules": "Aturan Simpan", "form.feed.label.keeplist_rules": "Aturan Simpan",
"form.feed.label.urlrewrite_rules": "Aturan Tulis Ulang URL", "form.feed.label.urlrewrite_rules": "Aturan Tulis Ulang URL",
@ -491,9 +492,9 @@
"form.integration.shaarli_activate": "Save articles to Shaarli", "form.integration.shaarli_activate": "Save articles to Shaarli",
"form.integration.shaarli_endpoint": "Shaarli URL", "form.integration.shaarli_endpoint": "Shaarli URL",
"form.integration.shaarli_api_secret": "Shaarli API Secret", "form.integration.shaarli_api_secret": "Shaarli API Secret",
"form.integration.webhook_activate": "Enable Webhook", "form.integration.webhook_activate": "Enable Webhooks",
"form.integration.webhook_url": "Webhook URL", "form.integration.webhook_url": "Default Webhook URL",
"form.integration.webhook_secret": "Webhook Secret", "form.integration.webhook_secret": "Webhooks Secret",
"form.integration.rssbridge_activate": "Check RSS-Bridge when adding subscriptions", "form.integration.rssbridge_activate": "Check RSS-Bridge when adding subscriptions",
"form.integration.rssbridge_url": "RSS-Bridge server URL", "form.integration.rssbridge_url": "RSS-Bridge server URL",
"form.integration.ntfy_activate": "Push entries to ntfy", "form.integration.ntfy_activate": "Push entries to ntfy",

View file

@ -339,6 +339,7 @@
"form.feed.label.scraper_rules": "Regole di estrazione del contenuto", "form.feed.label.scraper_rules": "Regole di estrazione del contenuto",
"form.feed.label.rewrite_rules": "Regole di impaginazione del contenuto", "form.feed.label.rewrite_rules": "Regole di impaginazione del contenuto",
"form.feed.label.apprise_service_urls": "Comma separated list of Apprise service URLs", "form.feed.label.apprise_service_urls": "Comma separated list of Apprise service URLs",
"form.feed.label.webhook_url": "Override webhook url",
"form.feed.label.blocklist_rules": "Regole di blocco", "form.feed.label.blocklist_rules": "Regole di blocco",
"form.feed.label.keeplist_rules": "Regole di autorizzazione", "form.feed.label.keeplist_rules": "Regole di autorizzazione",
"form.feed.label.urlrewrite_rules": "Regole di riscrittura URL", "form.feed.label.urlrewrite_rules": "Regole di riscrittura URL",
@ -501,9 +502,9 @@
"form.integration.shaarli_activate": "Save articles to Shaarli", "form.integration.shaarli_activate": "Save articles to Shaarli",
"form.integration.shaarli_endpoint": "Shaarli URL", "form.integration.shaarli_endpoint": "Shaarli URL",
"form.integration.shaarli_api_secret": "Shaarli API Secret", "form.integration.shaarli_api_secret": "Shaarli API Secret",
"form.integration.webhook_activate": "Enable Webhook", "form.integration.webhook_activate": "Enable Webhooks",
"form.integration.webhook_url": "Webhook URL", "form.integration.webhook_url": "Default Webhook URL",
"form.integration.webhook_secret": "Webhook Secret", "form.integration.webhook_secret": "Webhooks Secret",
"form.integration.rssbridge_activate": "Check RSS-Bridge when adding subscriptions", "form.integration.rssbridge_activate": "Check RSS-Bridge when adding subscriptions",
"form.integration.rssbridge_url": "RSS-Bridge server URL", "form.integration.rssbridge_url": "RSS-Bridge server URL",
"form.api_key.label.description": "Etichetta chiave API", "form.api_key.label.description": "Etichetta chiave API",

View file

@ -332,6 +332,7 @@
"form.feed.label.keeplist_rules": "Keep ルール", "form.feed.label.keeplist_rules": "Keep ルール",
"form.feed.label.urlrewrite_rules": "Rewrite URL ルール", "form.feed.label.urlrewrite_rules": "Rewrite URL ルール",
"form.feed.label.apprise_service_urls": "Comma separated list of Apprise service URLs", "form.feed.label.apprise_service_urls": "Comma separated list of Apprise service URLs",
"form.feed.label.webhook_url": "Override webhook url",
"form.feed.label.ignore_http_cache": "HTTPキャッシュを無視", "form.feed.label.ignore_http_cache": "HTTPキャッシュを無視",
"form.feed.label.allow_self_signed_certificates": "自己署名証明書または無効な証明書を許可する", "form.feed.label.allow_self_signed_certificates": "自己署名証明書または無効な証明書を許可する",
"form.feed.label.disable_http2": "Disable HTTP/2 to avoid fingerprinting", "form.feed.label.disable_http2": "Disable HTTP/2 to avoid fingerprinting",
@ -491,9 +492,9 @@
"form.integration.shaarli_activate": "Save articles to Shaarli", "form.integration.shaarli_activate": "Save articles to Shaarli",
"form.integration.shaarli_endpoint": "Shaarli URL", "form.integration.shaarli_endpoint": "Shaarli URL",
"form.integration.shaarli_api_secret": "Shaarli API Secret", "form.integration.shaarli_api_secret": "Shaarli API Secret",
"form.integration.webhook_activate": "Enable Webhook", "form.integration.webhook_activate": "Enable Webhooks",
"form.integration.webhook_url": "Webhook URL", "form.integration.webhook_url": "Default Webhook URL",
"form.integration.webhook_secret": "Webhook Secret", "form.integration.webhook_secret": "Webhooks Secret",
"form.integration.rssbridge_activate": "Check RSS-Bridge when adding subscriptions", "form.integration.rssbridge_activate": "Check RSS-Bridge when adding subscriptions",
"form.integration.rssbridge_url": "RSS-Bridge server URL", "form.integration.rssbridge_url": "RSS-Bridge server URL",
"form.integration.ntfy_activate": "Push entries to ntfy", "form.integration.ntfy_activate": "Push entries to ntfy",

View file

@ -342,6 +342,7 @@
"form.feed.label.keeplist_rules": "Bewaarregels", "form.feed.label.keeplist_rules": "Bewaarregels",
"form.feed.label.urlrewrite_rules": "Herschrijfregels voor URL's", "form.feed.label.urlrewrite_rules": "Herschrijfregels voor URL's",
"form.feed.label.apprise_service_urls": "Door komma's gescheiden lijst van Apprise service URL's", "form.feed.label.apprise_service_urls": "Door komma's gescheiden lijst van Apprise service URL's",
"form.feed.label.webhook_url": "Overschrijf webhook URL",
"form.feed.label.ignore_http_cache": "Negeer HTTP-cache", "form.feed.label.ignore_http_cache": "Negeer HTTP-cache",
"form.feed.label.allow_self_signed_certificates": "Zelfondertekende of ongeldige certificaten toestaan", "form.feed.label.allow_self_signed_certificates": "Zelfondertekende of ongeldige certificaten toestaan",
"form.feed.label.disable_http2": "HTTP/2 uitschakelen om fingerprinting te voorkomen", "form.feed.label.disable_http2": "HTTP/2 uitschakelen om fingerprinting te voorkomen",
@ -501,9 +502,9 @@
"form.integration.shaarli_activate": "Artikelen opslaan in Shaarli", "form.integration.shaarli_activate": "Artikelen opslaan in Shaarli",
"form.integration.shaarli_endpoint": "Shaarli URL", "form.integration.shaarli_endpoint": "Shaarli URL",
"form.integration.shaarli_api_secret": "Shaarli API Secret", "form.integration.shaarli_api_secret": "Shaarli API Secret",
"form.integration.webhook_activate": "Webhook activeren", "form.integration.webhook_activate": "Webhooks activeren",
"form.integration.webhook_url": "Webhook URL", "form.integration.webhook_url": "Standard Webhook URL",
"form.integration.webhook_secret": "Webhook Secret", "form.integration.webhook_secret": "Webhooks Secret",
"form.integration.rssbridge_activate": "Controleer RSS-Bridge bij het toevoegen van abonnementen", "form.integration.rssbridge_activate": "Controleer RSS-Bridge bij het toevoegen van abonnementen",
"form.integration.rssbridge_url": "RSS-Bridge server URL", "form.integration.rssbridge_url": "RSS-Bridge server URL",
"form.integration.ntfy_activate": "Stuur artikelen naar ntfy", "form.integration.ntfy_activate": "Stuur artikelen naar ntfy",

View file

@ -352,6 +352,7 @@
"form.feed.label.keeplist_rules": "Reguły utrzymywania", "form.feed.label.keeplist_rules": "Reguły utrzymywania",
"form.feed.label.urlrewrite_rules": "Reguły przepisywania adresów URL", "form.feed.label.urlrewrite_rules": "Reguły przepisywania adresów URL",
"form.feed.label.apprise_service_urls": "Rozdzielana przecinkami lista adresów URL usług Appprise", "form.feed.label.apprise_service_urls": "Rozdzielana przecinkami lista adresów URL usług Appprise",
"form.feed.label.webhook_url": "Override webhook url",
"form.feed.label.ignore_http_cache": "Zignoruj pamięć podręczną HTTP", "form.feed.label.ignore_http_cache": "Zignoruj pamięć podręczną HTTP",
"form.feed.label.allow_self_signed_certificates": "Zezwalaj na samopodpisane lub nieprawidłowe certyfikaty", "form.feed.label.allow_self_signed_certificates": "Zezwalaj na samopodpisane lub nieprawidłowe certyfikaty",
"form.feed.label.disable_http2": "Wyłącz protokół HTTP/2, aby uniknąć identyfikowania", "form.feed.label.disable_http2": "Wyłącz protokół HTTP/2, aby uniknąć identyfikowania",
@ -511,9 +512,9 @@
"form.integration.shaarli_activate": "Zapisuj artykuły w Shaarli", "form.integration.shaarli_activate": "Zapisuj artykuły w Shaarli",
"form.integration.shaarli_endpoint": "Adres URL Shaarli", "form.integration.shaarli_endpoint": "Adres URL Shaarli",
"form.integration.shaarli_api_secret": "Tajny klucz API do Shaarli", "form.integration.shaarli_api_secret": "Tajny klucz API do Shaarli",
"form.integration.webhook_activate": "Włącz Webhook", "form.integration.webhook_activate": "Włącz Webhooks",
"form.integration.webhook_url": "Adres URL Webhook", "form.integration.webhook_url": "Default Adres URL Webhook",
"form.integration.webhook_secret": "Tajny klucz do Webhook", "form.integration.webhook_secret": "Tajny klucz do Webhooks",
"form.integration.rssbridge_activate": "Sprawdź RSS-Bridge podczas dodawania subskrypcji", "form.integration.rssbridge_activate": "Sprawdź RSS-Bridge podczas dodawania subskrypcji",
"form.integration.rssbridge_url": "Adres URL serwera RSS-Bridge", "form.integration.rssbridge_url": "Adres URL serwera RSS-Bridge",
"form.integration.ntfy_activate": "Przesyłaj wpisy do ntfy", "form.integration.ntfy_activate": "Przesyłaj wpisy do ntfy",

View file

@ -342,6 +342,7 @@
"form.feed.label.keeplist_rules": "Regras de permissão", "form.feed.label.keeplist_rules": "Regras de permissão",
"form.feed.label.urlrewrite_rules": "Regras de reescrita de URL", "form.feed.label.urlrewrite_rules": "Regras de reescrita de URL",
"form.feed.label.apprise_service_urls": "Comma separated list of Apprise service URLs", "form.feed.label.apprise_service_urls": "Comma separated list of Apprise service URLs",
"form.feed.label.webhook_url": "Override webhook url",
"form.feed.label.ignore_http_cache": "Ignorar cache HTTP", "form.feed.label.ignore_http_cache": "Ignorar cache HTTP",
"form.feed.label.allow_self_signed_certificates": "Permitir certificados autoassinados ou inválidos", "form.feed.label.allow_self_signed_certificates": "Permitir certificados autoassinados ou inválidos",
"form.feed.label.disable_http2": "Disable HTTP/2 to avoid fingerprinting", "form.feed.label.disable_http2": "Disable HTTP/2 to avoid fingerprinting",
@ -501,9 +502,9 @@
"form.integration.shaarli_activate": "Save articles to Shaarli", "form.integration.shaarli_activate": "Save articles to Shaarli",
"form.integration.shaarli_endpoint": "Shaarli URL", "form.integration.shaarli_endpoint": "Shaarli URL",
"form.integration.shaarli_api_secret": "Shaarli API Secret", "form.integration.shaarli_api_secret": "Shaarli API Secret",
"form.integration.webhook_activate": "Enable Webhook", "form.integration.webhook_activate": "Enable Webhooks",
"form.integration.webhook_url": "Webhook URL", "form.integration.webhook_url": "Default Webhook URL",
"form.integration.webhook_secret": "Webhook Secret", "form.integration.webhook_secret": "Webhooks Secret",
"form.integration.rssbridge_activate": "Check RSS-Bridge when adding subscriptions", "form.integration.rssbridge_activate": "Check RSS-Bridge when adding subscriptions",
"form.integration.rssbridge_url": "RSS-Bridge server URL", "form.integration.rssbridge_url": "RSS-Bridge server URL",
"form.integration.ntfy_activate": "Push entries to ntfy", "form.integration.ntfy_activate": "Push entries to ntfy",

View file

@ -352,6 +352,7 @@
"form.feed.label.keeplist_rules": "Правила белого списка", "form.feed.label.keeplist_rules": "Правила белого списка",
"form.feed.label.urlrewrite_rules": "Правила перезаписи URL", "form.feed.label.urlrewrite_rules": "Правила перезаписи URL",
"form.feed.label.apprise_service_urls": "Список ссылок сервисов Apprise, разделенный запятой", "form.feed.label.apprise_service_urls": "Список ссылок сервисов Apprise, разделенный запятой",
"form.feed.label.webhook_url": "Override webhook url",
"form.feed.label.ignore_http_cache": "Игнорировать HTTP кеш", "form.feed.label.ignore_http_cache": "Игнорировать HTTP кеш",
"form.feed.label.allow_self_signed_certificates": "Разрешить самоподписанные или недействительные сертификаты", "form.feed.label.allow_self_signed_certificates": "Разрешить самоподписанные или недействительные сертификаты",
"form.feed.label.disable_http2": "Disable HTTP/2 to avoid fingerprinting", "form.feed.label.disable_http2": "Disable HTTP/2 to avoid fingerprinting",

View file

@ -154,6 +154,7 @@
"form.feed.fieldset.rules": "Kurallar", "form.feed.fieldset.rules": "Kurallar",
"form.feed.label.allow_self_signed_certificates": "Kendinden imzalı veya geçersiz sertifikalara izin ver", "form.feed.label.allow_self_signed_certificates": "Kendinden imzalı veya geçersiz sertifikalara izin ver",
"form.feed.label.apprise_service_urls": "Apprise hizmet URL'lerinin virgülle ayrılmış listesi", "form.feed.label.apprise_service_urls": "Apprise hizmet URL'lerinin virgülle ayrılmış listesi",
"form.feed.label.webhook_url": "Override webhook url",
"form.feed.label.blocklist_rules": "Engelleme Kuralları", "form.feed.label.blocklist_rules": "Engelleme Kuralları",
"form.feed.label.category": "Kategori", "form.feed.label.category": "Kategori",
"form.feed.label.cookie": "Çerezleri Ayarla", "form.feed.label.cookie": "Çerezleri Ayarla",
@ -270,8 +271,8 @@
"form.integration.wallabag_password": "Wallabag Parolası", "form.integration.wallabag_password": "Wallabag Parolası",
"form.integration.wallabag_username": "Wallabag Kullanıcı Adı", "form.integration.wallabag_username": "Wallabag Kullanıcı Adı",
"form.integration.webhook_activate": "Webhook'u etkinleştir", "form.integration.webhook_activate": "Webhook'u etkinleştir",
"form.integration.webhook_secret": "Webhook Secret", "form.integration.webhook_secret": "Webhooks Secret",
"form.integration.webhook_url": "Webhook URL", "form.integration.webhook_url": "Default Webhook URL",
"form.integration.ntfy_activate": "Push entries to ntfy", "form.integration.ntfy_activate": "Push entries to ntfy",
"form.integration.ntfy_topic": "Ntfy topic", "form.integration.ntfy_topic": "Ntfy topic",
"form.integration.ntfy_url": "Ntfy URL (optional, default is ntfy.sh)", "form.integration.ntfy_url": "Ntfy URL (optional, default is ntfy.sh)",

View file

@ -352,6 +352,7 @@
"form.feed.label.keeplist_rules": "Правила дозволення", "form.feed.label.keeplist_rules": "Правила дозволення",
"form.feed.label.urlrewrite_rules": "Правила перезапису URL-адрес", "form.feed.label.urlrewrite_rules": "Правила перезапису URL-адрес",
"form.feed.label.apprise_service_urls": "Comma separated list of Apprise service URLs", "form.feed.label.apprise_service_urls": "Comma separated list of Apprise service URLs",
"form.feed.label.webhook_url": "Override webhook url",
"form.feed.label.ignore_http_cache": "Ігнорувати кеш HTTP", "form.feed.label.ignore_http_cache": "Ігнорувати кеш HTTP",
"form.feed.label.allow_self_signed_certificates": "Дозволити сертифікати з власним підписом або недійсні", "form.feed.label.allow_self_signed_certificates": "Дозволити сертифікати з власним підписом або недійсні",
"form.feed.label.disable_http2": "Disable HTTP/2 to avoid fingerprinting", "form.feed.label.disable_http2": "Disable HTTP/2 to avoid fingerprinting",
@ -511,9 +512,9 @@
"form.integration.shaarli_activate": "Save articles to Shaarli", "form.integration.shaarli_activate": "Save articles to Shaarli",
"form.integration.shaarli_endpoint": "Shaarli URL", "form.integration.shaarli_endpoint": "Shaarli URL",
"form.integration.shaarli_api_secret": "Shaarli API Secret", "form.integration.shaarli_api_secret": "Shaarli API Secret",
"form.integration.webhook_activate": "Enable Webhook", "form.integration.webhook_activate": "Enable Webhooks",
"form.integration.webhook_url": "Webhook URL", "form.integration.webhook_url": "Default Webhook URL",
"form.integration.webhook_secret": "Webhook Secret", "form.integration.webhook_secret": "Webhooks Secret",
"form.integration.rssbridge_activate": "Check RSS-Bridge when adding subscriptions", "form.integration.rssbridge_activate": "Check RSS-Bridge when adding subscriptions",
"form.integration.rssbridge_url": "RSS-Bridge server URL", "form.integration.rssbridge_url": "RSS-Bridge server URL",
"form.integration.ntfy_activate": "Push entries to ntfy", "form.integration.ntfy_activate": "Push entries to ntfy",

View file

@ -332,6 +332,7 @@
"form.feed.label.keeplist_rules": "保留规则", "form.feed.label.keeplist_rules": "保留规则",
"form.feed.label.urlrewrite_rules": "URL 重写规则", "form.feed.label.urlrewrite_rules": "URL 重写规则",
"form.feed.label.apprise_service_urls": "使用逗号分隔的 Apprise 服务 URL 列表", "form.feed.label.apprise_service_urls": "使用逗号分隔的 Apprise 服务 URL 列表",
"form.feed.label.webhook_url": "Override webhook url",
"form.feed.label.ignore_http_cache": "忽略 HTTP 缓存", "form.feed.label.ignore_http_cache": "忽略 HTTP 缓存",
"form.feed.label.allow_self_signed_certificates": "允许自签名证书或无效证书", "form.feed.label.allow_self_signed_certificates": "允许自签名证书或无效证书",
"form.feed.label.disable_http2": "关闭 HTTP/2 避免记录指纹", "form.feed.label.disable_http2": "关闭 HTTP/2 避免记录指纹",
@ -491,9 +492,9 @@
"form.integration.shaarli_activate": "保存文章到 Shaarli", "form.integration.shaarli_activate": "保存文章到 Shaarli",
"form.integration.shaarli_endpoint": "Shaarli URL", "form.integration.shaarli_endpoint": "Shaarli URL",
"form.integration.shaarli_api_secret": "Shaarli API 密钥", "form.integration.shaarli_api_secret": "Shaarli API 密钥",
"form.integration.webhook_activate": "启用 Webhook", "form.integration.webhook_activate": "启用 Webhooks",
"form.integration.webhook_url": "Webhook URL", "form.integration.webhook_url": "Default Webhook URL",
"form.integration.webhook_secret": "Webhook 密钥", "form.integration.webhook_secret": "Webhooks 密钥",
"form.integration.rssbridge_activate": "添加订阅时检查 RSS-Bridge", "form.integration.rssbridge_activate": "添加订阅时检查 RSS-Bridge",
"form.integration.rssbridge_url": "RSS-Bridge 服务器 URL", "form.integration.rssbridge_url": "RSS-Bridge 服务器 URL",
"form.integration.ntfy_activate": "推送条目到ntfy", "form.integration.ntfy_activate": "推送条目到ntfy",

View file

@ -332,6 +332,7 @@
"form.feed.label.keeplist_rules": "保留規則", "form.feed.label.keeplist_rules": "保留規則",
"form.feed.label.urlrewrite_rules": "網址重寫規則", "form.feed.label.urlrewrite_rules": "網址重寫規則",
"form.feed.label.apprise_service_urls": "使用逗號分隔的 Apprise 服務網址列表", "form.feed.label.apprise_service_urls": "使用逗號分隔的 Apprise 服務網址列表",
"form.feed.label.webhook_url": "Override webhook url",
"form.feed.label.ignore_http_cache": "忽略 HTTP 快取", "form.feed.label.ignore_http_cache": "忽略 HTTP 快取",
"form.feed.label.allow_self_signed_certificates": "允許自簽或無效的憑證", "form.feed.label.allow_self_signed_certificates": "允許自簽或無效的憑證",
"form.feed.label.disable_http2": "停用 HTTP/2 以避免指紋追蹤", "form.feed.label.disable_http2": "停用 HTTP/2 以避免指紋追蹤",
@ -491,9 +492,9 @@
"form.integration.shaarli_activate": "儲存文章到 Shaarli", "form.integration.shaarli_activate": "儲存文章到 Shaarli",
"form.integration.shaarli_endpoint": "Shaarli 網址", "form.integration.shaarli_endpoint": "Shaarli 網址",
"form.integration.shaarli_api_secret": "Shaarli API 金鑰", "form.integration.shaarli_api_secret": "Shaarli API 金鑰",
"form.integration.webhook_activate": "啟用 Webhook", "form.integration.webhook_activate": "啟用 Webhooks",
"form.integration.webhook_url": "Webhook 網址", "form.integration.webhook_url": "Default Webhook 網址",
"form.integration.webhook_secret": "Webhook Secret", "form.integration.webhook_secret": "Webhooks Secret",
"form.integration.rssbridge_activate": "新增訂閱時檢查 RSS-Bridge", "form.integration.rssbridge_activate": "新增訂閱時檢查 RSS-Bridge",
"form.integration.rssbridge_url": "RSS-Bridge 伺服器的網址", "form.integration.rssbridge_url": "RSS-Bridge 伺服器的網址",
"form.integration.ntfy_activate": "推送文章到 Ntfy", "form.integration.ntfy_activate": "推送文章到 Ntfy",

View file

@ -53,6 +53,7 @@ type Feed struct {
HideGlobally bool `json:"hide_globally"` HideGlobally bool `json:"hide_globally"`
DisableHTTP2 bool `json:"disable_http2"` DisableHTTP2 bool `json:"disable_http2"`
AppriseServiceURLs string `json:"apprise_service_urls"` AppriseServiceURLs string `json:"apprise_service_urls"`
WebhookURL string `json:"webhook_url"`
NtfyEnabled bool `json:"ntfy_enabled"` NtfyEnabled bool `json:"ntfy_enabled"`
NtfyPriority int `json:"ntfy_priority"` NtfyPriority int `json:"ntfy_priority"`

View file

@ -246,11 +246,12 @@ func (s *Storage) CreateFeed(feed *model.Feed) error {
url_rewrite_rules, url_rewrite_rules,
no_media_player, no_media_player,
apprise_service_urls, apprise_service_urls,
webhook_url,
disable_http2, disable_http2,
description description
) )
VALUES VALUES
($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20, $21, $22, $23, $24, $25, $26) ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20, $21, $22, $23, $24, $25, $26, $27)
RETURNING RETURNING
id id
` `
@ -280,6 +281,7 @@ func (s *Storage) CreateFeed(feed *model.Feed) error {
feed.UrlRewriteRules, feed.UrlRewriteRules,
feed.NoMediaPlayer, feed.NoMediaPlayer,
feed.AppriseServiceURLs, feed.AppriseServiceURLs,
feed.WebhookURL,
feed.DisableHTTP2, feed.DisableHTTP2,
feed.Description, feed.Description,
).Scan(&feed.ID) ).Scan(&feed.ID)
@ -354,12 +356,13 @@ func (s *Storage) UpdateFeed(feed *model.Feed) (err error) {
url_rewrite_rules=$25, url_rewrite_rules=$25,
no_media_player=$26, no_media_player=$26,
apprise_service_urls=$27, apprise_service_urls=$27,
disable_http2=$28, webhook_url=$28,
description=$29, disable_http2=$29,
ntfy_enabled=$30, description=$30,
ntfy_priority=$31 ntfy_enabled=$31,
ntfy_priority=$32
WHERE WHERE
id=$32 AND user_id=$33 id=$33 AND user_id=$34
` `
_, err = s.db.Exec(query, _, err = s.db.Exec(query,
feed.FeedURL, feed.FeedURL,
@ -389,6 +392,7 @@ func (s *Storage) UpdateFeed(feed *model.Feed) (err error) {
feed.UrlRewriteRules, feed.UrlRewriteRules,
feed.NoMediaPlayer, feed.NoMediaPlayer,
feed.AppriseServiceURLs, feed.AppriseServiceURLs,
feed.WebhookURL,
feed.DisableHTTP2, feed.DisableHTTP2,
feed.Description, feed.Description,
feed.NtfyEnabled, feed.NtfyEnabled,

View file

@ -165,6 +165,7 @@ func (f *FeedQueryBuilder) GetFeeds() (model.Feeds, error) {
fi.icon_id, fi.icon_id,
u.timezone, u.timezone,
f.apprise_service_urls, f.apprise_service_urls,
f.webhook_url,
f.disable_http2, f.disable_http2,
f.ntfy_enabled, f.ntfy_enabled,
f.ntfy_priority f.ntfy_priority
@ -235,6 +236,7 @@ func (f *FeedQueryBuilder) GetFeeds() (model.Feeds, error) {
&iconID, &iconID,
&tz, &tz,
&feed.AppriseServiceURLs, &feed.AppriseServiceURLs,
&feed.WebhookURL,
&feed.DisableHTTP2, &feed.DisableHTTP2,
&feed.NtfyEnabled, &feed.NtfyEnabled,
&feed.NtfyPriority, &feed.NtfyPriority,

View file

@ -209,6 +209,16 @@
</select> </select>
</details> </details>
<details>
<summary>Webhook</summary>
<div class="form-label-row">
<label for="form-webhook-url">
{{ t "form.feed.label.webhook_url" }}
</label>
</div>
<input type="url" name="webhook_url" id="form-webhook-url" value="{{ .form.WebhookURL }}" spellcheck="false">
</details>
<div class="buttons"> <div class="buttons">
<button type="submit" class="button button-primary" data-label-loading="{{ t "form.submit.saving" }}">{{ t "action.update" }}</button> <button type="submit" class="button button-primary" data-label-loading="{{ t "form.submit.saving" }}">{{ t "action.update" }}</button>
</div> </div>

View file

@ -63,6 +63,7 @@ func (h *handler) showEditFeedPage(w http.ResponseWriter, r *http.Request) {
HideGlobally: feed.HideGlobally, HideGlobally: feed.HideGlobally,
CategoryHidden: feed.Category.HideGlobally, CategoryHidden: feed.Category.HideGlobally,
AppriseServiceURLs: feed.AppriseServiceURLs, AppriseServiceURLs: feed.AppriseServiceURLs,
WebhookURL: feed.WebhookURL,
DisableHTTP2: feed.DisableHTTP2, DisableHTTP2: feed.DisableHTTP2,
NtfyEnabled: feed.NtfyEnabled, NtfyEnabled: feed.NtfyEnabled,
NtfyPriority: feed.NtfyPriority, NtfyPriority: feed.NtfyPriority,

View file

@ -35,6 +35,7 @@ type FeedForm struct {
HideGlobally bool HideGlobally bool
CategoryHidden bool // Category has "hide_globally" CategoryHidden bool // Category has "hide_globally"
AppriseServiceURLs string AppriseServiceURLs string
WebhookURL string
DisableHTTP2 bool DisableHTTP2 bool
NtfyEnabled bool NtfyEnabled bool
NtfyPriority int NtfyPriority int
@ -66,6 +67,7 @@ func (f FeedForm) Merge(feed *model.Feed) *model.Feed {
feed.NoMediaPlayer = f.NoMediaPlayer feed.NoMediaPlayer = f.NoMediaPlayer
feed.HideGlobally = f.HideGlobally feed.HideGlobally = f.HideGlobally
feed.AppriseServiceURLs = f.AppriseServiceURLs feed.AppriseServiceURLs = f.AppriseServiceURLs
feed.WebhookURL = f.WebhookURL
feed.DisableHTTP2 = f.DisableHTTP2 feed.DisableHTTP2 = f.DisableHTTP2
feed.NtfyEnabled = f.NtfyEnabled feed.NtfyEnabled = f.NtfyEnabled
feed.NtfyPriority = f.NtfyPriority feed.NtfyPriority = f.NtfyPriority
@ -105,6 +107,7 @@ func NewFeedForm(r *http.Request) *FeedForm {
NoMediaPlayer: r.FormValue("no_media_player") == "1", NoMediaPlayer: r.FormValue("no_media_player") == "1",
HideGlobally: r.FormValue("hide_globally") == "1", HideGlobally: r.FormValue("hide_globally") == "1",
AppriseServiceURLs: r.FormValue("apprise_service_urls"), AppriseServiceURLs: r.FormValue("apprise_service_urls"),
WebhookURL: r.FormValue("webhook_url"),
DisableHTTP2: r.FormValue("disable_http2") == "1", DisableHTTP2: r.FormValue("disable_http2") == "1",
NtfyEnabled: r.FormValue("ntfy_enabled") == "1", NtfyEnabled: r.FormValue("ntfy_enabled") == "1",
NtfyPriority: ntfyPriority, NtfyPriority: ntfyPriority,