crock/src/pot.rs

43 lines
1.1 KiB
Rust

extern crate hyper_rustls;
extern crate iron;
extern crate rustls;
use self::hyper_rustls::TlsServer;
use self::iron::prelude::*;
use std::net::{IpAddr, SocketAddr};
use std::sync::Arc;
const PHRASE: &'static str = "Hello, World!";
fn hello_world(_: &mut Request) -> IronResult<Response> {
Ok(Response::with((iron::status::Ok, PHRASE)))
}
fn listener() -> TlsServer {
let mut tls_config = rustls::ServerConfig::new();
let cache = rustls::ServerSessionMemoryCache::new(1024);
tls_config.set_persistence(cache);
tls_config.ticketer = rustls::Ticketer::new();
// TODO: Look up the cert + key dynamically at runtime, creating a new one
// on the fly if necessary
//tls_config.cert_resolver = null;
TlsServer {
cfg: Arc::new(tls_config)
}
}
pub fn boil(ip: IpAddr) {
let listener = listener();
let http_chain = Chain::new(hello_world);
let https_chain = Chain::new(hello_world);
let http = Iron::new(http_chain).http(SocketAddr::new(ip, 3000));
let https = Iron::new(https_chain).https(SocketAddr::new(ip, 3443), listener);
http.unwrap();
https.unwrap();
}