deduplicated the reqwest::CLient

Dieser Commit ist enthalten in:
Sebastian Tobie 2025-06-19 10:26:14 +02:00
Ursprung 9c8b9375d3
Commit a8b3482eb3
3 geänderte Dateien mit 22 neuen und 14 gelöschten Zeilen

Datei anzeigen

@ -42,7 +42,10 @@ use openssl::{
Private, Private,
}, },
}; };
use reqwest::tls::Version; use reqwest::{
Client,
tls::Version,
};
use schemars::{ use schemars::{
SchemaGenerator, SchemaGenerator,
consts::meta_schemas::DRAFT07, consts::meta_schemas::DRAFT07,
@ -84,8 +87,9 @@ use tokio_stream::{
}; };
fn default_client() -> Result<reqwest::Client, Error> { fn default_client() -> Result<Client, Error> {
reqwest::Client::builder() trace!("Initialized new reqwest Client");
Client::builder()
.min_tls_version(Version::TLS_1_2) .min_tls_version(Version::TLS_1_2)
.https_only(true) .https_only(true)
.pool_max_idle_per_host(POOL_SIZE) .pool_max_idle_per_host(POOL_SIZE)
@ -112,7 +116,7 @@ async fn load_privkey(path: PathBuf) -> Result<PKey<Private>, Error> {
async fn racme(flags: Arguments) -> Result<(), Error> { async fn racme(flags: Arguments) -> Result<(), Error> {
let client = default_client()?; let client = default_client()?;
let mut dns_manager = Manager::new(); let mut dns_manager = Manager::new(client.clone());
let systemd_access = daemon::booted(); let systemd_access = daemon::booted();
let mainconfig = { let mainconfig = {
let file = match FILE_MODE.open(flags.config).await { let file = match FILE_MODE.open(flags.config).await {

Datei anzeigen

@ -23,6 +23,7 @@ use crate::{
}; };
use log::*; use log::*;
use macro_rules_attribute::macro_rules_derive; use macro_rules_attribute::macro_rules_derive;
use reqwest::Client;
use schemars::JsonSchema; use schemars::JsonSchema;
use serde::Deserialize; use serde::Deserialize;
use std::{ use std::{
@ -32,13 +33,16 @@ use std::{
use tokio::sync::Mutex; use tokio::sync::Mutex;
#[macro_rules_derive(DefDer)] #[macro_rules_derive(DefDer)]
pub struct Manager(Arc<Mutex<InnerManager>>); pub struct Manager(Arc<Mutex<InnerManager>>, Client);
impl Manager { impl Manager {
pub fn new() -> Self { pub fn new(client: Client) -> Self {
Self(Arc::new(Mutex::new(InnerManager { Self(
servers: HashMap::new(), Arc::new(Mutex::new(InnerManager {
}))) servers: HashMap::new(),
})),
client,
)
} }
pub async fn set_record(&self, domain: String, value: String) -> Option<DnsToken> { pub async fn set_record(&self, domain: String, value: String) -> Option<DnsToken> {
@ -79,7 +83,7 @@ impl Manager {
self.0.lock().await.servers.insert( self.0.lock().await.servers.insert(
fixed_zone, fixed_zone,
match builder { match builder {
DnsBuilder::PowerDNS(pdns_client_options) => pdns_client_options.build(zone), DnsBuilder::PowerDNS(pdns_client_options) => pdns_client_options.build(zone, self.1.clone()),
DnsBuilder::DNSUpdate(dnsupdate_client_options) => dnsupdate_client_options.build(zone), DnsBuilder::DNSUpdate(dnsupdate_client_options) => dnsupdate_client_options.build(zone),
DnsBuilder::None => Dns::None, DnsBuilder::None => Dns::None,
}, },

Datei anzeigen

@ -7,6 +7,7 @@ use derive_new::new;
use log::*; use log::*;
use macro_rules_attribute::macro_rules_derive; use macro_rules_attribute::macro_rules_derive;
use reqwest::{ use reqwest::{
Client,
RequestBuilder, RequestBuilder,
StatusCode, StatusCode,
Url, Url,
@ -18,7 +19,6 @@ use serde::{
}; };
use crate::{ use crate::{
default_client,
macros::DefDer, macros::DefDer,
types::{ types::{
dns::Dns, dns::Dns,
@ -48,9 +48,9 @@ impl PdnsClientOptions {
} }
impl PdnsClientOptions { impl PdnsClientOptions {
pub fn build(self, zone: String) -> Dns { pub fn build(self, zone: String, client: Client) -> Dns {
Dns::PowerDNS(PdnsHandler { Dns::PowerDNS(PdnsHandler {
client: default_client().unwrap(), client,
server: self.server, server: self.server,
api_key: self.api_key, api_key: self.api_key,
server_id: self.server_id, server_id: self.server_id,
@ -61,7 +61,7 @@ impl PdnsClientOptions {
#[macro_rules_derive(DefDer)] #[macro_rules_derive(DefDer)]
pub struct PdnsHandler { pub struct PdnsHandler {
client: reqwest::Client, client: Client,
server: String, server: String,
api_key: String, api_key: String,
server_id: String, server_id: String,