From 0f40ab89e3b523ac206077d932a0e2d40d75f7e0 Mon Sep 17 00:00:00 2001 From: Tyler Murphy Date: Fri, 3 Mar 2023 00:10:21 -0500 Subject: finialize initial dns + caching --- src/main.rs | 54 ++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 42 insertions(+), 12 deletions(-) (limited to 'src/main.rs') diff --git a/src/main.rs b/src/main.rs index 0b767de..c891d50 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,18 +1,48 @@ -use std::net::SocketAddr; +use std::{time::{UNIX_EPOCH, SystemTime}, env, net::IpAddr}; -use resolver::{DnsResolver, Config}; +use config::Config; + +use server::server::Server; +use tracing::metadata::LevelFilter; +use tracing_subscriber::{ + filter::filter_fn, prelude::__tracing_subscriber_SubscriberExt, util::SubscriberInitExt, Layer, +}; + +mod config; +mod packet; +mod server; #[tokio::main] -async fn main () { - - let config = Config::new(); +async fn main() { + tracing_subscriber::registry() + .with( + tracing_subscriber::fmt::layer() + .with_filter(LevelFilter::TRACE) + .with_filter(filter_fn(|metadata| { + metadata.target().starts_with("wrapper") + })), + ) + .init(); + + let mut config = Config::new(); + + if let Ok(port) = env::var("PORT").unwrap_or(String::new()).parse::() { + config.set_port(port); + } + + if let Ok(fallback) = env::var("FALLBACK_DNS").unwrap_or(String::new()).parse::() { + config.set_fallback_ns(&fallback); + } - let resolver = DnsResolver::new(config); + let server = Server::new(config).await.expect("Failed to bind server"); - let addr = "[::]:2000".parse::() - .expect("Failed to create binding"); - - resolver.bind(addr).await - .expect("Failed to start dns server"); + server.run().await.unwrap(); +} -} \ No newline at end of file +pub fn get_time() -> u64 { + let start = SystemTime::now(); + let since_the_epoch = start + .duration_since(UNIX_EPOCH) + .expect("Time went backwards"); + since_the_epoch.as_millis() as u64 +} -- cgit v1.2.3-freya