mirror of
https://codeberg.org/slatian/service.echoip-slatecave.git
synced 2025-07-19 15:26:03 +02:00
Upgrade to hickory 0.25
This also solves a security advisory that could have lead to a denail of service via the ring crate.
This commit is contained in:
38
src/main.rs
38
src/main.rs
@ -22,8 +22,8 @@ use axum_extra::headers;
|
||||
use axum_extra::TypedHeader;
|
||||
use clap::Parser;
|
||||
use env_logger::Env;
|
||||
use hickory_resolver::Name;
|
||||
use hickory_resolver::TokioAsyncResolver;
|
||||
use hickory_resolver::{name_server::TokioConnectionProvider, system_conf::read_system_conf, Name, ResolveError, Resolver};
|
||||
use hickory_resolver::TokioResolver;
|
||||
use log::{info,warn,error};
|
||||
use regex::Regex;
|
||||
use serde::{Deserialize,Serialize};
|
||||
@ -108,7 +108,7 @@ pub struct DigResult {
|
||||
|
||||
struct ServiceSharedState {
|
||||
templating_engine: TemplatingEngine,
|
||||
dns_resolvers: HashMap<Arc<str>,TokioAsyncResolver>,
|
||||
dns_resolvers: HashMap<Arc<str>,TokioResolver>,
|
||||
dns_resolver_aliases: HashMap<Arc<str>,Arc<str>>,
|
||||
asn_db: geoip::MMDBCarrier,
|
||||
location_db: geoip::MMDBCarrier,
|
||||
@ -215,21 +215,24 @@ async fn main() {
|
||||
info!("Initalizing dns resolvers ...");
|
||||
|
||||
let mut dns_resolver_selectables = Vec::<Selectable>::new();
|
||||
let mut dns_resolver_map: HashMap<Arc<str>,TokioAsyncResolver> = HashMap::new();
|
||||
let mut dns_resolver_map: HashMap<Arc<str>,TokioResolver> = HashMap::new();
|
||||
let mut dns_resolver_aliases: HashMap<Arc<str>,Arc<str>> = HashMap::new();
|
||||
|
||||
if config.dns.enable_system_resolver {
|
||||
info!("Initalizing System resolver ...");
|
||||
let res = TokioAsyncResolver::tokio_from_system_conf();
|
||||
let resolver = match res {
|
||||
Ok(resolver) => resolver,
|
||||
match initalize_system_resolver() {
|
||||
Ok(resolver) => {
|
||||
info!("System resolver successfully Initalized.");
|
||||
dns_resolver_map.insert(
|
||||
config.dns.system_resolver_id.clone(),
|
||||
resolver
|
||||
);
|
||||
},
|
||||
Err(e) => {
|
||||
info!("Error while setting up dns resolver: {e}");
|
||||
error!("Problem setting up system resolver: {e}");
|
||||
::std::process::exit(1);
|
||||
}
|
||||
};
|
||||
|
||||
dns_resolver_map.insert(config.dns.system_resolver_id.clone(), resolver);
|
||||
dns_resolver_selectables.push(Selectable {
|
||||
id: config.dns.system_resolver_id.clone(),
|
||||
name: config.dns.system_resolver_name.clone(),
|
||||
@ -239,10 +242,10 @@ async fn main() {
|
||||
|
||||
for (key, resolver_config) in &config.dns.resolver {
|
||||
info!("Initalizing {} resolver ...", key);
|
||||
let resolver = TokioAsyncResolver::tokio(
|
||||
let resolver = TokioResolver::builder_with_config(
|
||||
resolver_config.to_hickory_resolver_config(),
|
||||
Default::default()
|
||||
);
|
||||
).build();
|
||||
dns_resolver_map.insert(key.clone(), resolver);
|
||||
dns_resolver_selectables.push(Selectable {
|
||||
id: key.clone(),
|
||||
@ -331,6 +334,17 @@ async fn main() {
|
||||
.unwrap();
|
||||
}
|
||||
|
||||
fn initalize_system_resolver() -> Result<TokioResolver, ResolveError> {
|
||||
let (system_conf, system_options) = read_system_conf()?;
|
||||
let mut builder = Resolver::builder_with_config(
|
||||
system_conf,
|
||||
TokioConnectionProvider::default()
|
||||
);
|
||||
*builder.options_mut() = system_options;
|
||||
|
||||
return Ok(builder.build());
|
||||
}
|
||||
|
||||
#[allow(clippy::too_many_arguments)]
|
||||
async fn settings_query_middleware(
|
||||
Query(query): Query<SettingsQuery>,
|
||||
|
Reference in New Issue
Block a user