Add config option for dns passthru for appservices. (#158)
Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
@@ -13,7 +13,7 @@ use super::cache::{Cache, CachedOverride};
|
||||
|
||||
pub struct Resolver {
|
||||
pub(crate) resolver: Arc<TokioResolver>,
|
||||
pub(crate) passthru: Arc<TokioResolver>,
|
||||
pub(crate) passthru: Arc<Passthru>,
|
||||
pub(crate) hooked: Arc<Hooked>,
|
||||
server: Arc<Server>,
|
||||
}
|
||||
@@ -24,6 +24,11 @@ pub(crate) struct Hooked {
|
||||
server: Arc<Server>,
|
||||
}
|
||||
|
||||
pub(crate) struct Passthru {
|
||||
resolver: Arc<TokioResolver>,
|
||||
server: Arc<Server>,
|
||||
}
|
||||
|
||||
type ResolvingResult = Result<Addrs, Box<dyn std::error::Error + Send + Sync>>;
|
||||
|
||||
impl Resolver {
|
||||
@@ -47,9 +52,12 @@ impl Resolver {
|
||||
resolver: resolver.clone(),
|
||||
cache,
|
||||
}),
|
||||
passthru: Arc::new(Passthru {
|
||||
server: server.clone(),
|
||||
resolver: passthru,
|
||||
}),
|
||||
server: server.clone(),
|
||||
resolver,
|
||||
passthru,
|
||||
}))
|
||||
}
|
||||
|
||||
@@ -137,7 +145,7 @@ impl Resolve for Resolver {
|
||||
.dns_passthru_domains
|
||||
.is_match(name.as_str())
|
||||
{
|
||||
&self.passthru
|
||||
&self.passthru.resolver
|
||||
} else {
|
||||
&self.resolver
|
||||
};
|
||||
@@ -146,6 +154,12 @@ impl Resolve for Resolver {
|
||||
}
|
||||
}
|
||||
|
||||
impl Resolve for Passthru {
|
||||
fn resolve(&self, name: Name) -> Resolving {
|
||||
resolve_to_reqwest(self.server.clone(), self.resolver.clone(), name).boxed()
|
||||
}
|
||||
}
|
||||
|
||||
impl Resolve for Hooked {
|
||||
fn resolve(&self, name: Name) -> Resolving {
|
||||
hooked_resolve(self.cache.clone(), self.server.clone(), self.resolver.clone(), name)
|
||||
|
||||
Reference in New Issue
Block a user