summaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
authorTyler Murphy <tylermurphy534@gmail.com>2023-03-03 00:10:21 -0500
committerTyler Murphy <tylermurphy534@gmail.com>2023-03-03 00:10:21 -0500
commit0f40ab89e3b523ac206077d932a0e2d40d75f7e0 (patch)
treec4914050d1bbca8af77347220c0785c8ebefa213 /src/main.rs
parentclippy my beloved (diff)
downloadwrapper-0f40ab89e3b523ac206077d932a0e2d40d75f7e0.tar.gz
wrapper-0f40ab89e3b523ac206077d932a0e2d40d75f7e0.tar.bz2
wrapper-0f40ab89e3b523ac206077d932a0e2d40d75f7e0.zip
finialize initial dns + caching
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs54
1 files changed, 42 insertions, 12 deletions
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::<u16>() {
+ config.set_port(port);
+ }
+
+ if let Ok(fallback) = env::var("FALLBACK_DNS").unwrap_or(String::new()).parse::<IpAddr>() {
+ 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::<SocketAddr>()
- .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
+}