introduce ip based routing
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
[default]
|
||||
template_dir = "static/html"
|
||||
ip_header = "Proxy-Real-IP"
|
||||
|
||||
[debug]
|
||||
address = "127.0.0.1"
|
||||
|
||||
+20
-1
@@ -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
Reference in New Issue
Block a user