use actix_web::{get, routes, web, HttpRequest, HttpResponse, Responder}; use askama::Template; use std::net::SocketAddr; use crate::config::Config; #[routes] #[get("/.well-known/security.txt")] #[get("/security.txt")] pub async fn security(req: HttpRequest, config: web::Data) -> impl Responder { HttpResponse::Ok().body(get_security(config.get_ref().clone(), req.peer_addr())) } #[derive(Template)] #[template(path = "../templates/security.txt")] struct SecurityTemplate { contact: String, pref_lang: String, url: String, } fn get_security(config: Config, addr: Option) -> std::string::String { let data = SecurityTemplate { contact: config.mail.unwrap_or_default(), pref_lang: config.lang.unwrap_or_default(), url: format!("{}/.well-known/security.txt", addr.unwrap().ip()), }; data.render().unwrap() } #[get("/humans.txt")] pub async fn humans() -> impl Responder { // TODO actix_web::web::Redirect::to("/") } #[get("/robots.txt")] pub async fn robots() -> impl Responder { // TODO actix_web::web::Redirect::to("/") } #[get("/sitemap.xml")] pub async fn sitemap() -> impl Responder { // TODO actix_web::web::Redirect::to("/") }