diff options
-rw-r--r-- | src/config.rs | 59 | ||||
-rw-r--r-- | src/main.rs | 5 | ||||
-rw-r--r-- | tests/navigation.rs | 3 | ||||
-rw-r--r-- | tests/serve_request.rs | 6 | ||||
-rw-r--r-- | tests/upload_files.rs | 3 |
5 files changed, 36 insertions, 40 deletions
diff --git a/src/config.rs b/src/config.rs index d3f125f..6c2d978 100644 --- a/src/config.rs +++ b/src/config.rs @@ -185,36 +185,35 @@ impl MiniserveConfig { }; #[cfg(feature = "tls")] - let tls_rustls_server_config = if let (Some(tls_cert), Some(tls_key)) = - (args.tls_cert, args.tls_key) - { - let cert_file = &mut BufReader::new( - File::open(&tls_cert) - .context(format!("Couldn't access TLS certificate {tls_cert:?}"))?, - ); - let key_file = &mut BufReader::new( - File::open(&tls_key).context(format!("Couldn't access TLS key {tls_key:?}"))?, - ); - let cert_chain = pemfile::certs(cert_file).context("Reading cert file")?; - let key = pemfile::read_all(key_file) - .context("Reading private key file")? - .into_iter() - .find_map(|item| match item { - pemfile::Item::RSAKey(key) | pemfile::Item::PKCS8Key(key) => Some(key), - _ => None, - }) - .ok_or_else(|| anyhow!("No supported private key in file"))?; - let server_config = rustls::ServerConfig::builder() - .with_safe_defaults() - .with_no_client_auth() - .with_single_cert( - cert_chain.into_iter().map(rustls::Certificate).collect(), - rustls::PrivateKey(key), - )?; - Some(server_config) - } else { - None - }; + let tls_rustls_server_config = + if let (Some(tls_cert), Some(tls_key)) = (args.tls_cert, args.tls_key) { + let cert_file = &mut BufReader::new( + File::open(&tls_cert) + .context(format!("Couldn't access TLS certificate {tls_cert:?}"))?, + ); + let key_file = &mut BufReader::new( + File::open(&tls_key).context(format!("Couldn't access TLS key {tls_key:?}"))?, + ); + let cert_chain = pemfile::certs(cert_file).context("Reading cert file")?; + let key = pemfile::read_all(key_file) + .context("Reading private key file")? + .into_iter() + .find_map(|item| match item { + pemfile::Item::RSAKey(key) | pemfile::Item::PKCS8Key(key) => Some(key), + _ => None, + }) + .ok_or_else(|| anyhow!("No supported private key in file"))?; + let server_config = rustls::ServerConfig::builder() + .with_safe_defaults() + .with_no_client_auth() + .with_single_cert( + cert_chain.into_iter().map(rustls::Certificate).collect(), + rustls::PrivateKey(key), + )?; + Some(server_config) + } else { + None + }; #[cfg(not(feature = "tls"))] let tls_rustls_server_config = None; diff --git a/src/main.rs b/src/main.rs index cf02025..84eca2b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -201,9 +201,8 @@ async fn run(miniserve_config: MiniserveConfig) -> Result<(), ContextualError> { }); let srv = socket_addresses.iter().try_fold(srv, |srv, addr| { - let listener = create_tcp_listener(*addr).map_err(|e| { - ContextualError::IoError(format!("Failed to bind server to {addr}"), e) - })?; + let listener = create_tcp_listener(*addr) + .map_err(|e| ContextualError::IoError(format!("Failed to bind server to {addr}"), e))?; #[cfg(feature = "tls")] let srv = match &miniserve_config.tls_rustls_config { diff --git a/tests/navigation.rs b/tests/navigation.rs index fa58456..3bd7415 100644 --- a/tests/navigation.rs +++ b/tests/navigation.rs @@ -51,8 +51,7 @@ fn can_navigate_into_dirs_and_back(server: TestServer) -> Result<(), Error> { let initial_parsed = Document::from_read(initial_body)?; for &directory in DIRECTORIES { let dir_elem = get_link_from_text(&initial_parsed, directory).expect("Dir not found."); - let body = - reqwest::blocking::get(&format!("{base_url}{dir_elem}"))?.error_for_status()?; + let body = reqwest::blocking::get(&format!("{base_url}{dir_elem}"))?.error_for_status()?; let parsed = Document::from_read(body)?; let back_link = get_link_from_text(&parsed, "Parent directory").expect("Back link not found."); diff --git a/tests/serve_request.rs b/tests/serve_request.rs index 5ad0d60..e717525 100644 --- a/tests/serve_request.rs +++ b/tests/serve_request.rs @@ -61,8 +61,7 @@ fn serves_requests_with_non_default_port(server: TestServer) -> Result<(), Error .find(|x: &Node| x.text() == directory) .next() .is_some()); - let dir_body = - reqwest::blocking::get(server.url().join(directory)?)?.error_for_status()?; + let dir_body = reqwest::blocking::get(server.url().join(directory)?)?.error_for_status()?; let dir_body_parsed = Document::from_read(dir_body)?; for &file in FILES { assert!(dir_body_parsed @@ -93,8 +92,7 @@ fn serves_requests_hidden_files(#[with(&["--hidden"])] server: TestServer) -> Re .find(|x: &Node| x.text() == directory) .next() .is_some()); - let dir_body = - reqwest::blocking::get(server.url().join(directory)?)?.error_for_status()?; + let dir_body = reqwest::blocking::get(server.url().join(directory)?)?.error_for_status()?; let dir_body_parsed = Document::from_read(dir_body)?; for &file in FILES.iter().chain(HIDDEN_FILES) { assert!(dir_body_parsed diff --git a/tests/upload_files.rs b/tests/upload_files.rs index e77e2fa..8cb3e8e 100644 --- a/tests/upload_files.rs +++ b/tests/upload_files.rs @@ -189,7 +189,8 @@ fn prevent_path_traversal_attacks( create_dir_all(server.path().join("foo")).unwrap(); if !cfg!(windows) { for dir in &["C:/foo/C:", r"C:\foo", r"\foo"] { - create_dir_all(server.path().join(dir)).unwrap_or_else(|_| panic!("failed to create: {dir:?}")); + create_dir_all(server.path().join(dir)) + .unwrap_or_else(|_| panic!("failed to create: {dir:?}")); } } |