#[macro_use] extern crate anyhow; mod cert; mod cert_store; mod consul; mod http; mod proxy_config; use log::*; #[tokio::main(flavor = "multi_thread")] 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())); while rx_proxy_config.changed().await.is_ok() { info!("Proxy config: {:#?}", *rx_proxy_config.borrow()); } }