diff options
Diffstat (limited to '')
-rw-r--r-- | src/config.rs | 59 | ||||
-rw-r--r-- | src/main.rs | 5 |
2 files changed, 31 insertions, 33 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 { |