agate

Simple gemini server for static files
git clone https://github.com/mbrubeck/agate.git
Log | Files | Refs | README

commit b728df0ee855a8d45549ff554be398c6d07df655
parent db0785c4b9de2a7c9e4244f84af2185a74177042
Author: Matt Brubeck <mbrubeck@limpet.net>
Date:   Wed, 20 May 2020 08:18:35 -0700

Code cleanup

Diffstat:
Msrc/main.rs | 20++++++++++++--------
1 file changed, 12 insertions(+), 8 deletions(-)

diff --git a/src/main.rs b/src/main.rs @@ -6,7 +6,6 @@ use { }, async_tls::{TlsAcceptor, server::TlsStream}, lazy_static::lazy_static, - rustls::internal::pemfile::{certs, pkcs8_private_keys}, std::{ error::Error, fs::{File, read}, @@ -19,11 +18,6 @@ use { 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 { sock_addr: 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> { let mut args = std::env::args().skip(1); Some(Args { @@ -57,11 +57,15 @@ fn args() -> Option<Args> { } fn acceptor() -> Result<TlsAcceptor> { + use rustls::internal::pemfile::{certs, pkcs8_private_keys}; + let cert_file = File::open(&ARGS.cert_file)?; + let certs = certs(&mut BufReader::new(cert_file)).or(Err("bad cert"))?; + let key_file = File::open(&ARGS.key_file)?; + let mut keys = pkcs8_private_keys(&mut BufReader::new(key_file)) + .or(Err("bad key"))?; - 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 mut config = rustls::ServerConfig::new(rustls::NoClientAuth::new()); config.set_single_cert(certs, keys.remove(0))?; Ok(TlsAcceptor::from(Arc::new(config)))