mod config;
mod proxy;
use crate::proxy::RiverProxyService;
use pingora::{server::Server, services::Service};
fn main() {
tracing_subscriber::fmt::init();
let conf = config::render_config();
if conf.validate_configs {
conf.validate();
}
let mut my_server =
Server::new_with_opt_and_conf(conf.pingora_opt(), conf.pingora_server_conf());
tracing::info!("Applying Basic Proxies...");
let mut services: Vec<Box<dyn Service>> = vec![];
for beep in conf.basic_proxies {
tracing::info!("Configuring Basic Proxy: {}", beep.name);
let service = RiverProxyService::from_basic_conf(beep, &my_server);
services.push(Box::new(service));
}
tracing::info!("Bootstrapping...");
my_server.bootstrap();
tracing::info!("Bootstrapped. Adding Services...");
my_server.add_services(services);
tracing::info!("Starting Server...");
my_server.run_forever();
}