From b1fb410affb7bcd2e714abac01d22c4a5332c344 Mon Sep 17 00:00:00 2001 From: Tyler Murphy Date: Mon, 6 Mar 2023 18:50:08 -0500 Subject: finish dns and start webserver --- src/main.rs | 44 ++++++++++++++++++++++++++++++-------------- 1 file changed, 30 insertions(+), 14 deletions(-) (limited to 'src/main.rs') diff --git a/src/main.rs b/src/main.rs index c891d50..679e87b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,19 +1,34 @@ -use std::{time::{UNIX_EPOCH, SystemTime}, env, net::IpAddr}; +use std::time::{SystemTime, UNIX_EPOCH}; use config::Config; -use server::server::Server; -use tracing::metadata::LevelFilter; +use database::Database; +use dotenv::dotenv; +use dns::server::DnsServer; +use tracing::{error, metadata::LevelFilter}; use tracing_subscriber::{ filter::filter_fn, prelude::__tracing_subscriber_SubscriberExt, util::SubscriberInitExt, Layer, }; +use web::WebServer; mod config; -mod packet; -mod server; +mod database; +mod dns; +mod web; + +type Error = Box; +pub type Result = std::result::Result; #[tokio::main] async fn main() { + if let Err(err) = run().await { + error!("{err}") + }; +} + +async fn run() -> Result<()> { + dotenv().ok(); + tracing_subscriber::registry() .with( tracing_subscriber::fmt::layer() @@ -24,19 +39,20 @@ async fn main() { ) .init(); - let mut config = Config::new(); + let config = Config::new(); + let database = Database::new(config.clone()).await?; - if let Ok(port) = env::var("PORT").unwrap_or(String::new()).parse::() { - config.set_port(port); - } + let dns_server = DnsServer::new(config.clone(), database.clone()).await?; + let (udp, tcp) = dns_server.run().await?; - if let Ok(fallback) = env::var("FALLBACK_DNS").unwrap_or(String::new()).parse::() { - config.set_fallback_ns(&fallback); - } + let web_server = WebServer::new(config, database).await?; + let web = web_server.run().await?; - let server = Server::new(config).await.expect("Failed to bind server"); + tokio::join!(udp).0?; + tokio::join!(tcp).0?; + tokio::join!(web).0?; - server.run().await.unwrap(); + Ok(()) } pub fn get_time() -> u64 { -- cgit v1.2.3-freya