introduce ip based routing

This commit is contained in:
fabolous005 2024-12-02 22:26:21 +01:00
parent 47d9494e83
commit f13954efab
3 changed files with 71 additions and 2 deletions

View File

@ -1,5 +1,6 @@
[default]
template_dir = "static/html"
ip_header = "Proxy-Real-IP"
[debug]
address = "127.0.0.1"

View File

@ -3,6 +3,16 @@
use rocket::form::Form;
use rocket_dyn_templates::{Template, context};
use rocket::fs::FileServer;
use std::net::{IpAddr, Ipv4Addr};
fn ip_to_ipv4(ip: IpAddr) -> Option<Ipv4Addr> {
if let IpAddr::V4(v4_addr) = ip {
Some(v4_addr)
} else {
None
}
}
#[derive(FromForm)]
struct LoginData {
@ -25,9 +35,18 @@ fn login(login_data: Form<LoginData>) -> Template {
}
#[get("/")]
fn index() -> Template {
fn index(ip: IpAddr) -> Template {
if let Some(ipv4) = ip_to_ipv4(ip) {
if ipv4.is_private() {
Template::render("private_index", context! {})
} else {
Template::render("index", context! {})
}
} else {
Template::render("index", context! {})
}
}
#[launch]
fn rocket() -> _ {

File diff suppressed because one or more lines are too long