mirror of
https://codeberg.org/slatian/service.echoip-slatecave.git
synced 2025-07-16 14:03:28 +02:00
Persist resover choice using a cookie
This commit is contained in:
14
src/main.rs
14
src/main.rs
@ -384,11 +384,22 @@ async fn settings_query_middleware<B>(
|
||||
Query(query): Query<SettingsQuery>,
|
||||
Extension(config): Extension<config::EchoIpServiceConfig>,
|
||||
Extension(derived_config): Extension<DerivedConfiguration>,
|
||||
cookie_header: Option<TypedHeader<headers::Cookie>>,
|
||||
user_agent_header: Option<TypedHeader<headers::UserAgent>>,
|
||||
mut req: Request<B>,
|
||||
next: Next<B>
|
||||
) -> Response {
|
||||
let mut format = query.format;
|
||||
let mut dns_resolver_id = config.dns.default_resolver;
|
||||
|
||||
if let Some(resolver_id) = query.dns {
|
||||
dns_resolver_id = resolver_id;
|
||||
} else if let Some(cookie_header) = cookie_header {
|
||||
if let Some(resolver_id) = cookie_header.0.get("dns_resolver") {
|
||||
dns_resolver_id = resolver_id.to_string();
|
||||
}
|
||||
}
|
||||
|
||||
// Try to guess type from user agent
|
||||
if format.is_none() {
|
||||
if let Some(TypedHeader(user_agent)) = user_agent_header {
|
||||
@ -407,8 +418,9 @@ async fn settings_query_middleware<B>(
|
||||
format: format.unwrap_or(ResponseFormat::TextHtml),
|
||||
lang: query.lang.unwrap_or("en".to_string()),
|
||||
available_dns_resolvers: derived_config.dns_resolver_selectables,
|
||||
dns_resolver: dns_resolver_id.clone(),
|
||||
},
|
||||
dns_resolver_id: query.dns.unwrap_or(config.dns.default_resolver),
|
||||
dns_resolver_id: dns_resolver_id,
|
||||
});
|
||||
next.run(req).await
|
||||
}
|
||||
|
Reference in New Issue
Block a user