diff options
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 39 |
1 files changed, 23 insertions, 16 deletions
diff --git a/src/main.rs b/src/main.rs index 4036d46..695fb83 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,6 +1,8 @@ use log::{debug, error, info}; use std::env; use http_types::Url; +use hyper::client::{HttpConnector,connect::dns::GaiResolver}; +use hyper_rustls::HttpsConnector; use warp::{Filter, host::Authority, path::FullPath}; #[tokio::main] @@ -65,14 +67,13 @@ async fn main() -> Result<(), kittybox::database::StorageError> { Some(value) => value, None => { if let Ok(filename) = env::var("COOKIE_SECRET_FILE") { - /*use async_std::io::ReadExt; + use tokio::io::AsyncReadExt; - let mut file = async_std::fs::File::open(filename).await?; + let mut file = tokio::fs::File::open(filename).await?; let mut temp_string = String::new(); file.read_to_string(&mut temp_string).await?; - temp_string*/ - todo!() + temp_string } else { error!("COOKIE_SECRET or COOKIE_SECRET_FILE is not set, will not be able to log in users securely!"); std::process::exit(1); @@ -91,6 +92,17 @@ async fn main() -> Result<(), kittybox::database::StorageError> { } }; + let http_client: hyper::Client<HttpsConnector<HttpConnector<GaiResolver>>, hyper::Body> = { + let builder = hyper::Client::builder(); + let https = hyper_rustls::HttpsConnectorBuilder::new() + .with_webpki_roots() + .https_only() + .enable_http1() + .enable_http2() + .build(); + builder.build(https) + }; + if backend_uri.starts_with("redis") { println!("The Redis backend is deprecated."); std::process::exit(1); @@ -112,17 +124,11 @@ async fn main() -> Result<(), kittybox::database::StorageError> { let micropub = warp::path("micropub") .and(warp::path::end() - .and(warp::get() - .and(kittybox::micropub::query(database)) - .or(warp::post() - .and(kittybox::util::require_host()) - .map(|host| "micropub post!")) - .or(warp::options() - .map(|| warp::reply::json::<Option<()>>(&None)) - // TODO: why doesn't this work? - // .map(warp::reply::with::header("Allow", "GET, POST")) - .map(|reply| warp::reply::with_header(reply, "Allow", "GET, POST")) - )) + .and(kittybox::micropub::micropub( + database.clone(), + token_endpoint.to_string(), + http_client.clone() + )) .or(warp::get() .and(warp::path("client")) .and(warp::path::end()) @@ -176,7 +182,8 @@ async fn main() -> Result<(), kittybox::database::StorageError> { let server = warp::serve(app); - // TODO use warp::Server::bind_with_graceful_shutdown + // TODO https://github.com/seanmonstar/warp/issues/854 + // TODO move to Hyper to wrap the requests in metrics info!("Listening on {:?}", host); server.bind(host).await; Ok(()) |