diff --git a/Cargo.toml b/Cargo.toml index 01dfe8c..d707c35 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,7 +19,7 @@ tokio-rustls = { version = "0.14", features = ["dangerous_configuration"], optio webpki = { version = "0.21.0", optional = true } webpki-roots = { version = "0.20", optional = true } tokio = { version = "0.2", features = ["full"], optional = true } -async-tls = { version = "0.9.0", default-features = false, optional = true } +async-tls = { default-features = false, optional = true, git = "https://github.com/Xe/async-tls" } async-std = { version = "1.6", optional = true } log = "0.4" url = "2" diff --git a/site/src/main.rs b/site/src/main.rs index 9f28dfa..95e8e10 100644 --- a/site/src/main.rs +++ b/site/src/main.rs @@ -1,5 +1,6 @@ use async_std::task; use maj::{ + gemini::Builder, route, seg, server::{Error, Handler as MajHandler, Request}, split, Response, @@ -97,8 +98,16 @@ async fn majc() -> Result { Ok(Response::gemini(msg.to_vec())) } -async fn need_cert() -> Result { - Ok(Response::need_cert("test")) +async fn need_cert(req: Request) -> Result { + match req.certs { + None => Ok(Response::need_cert("test")), + Some(certs) => Ok(Response::render( + Builder::new() + .heading(1, "Cert test") + .text(format!("{:?}", certs)) + .build(), + )), + } } #[async_trait::async_trait] @@ -117,7 +126,7 @@ impl MajHandler for Handler { route!(req.url.path(), { (/) => index().await; - (/"cert") => need_cert().await; + (/"cert") => need_cert(req).await; (/"majc") => majc().await; }); diff --git a/src/server/mod.rs b/src/server/mod.rs index 1ee016b..7d2aba5 100644 --- a/src/server/mod.rs +++ b/src/server/mod.rs @@ -90,7 +90,7 @@ async fn handle_request( let req = Request { url: url, - certs: None, + certs: stream.peer_certificates(), }; handle(h, req, &mut stream, addr).await; }