#[macro_use] extern crate anyhow; mod cert; mod cert_store; mod consul; mod http; mod https; mod proxy_config; mod reverse_proxy; use log::*; #[tokio::main(flavor = "multi_thread", worker_threads = 10)] async fn main() { if std::env::var("RUST_LOG").is_err() { std::env::set_var("RUST_LOG", "tricot=debug") } pretty_env_logger::init(); info!("Starting Tricot"); let consul = consul::Consul::new("http://10.42.0.21:8500", "tricot/"); let mut rx_proxy_config = proxy_config::spawn_proxy_config_task(consul.clone(), "carcajou"); let cert_store = cert_store::CertStore::new(consul.clone()); tokio::spawn( cert_store .clone() .watch_proxy_config(rx_proxy_config.clone()), ); tokio::spawn(http::serve_http(consul.clone())); tokio::spawn(https::serve_https( cert_store.clone(), rx_proxy_config.clone(), )); while rx_proxy_config.changed().await.is_ok() { info!("Proxy config: {:#?}", *rx_proxy_config.borrow()); } }