2023-02-08 22:22:20 +01:00
|
|
|
use actix_web::{get, routes, web, HttpRequest, HttpResponse, Responder};
|
2023-02-08 22:14:57 +01:00
|
|
|
use askama::Template;
|
2023-02-08 22:22:20 +01:00
|
|
|
use std::net::SocketAddr;
|
2023-02-08 22:14:57 +01:00
|
|
|
|
|
|
|
use crate::config::Config;
|
|
|
|
|
|
|
|
#[routes]
|
|
|
|
#[get("/.well-known/security.txt")]
|
|
|
|
#[get("/security.txt")]
|
|
|
|
pub async fn security(req: HttpRequest, config: web::Data<Config>) -> 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,
|
|
|
|
}
|
|
|
|
|
2023-02-08 22:22:20 +01:00
|
|
|
fn get_security(config: Config, addr: Option<SocketAddr>) -> std::string::String {
|
2023-02-08 22:14:57 +01:00
|
|
|
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()
|
|
|
|
}
|
2023-02-08 22:22:20 +01:00
|
|
|
|
|
|
|
#[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("/")
|
|
|
|
}
|