From 40996a660218656aa7cf66d0f8d1dbc50b960fb1 Mon Sep 17 00:00:00 2001 From: Trash Panda Date: Fri, 13 Feb 2026 18:33:39 -0700 Subject: [PATCH] feat(core): Add config option for the url preview user agent --- conduwuit-example.toml | 6 ++++++ src/core/config/mod.rs | 7 +++++++ src/service/client/mod.rs | 6 ++++++ 3 files changed, 19 insertions(+) diff --git a/conduwuit-example.toml b/conduwuit-example.toml index 025f9e63..841ee4a3 100644 --- a/conduwuit-example.toml +++ b/conduwuit-example.toml @@ -1474,6 +1474,12 @@ # #url_preview_check_root_domain = false +# User agent that is used specifically when downloading url previews. +# +# example: "continuwuity (bot; +https://forgejo.ellis.link/continuwuation/continuwuity)" +# +#url_preview_user_agent = "continuwuity/$VERSION ($VERSION_TAG)" + # List of forbidden room aliases and room IDs as strings of regex # patterns. # diff --git a/src/core/config/mod.rs b/src/core/config/mod.rs index 22793fc1..f2813b04 100644 --- a/src/core/config/mod.rs +++ b/src/core/config/mod.rs @@ -1696,6 +1696,13 @@ pub struct Config { #[serde(default)] pub url_preview_check_root_domain: bool, + /// User agent that is used specifically when downloading url previews. + /// + /// example: "continuwuity (bot; +https://forgejo.ellis.link/continuwuation/continuwuity)" + /// + /// default: "continuwuity/$VERSION ($VERSION_TAG)" + pub url_preview_user_agent: Option, + /// List of forbidden room aliases and room IDs as strings of regex /// patterns. /// diff --git a/src/service/client/mod.rs b/src/service/client/mod.rs index 46ba89c5..d109ab6a 100644 --- a/src/service/client/mod.rs +++ b/src/service/client/mod.rs @@ -36,6 +36,11 @@ impl crate::Service for Service { .clone() .and_then(Either::right); + let url_preview_user_agent = config + .url_preview_user_agent + .clone() + .unwrap_or_else(|| conduwuit::version::user_agent().to_string()); + Ok(Arc::new(Self { default: base(config)? .dns_resolver(resolver.resolver.clone()) @@ -49,6 +54,7 @@ impl crate::Service for Service { .dns_resolver(resolver.resolver.clone()) .timeout(Duration::from_secs(config.url_preview_timeout)) .redirect(redirect::Policy::limited(3)) + .user_agent(url_preview_user_agent) .build()?, extern_media: base(config)?