use std::{time::{UNIX_EPOCH, SystemTime}, env, net::IpAddr}; 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() { 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 server = Server::new(config).await.expect("Failed to bind server"); server.run().await.unwrap(); } 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 }