diff options
author | David Pedersen <david.pdrsn@gmail.com> | 2023-11-23 12:03:03 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-23 11:03:03 +0000 |
commit | 43b14a5f02d6be984416e094aaca79b84ac48792 (patch) | |
tree | 3e9b993452af0b54172664f4171732a31d9a1ea9 /examples/low-level-rustls | |
parent | 2f4720907ab06256b9955bb3ac776dffb3ad2c45 (diff) |
Update to latest versions of hyper and http-body (#1882)
Co-authored-by: Michael Scofield <mscofield0@tutanota.com>
Co-authored-by: Jonas Platte <jplatte+git@posteo.de>
Diffstat (limited to 'examples/low-level-rustls')
-rw-r--r-- | examples/low-level-rustls/Cargo.toml | 2 | ||||
-rw-r--r-- | examples/low-level-rustls/src/main.rs | 195 |
2 files changed, 101 insertions, 96 deletions
diff --git a/examples/low-level-rustls/Cargo.toml b/examples/low-level-rustls/Cargo.toml index 91069128..08e28230 100644 --- a/examples/low-level-rustls/Cargo.toml +++ b/examples/low-level-rustls/Cargo.toml @@ -7,7 +7,7 @@ publish = false [dependencies] axum = { path = "../../axum" } futures-util = { version = "0.3", default-features = false, features = ["alloc"] } -hyper = { version = "0.14", features = ["full"] } +hyper = { version = "1.0.0", features = ["full"] } rustls-pemfile = "0.3" tokio = { version = "1", features = ["full"] } tokio-rustls = "0.23" diff --git a/examples/low-level-rustls/src/main.rs b/examples/low-level-rustls/src/main.rs index 5d2d6284..01514b48 100644 --- a/examples/low-level-rustls/src/main.rs +++ b/examples/low-level-rustls/src/main.rs @@ -4,100 +4,105 @@ //! cargo run -p example-low-level-rustls //! ``` -use axum::{extract::Request, routing::get, Router}; -use futures_util::future::poll_fn; -use hyper::server::{ - accept::Accept, - conn::{AddrIncoming, Http}, -}; -use rustls_pemfile::{certs, pkcs8_private_keys}; -use std::{ - fs::File, - io::BufReader, - path::{Path, PathBuf}, - pin::Pin, - sync::Arc, -}; -use tokio::net::TcpListener; -use tokio_rustls::{ - rustls::{Certificate, PrivateKey, ServerConfig}, - TlsAcceptor, -}; -use tower::make::MakeService; -use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt}; - -#[tokio::main] -async fn main() { - tracing_subscriber::registry() - .with( - tracing_subscriber::EnvFilter::try_from_default_env() - .unwrap_or_else(|_| "example_tls_rustls=debug".into()), - ) - .with(tracing_subscriber::fmt::layer()) - .init(); - - let rustls_config = rustls_server_config( - PathBuf::from(env!("CARGO_MANIFEST_DIR")) - .join("self_signed_certs") - .join("key.pem"), - PathBuf::from(env!("CARGO_MANIFEST_DIR")) - .join("self_signed_certs") - .join("cert.pem"), - ); - - let acceptor = TlsAcceptor::from(rustls_config); - - let listener = TcpListener::bind("127.0.0.1:3000").await.unwrap(); - let mut listener = AddrIncoming::from_listener(listener).unwrap(); - - let protocol = Arc::new(Http::new()); - - let mut app = Router::<()>::new() - .route("/", get(handler)) - .into_make_service(); - - loop { - let stream = poll_fn(|cx| Pin::new(&mut listener).poll_accept(cx)) - .await - .unwrap() - .unwrap(); - - let acceptor = acceptor.clone(); - - let protocol = protocol.clone(); - - let svc = MakeService::<_, Request<hyper::Body>>::make_service(&mut app, &stream); - - tokio::spawn(async move { - if let Ok(stream) = acceptor.accept(stream).await { - let _ = protocol.serve_connection(stream, svc.await.unwrap()).await; - } - }); - } +// TODO +fn main() { + eprint!("this example has not yet been updated to hyper 1.0"); } -async fn handler() -> &'static str { - "Hello, World!" -} - -fn rustls_server_config(key: impl AsRef<Path>, cert: impl AsRef<Path>) -> Arc<ServerConfig> { - let mut key_reader = BufReader::new(File::open(key).unwrap()); - let mut cert_reader = BufReader::new(File::open(cert).unwrap()); - - let key = PrivateKey(pkcs8_private_keys(&mut key_reader).unwrap().remove(0)); - let certs = certs(&mut cert_reader) - .unwrap() - .into_iter() - .map(Certificate) - .collect(); - - let mut config = ServerConfig::builder() - .with_safe_defaults() - .with_no_client_auth() - .with_single_cert(certs, key) - .expect("bad certificate/key"); - - config.alpn_protocols = vec![b"h2".to_vec(), b"http/1.1".to_vec()]; - - Arc::new(config) -} +// use axum::{extract::Request, routing::get, Router}; +// use futures_util::future::poll_fn; +// use hyper::server::{ +// accept::Accept, +// conn::{AddrIncoming, Http}, +// }; +// use rustls_pemfile::{certs, pkcs8_private_keys}; +// use std::{ +// fs::File, +// io::BufReader, +// path::{Path, PathBuf}, +// pin::Pin, +// sync::Arc, +// }; +// use tokio::net::TcpListener; +// use tokio_rustls::{ +// rustls::{Certificate, PrivateKey, ServerConfig}, +// TlsAcceptor, +// }; +// use tower::make::MakeService; +// use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt}; + +// #[tokio::main] +// async fn main() { +// tracing_subscriber::registry() +// .with( +// tracing_subscriber::EnvFilter::try_from_default_env() +// .unwrap_or_else(|_| "example_tls_rustls=debug".into()), +// ) +// .with(tracing_subscriber::fmt::layer()) +// .init(); + +// let rustls_config = rustls_server_config( +// PathBuf::from(env!("CARGO_MANIFEST_DIR")) +// .join("self_signed_certs") +// .join("key.pem"), +// PathBuf::from(env!("CARGO_MANIFEST_DIR")) +// .join("self_signed_certs") +// .join("cert.pem"), +// ); + +// let acceptor = TlsAcceptor::from(rustls_config); + +// let listener = TcpListener::bind("127.0.0.1:3000").await.unwrap(); +// let mut listener = AddrIncoming::from_listener(listener).unwrap(); + +// let protocol = Arc::new(Http::new()); + +// let mut app = Router::<()>::new() +// .route("/", get(handler)) +// .into_make_service(); + +// loop { +// let stream = poll_fn(|cx| Pin::new(&mut listener).poll_accept(cx)) +// .await +// .unwrap() +// .unwrap(); + +// let acceptor = acceptor.clone(); + +// let protocol = protocol.clone(); + +// let svc = MakeService::<_, Request<hyper::Body>>::make_service(&mut app, &stream); + +// tokio::spawn(async move { +// if let Ok(stream) = acceptor.accept(stream).await { +// let _ = protocol.serve_connection(stream, svc.await.unwrap()).await; +// } +// }); +// } +// } + +// async fn handler() -> &'static str { +// "Hello, World!" +// } + +// fn rustls_server_config(key: impl AsRef<Path>, cert: impl AsRef<Path>) -> Arc<ServerConfig> { +// let mut key_reader = BufReader::new(File::open(key).unwrap()); +// let mut cert_reader = BufReader::new(File::open(cert).unwrap()); + +// let key = PrivateKey(pkcs8_private_keys(&mut key_reader).unwrap().remove(0)); +// let certs = certs(&mut cert_reader) +// .unwrap() +// .into_iter() +// .map(Certificate) +// .collect(); + +// let mut config = ServerConfig::builder() +// .with_safe_defaults() +// .with_no_client_auth() +// .with_single_cert(certs, key) +// .expect("bad certificate/key"); + +// config.alpn_protocols = vec![b"h2".to_vec(), b"http/1.1".to_vec()]; + +// Arc::new(config) +// } |