From 4a25c377c4c625bf7effb7595d8e7ad1249a13ae Mon Sep 17 00:00:00 2001 From: AINDUSTRIES Date: Fri, 28 Nov 2025 22:44:09 +0100 Subject: [PATCH] Added an "ip" page --- assets/css/ip.css | 13 +++++++++++++ src/main.rs | 6 ++++-- src/pages/ip.rs | 34 ++++++++++++++++++++++++++++++++++ src/pages/mod.rs | 1 + 4 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 assets/css/ip.css create mode 100644 src/pages/ip.rs diff --git a/assets/css/ip.css b/assets/css/ip.css new file mode 100644 index 0000000..65719f8 --- /dev/null +++ b/assets/css/ip.css @@ -0,0 +1,13 @@ +.ip { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} + +.ip h1 { + font-family: 'Indie Flower', cursive; + font-size: 60px; + text-align: center; + color: var(--clr-primary-a60); +} \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index be83a75..d5d5b54 100644 --- a/src/main.rs +++ b/src/main.rs @@ -16,6 +16,7 @@ use middleware::MimeType; use pages::{ files::file, index, + ip::ip, music::music, projects::{project, projects}, }; @@ -111,7 +112,8 @@ async fn main() { .service(index) .service(projects) .service(project) - .service(music), + .service(music) + .service(ip), ) }) .bind(bind_address) @@ -119,7 +121,7 @@ async fn main() { match server.run().await { Ok(_) => {} Err(e) => { - eprintln!("An error occurred: {e}"); + println!("An error occurred: {e}"); } } } diff --git a/src/pages/ip.rs b/src/pages/ip.rs new file mode 100644 index 0000000..90e585c --- /dev/null +++ b/src/pages/ip.rs @@ -0,0 +1,34 @@ +use crate::html::elements::{Heading, Link}; +use crate::html::layouts::Division; +use crate::html::pages::BasePage; +use crate::html::{Render, boxed_vec}; +use actix_web::HttpRequest; +use actix_web::{Responder, get}; + +#[get("/ip")] +async fn ip(request: HttpRequest) -> impl Responder { + let info = request.connection_info(); + let ip = info.realip_remote_addr(); + + let text = Heading::builder() + .text(format!( + "Your IP address is {}
Don't ask how I know.", + ip.unwrap_or("?") + )) + .build(); + let div = Division::builder() + .classes(vec!["ip"]) + .elements(boxed_vec![text]) + .build(); + + let css = Link::builder() + .rel("stylesheet") + .href("/static/css/ip.css") + .build(); + BasePage::builder() + .title("Your IP address") + .head(boxed_vec![css]) + .body(boxed_vec![div]) + .build() + .render() +} diff --git a/src/pages/mod.rs b/src/pages/mod.rs index ef05d1f..b23f4f1 100644 --- a/src/pages/mod.rs +++ b/src/pages/mod.rs @@ -1,4 +1,5 @@ pub(crate) mod files; +pub(crate) mod ip; pub(crate) mod music; pub(crate) mod projects;