mirror of
				https://codeberg.org/slatian/service.echoip-slatecave.git
				synced 2025-11-04 02:28:58 +01:00 
			
		
		
		
	Added echoing of user agents
This commit is contained in:
		
							
								
								
									
										20
									
								
								src/main.rs
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								src/main.rs
									
									
									
									
									
								
							@@ -225,6 +225,7 @@ async fn main() {
 | 
			
		||||
	    .route("/dig/:name", get(handle_dig_route_with_path))
 | 
			
		||||
	    .route("/ip", get(handle_ip_route))
 | 
			
		||||
	    .route("/ip/:address", get(handle_ip_route_with_path))
 | 
			
		||||
	    .route("/ua", get(user_agent_handler))
 | 
			
		||||
    	.route("/hi", get(hello_world_handler))
 | 
			
		||||
    	.with_state(shared_state)
 | 
			
		||||
    	.layer(
 | 
			
		||||
@@ -271,7 +272,6 @@ async fn format_and_language_middleware<B>(
 | 
			
		||||
	next.run(req).await
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[axum::debug_handler]
 | 
			
		||||
async fn hello_world_handler(
 | 
			
		||||
	State(arc_state): State<Arc<ServiceSharedState>>,
 | 
			
		||||
	Extension(settings): Extension<TemplateSettings>,
 | 
			
		||||
@@ -287,9 +287,16 @@ async fn hello_world_handler(
 | 
			
		||||
	).await
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
async fn user_agent_handler(
 | 
			
		||||
	TypedHeader(user_agent): TypedHeader<headers::UserAgent>,
 | 
			
		||||
) -> String {
 | 
			
		||||
	user_agent.to_string()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
async fn handle_default_route(
 | 
			
		||||
	State(arc_state): State<Arc<ServiceSharedState>>,
 | 
			
		||||
	Extension(settings): Extension<TemplateSettings>,
 | 
			
		||||
	user_agent_header: Option<TypedHeader<headers::UserAgent>>,
 | 
			
		||||
	SecureClientIp(address): SecureClientIp
 | 
			
		||||
) -> Response {
 | 
			
		||||
 | 
			
		||||
@@ -301,9 +308,18 @@ async fn handle_default_route(
 | 
			
		||||
 | 
			
		||||
	let result = get_ip_result(&ip_query, &settings.lang, &state).await;
 | 
			
		||||
 | 
			
		||||
	let user_agent: Option<String> = match user_agent_header {
 | 
			
		||||
		Some(TypedHeader(user_agent)) => Some(user_agent.to_string()),
 | 
			
		||||
		None => None,
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	state.templating_engine.render_view(
 | 
			
		||||
		&settings,
 | 
			
		||||
		&View::Index{query: ip_query, result: result}
 | 
			
		||||
		&View::Index{
 | 
			
		||||
			query: ip_query,
 | 
			
		||||
			result: result,
 | 
			
		||||
			user_agent: user_agent,
 | 
			
		||||
		}
 | 
			
		||||
	).await
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user