aboutsummaryrefslogblamecommitdiff
path: root/src/main.rs
blob: df0845dcaaf8415d01b36ff2146b6f55cd15baf3 (plain) (tree)
1
2
3
4
5
6
7
8
9


                    

               
           
         
          
                 
                  


           
                                                            
                 


                                                             


                                  
                                                                              

                                                                                                    







                                                                     



                                        
 



                                                                        
#[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());
	}
}