Include "preview" in url preview user agent string. (fixes #303)

This is required for fixupx.com to serve previews instead of redirecting
This commit is contained in:
dasha_uwu
2026-02-12 17:21:00 +05:00
committed by Jason Volk
parent 994e1d12a7
commit 31fcbe86fc

View File

@@ -62,7 +62,11 @@ impl crate::Service for Service {
fn make_clients(services: &Services) -> Result<Clients> {
macro_rules! with {
($builder:ident => $make:expr) => {{
let $builder = base(&services.config)?;
let $builder = base(&services.config, None)?;
$make.build()?
}};
($name:literal, $builder:ident => $make:expr) => {{
let $builder = base(&services.config, Some($name))?;
$make.build()?
}};
}
@@ -70,7 +74,7 @@ fn make_clients(services: &Services) -> Result<Clients> {
Ok(Clients {
default: with!(cb => cb.dns_resolver(Arc::clone(&services.resolver.resolver))),
url_preview: with!(cb => {
url_preview: with!("preview", cb => {
let interface = &services
.config
.url_preview_bound_interface;
@@ -149,7 +153,14 @@ fn make_clients(services: &Services) -> Result<Clients> {
})
}
fn base(config: &Config) -> Result<ClientBuilder> {
fn base(config: &Config, name: Option<&str>) -> Result<ClientBuilder> {
let mut user_agent = tuwunel_core::version::user_agent();
let user_agent_with_name;
if let Some(name) = name {
user_agent_with_name = format!("{user_agent} {name}");
user_agent = &user_agent_with_name;
}
let mut builder = Client::builder()
.hickory_dns(true)
.connect_timeout(Duration::from_secs(config.request_conn_timeout))
@@ -157,7 +168,7 @@ fn base(config: &Config) -> Result<ClientBuilder> {
.timeout(Duration::from_secs(config.request_total_timeout))
.pool_idle_timeout(Duration::from_secs(config.request_idle_timeout))
.pool_max_idle_per_host(config.request_idle_per_host.into())
.user_agent(tuwunel_core::version::user_agent())
.user_agent(user_agent)
.redirect(redirect::Policy::limited(6))
.danger_accept_invalid_certs(config.allow_invalid_tls_certificates)
.tls_certs_merge(