Code cleanup

This commit is contained in:
Matt Brubeck 2020-05-20 08:18:35 -07:00
parent db0785c4b9
commit b728df0ee8

View file

@ -6,7 +6,6 @@ use {
}, },
async_tls::{TlsAcceptor, server::TlsStream}, async_tls::{TlsAcceptor, server::TlsStream},
lazy_static::lazy_static, lazy_static::lazy_static,
rustls::internal::pemfile::{certs, pkcs8_private_keys},
std::{ std::{
error::Error, error::Error,
fs::{File, read}, fs::{File, read},
@ -19,11 +18,6 @@ use {
pub type Result<T=()> = std::result::Result<T, Box<dyn Error + Send + Sync>>; pub type Result<T=()> = std::result::Result<T, Box<dyn Error + Send + Sync>>;
lazy_static! {
static ref ARGS: Args = args().expect("usage: agate <addr:port> <dir> <cert> <key>");
static ref ACCEPTOR: TlsAcceptor = acceptor().unwrap();
}
struct Args { struct Args {
sock_addr: String, sock_addr: String,
content_dir: String, content_dir: String,
@ -46,6 +40,12 @@ fn main() -> Result {
}) })
} }
lazy_static! {
static ref ARGS: Args = args()
.expect("usage: agate <addr:port> <dir> <cert> <key>");
static ref ACCEPTOR: TlsAcceptor = acceptor().unwrap();
}
fn args() -> Option<Args> { fn args() -> Option<Args> {
let mut args = std::env::args().skip(1); let mut args = std::env::args().skip(1);
Some(Args { Some(Args {
@ -57,11 +57,15 @@ fn args() -> Option<Args> {
} }
fn acceptor() -> Result<TlsAcceptor> { fn acceptor() -> Result<TlsAcceptor> {
let cert_file = File::open(&ARGS.cert_file)?; use rustls::internal::pemfile::{certs, pkcs8_private_keys};
let key_file = File::open(&ARGS.key_file)?;
let cert_file = File::open(&ARGS.cert_file)?;
let certs = certs(&mut BufReader::new(cert_file)).or(Err("bad cert"))?; let certs = certs(&mut BufReader::new(cert_file)).or(Err("bad cert"))?;
let mut keys = pkcs8_private_keys(&mut BufReader::new(key_file)).or(Err("bad key"))?;
let key_file = File::open(&ARGS.key_file)?;
let mut keys = pkcs8_private_keys(&mut BufReader::new(key_file))
.or(Err("bad key"))?;
let mut config = rustls::ServerConfig::new(rustls::NoClientAuth::new()); let mut config = rustls::ServerConfig::new(rustls::NoClientAuth::new());
config.set_single_cert(certs, keys.remove(0))?; config.set_single_cert(certs, keys.remove(0))?;
Ok(TlsAcceptor::from(Arc::new(config))) Ok(TlsAcceptor::from(Arc::new(config)))