diff --git a/src/sniffing/dns/mod.rs b/src/sniffing/dns/mod.rs deleted file mode 100644 index 40fbed1..0000000 --- a/src/sniffing/dns/mod.rs +++ /dev/null @@ -1 +0,0 @@ -pub mod dnsfaker; diff --git a/src/sniffing/fakedns/mod.rs b/src/sniffing/fakedns/mod.rs new file mode 100644 index 0000000..be4aa76 --- /dev/null +++ b/src/sniffing/fakedns/mod.rs @@ -0,0 +1,2 @@ +mod resolver; +pub mod server; diff --git a/src/sniffing/dns/dnsfaker.rs b/src/sniffing/fakedns/resolver.rs similarity index 95% rename from src/sniffing/dns/dnsfaker.rs rename to src/sniffing/fakedns/resolver.rs index 53f7c94..ba15380 100644 --- a/src/sniffing/dns/dnsfaker.rs +++ b/src/sniffing/fakedns/resolver.rs @@ -1,8 +1,7 @@ use hickory_resolver::{ - Resolver, TokioResolver, + TokioResolver, config::{NameServerConfig, ResolverConfig}, net::runtime::TokioRuntimeProvider, - proto::rr::IntoName, }; use rand::RngExt; @@ -29,12 +28,14 @@ enum Protocols { DoTCP, } -pub struct FakeIPServer { +pub struct FakeIPResolver { entries: FakeIPStorage, pub resolver: Option, } pub trait FakeIPOptions { + #[must_use] + fn new() -> Self; fn add(&mut self, domain: String) -> Ipv4Addr; async fn add_real_ip( &mut self, @@ -55,10 +56,15 @@ fn generate_ip_from(network: Ipv4Addr, prefix: u32) -> Ipv4Addr { Ipv4Addr::from(network | host) } - -// !TODO #[must_use]:FakeIpServer::new() builder AND FakeIPServer::start(), which unnecessary starts -// DNS server itself -impl FakeIPOptions for FakeIPServer { +// !TODO FakeIPServer::start(), which unnecessary starts +// DNS server itself +impl FakeIPOptions for FakeIPResolver { + fn new() -> Self { + Self { + entries: HashMap::new(), + resolver: None, + } + } /// Just gets an FakeIP addr from FakeIPStorage. /// ```rust /// x = FakeIPServer::new(/* params */); @@ -69,8 +75,8 @@ impl FakeIPOptions for FakeIPServer { /// } /// ``` fn get(&self, domain: &str) -> Option { - self.entries.get(domain).copied() - } + self.entries.get(domain).copied() + } /// FakeIPServer function which init's integrated DNS resolver for /// ```rust diff --git a/src/sniffing/fakedns/server.rs b/src/sniffing/fakedns/server.rs new file mode 100644 index 0000000..c620f66 --- /dev/null +++ b/src/sniffing/fakedns/server.rs @@ -0,0 +1,24 @@ +use crate::sniffing::fakedns::resolver::FakeIPResolver; +use hickory_proto::{ + op::Message, + op::MessageType, + serialize::{binary, txt}, +}; +use std::net::SocketAddr; + +pub struct FakeIPServer { + bind: SocketAddr, + resolver: FakeIPResolver, +} + +impl FakeIPServer { + #[must_use] + pub fn new(bind: SocketAddr, resolver: FakeIPResolver) -> Self { + Self { bind, resolver } + } + pub async fn serve() -> Result<(), std::io::Error> { todo!() } + async fn serve_tcp() -> Result<(), std::io::Error> { todo!() } + async fn serve_udp() -> Result<(), std::io::Error> { todo!() } + fn set_as_default_resolver() -> Result<(), std::io::Error> { todo!() } + +} diff --git a/src/sniffing/mod.rs b/src/sniffing/mod.rs index 9bb5c06..d524920 100644 --- a/src/sniffing/mod.rs +++ b/src/sniffing/mod.rs @@ -1,4 +1,4 @@ -mod dns; +mod fakedns; pub mod headers; mod metadata; pub mod types;