Commits vergleichen
Keine gemeinsamen Commits. „767050dc03b5a0b6f76871e3ae998a458da8d102“ und „b8d49d91ba4ef556611399e89eb1083d5b4d8701“ haben vollständig unterschiedliche Historien.
767050dc03
...
b8d49d91ba
5 geänderte Dateien mit 69 neuen und 8 gelöschten Zeilen
8
Cargo.lock
generiert
8
Cargo.lock
generiert
|
@ -1779,9 +1779,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "schemars"
|
||||
version = "1.0.1"
|
||||
version = "0.9.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fe8c9d1c68d67dd9f97ecbc6f932b60eb289c5dbddd8aa1405484a8fd2fcd984"
|
||||
checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f"
|
||||
dependencies = [
|
||||
"dyn-clone",
|
||||
"ref-cast",
|
||||
|
@ -1792,9 +1792,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "schemars_derive"
|
||||
version = "1.0.1"
|
||||
version = "0.9.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6ca9fcb757952f8e8629b9ab066fc62da523c46c2b247b1708a3be06dd82530b"
|
||||
checksum = "5016d94c77c6d32f0b8e08b781f7dc8a90c2007d4e77472cc2807bc10a8438fe"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
|
|
|
@ -56,7 +56,7 @@ version = "0.12"
|
|||
[dependencies.schemars]
|
||||
default-features = false
|
||||
features = ["derive", "std", "preserve_order"]
|
||||
version = "1.0.1"
|
||||
version = "0.9.0"
|
||||
|
||||
[dependencies.serde]
|
||||
default-features = false
|
||||
|
|
43
src/types/dns/dnsupdate.rs
Normale Datei
43
src/types/dns/dnsupdate.rs
Normale Datei
|
@ -0,0 +1,43 @@
|
|||
use macro_rules_attribute::apply;
|
||||
|
||||
use crate::{
|
||||
macros::{
|
||||
ConfigFile,
|
||||
DefDer,
|
||||
},
|
||||
types::{
|
||||
self,
|
||||
dns::Dns,
|
||||
structs::DnsToken,
|
||||
traits::DnsHandler,
|
||||
},
|
||||
};
|
||||
|
||||
#[apply(DefDer)]
|
||||
#[apply(ConfigFile)]
|
||||
#[serde(deny_unknown_fields)]
|
||||
pub struct DNSUpdateClientOptions {}
|
||||
|
||||
impl DNSUpdateClientOptions {
|
||||
pub fn build(self, _zone: String) -> Dns {
|
||||
Dns::DNSUpdate(DnsUpdateHandler {})
|
||||
}
|
||||
}
|
||||
|
||||
#[apply(DefDer)]
|
||||
pub struct DnsUpdateHandler {}
|
||||
|
||||
impl DnsHandler for DnsUpdateHandler {
|
||||
async fn set_record(&self, _domain: String, _content: String) -> types::Result<DnsToken> {
|
||||
Ok(DnsToken::new_dns_update())
|
||||
}
|
||||
}
|
||||
|
||||
#[apply(DefDer)]
|
||||
pub struct DnsUpdateToken {}
|
||||
|
||||
impl DnsUpdateToken {
|
||||
pub async fn remove(&mut self) {}
|
||||
}
|
||||
|
||||
unsafe impl Send for DnsUpdateToken {}
|
|
@ -1,3 +1,4 @@
|
|||
pub(super) mod dnsupdate;
|
||||
pub(super) mod pdns;
|
||||
|
||||
use crate::{
|
||||
|
@ -7,9 +8,15 @@ use crate::{
|
|||
},
|
||||
types::{
|
||||
self,
|
||||
dns::pdns::{
|
||||
PdnsClientOptions,
|
||||
PdnsHandler,
|
||||
dns::{
|
||||
dnsupdate::{
|
||||
DNSUpdateClientOptions,
|
||||
DnsUpdateHandler,
|
||||
},
|
||||
pdns::{
|
||||
PdnsClientOptions,
|
||||
PdnsHandler,
|
||||
},
|
||||
},
|
||||
structs::{
|
||||
DnsToken,
|
||||
|
@ -79,6 +86,7 @@ impl Manager {
|
|||
fixed_zone,
|
||||
match builder {
|
||||
Builder::PowerDNS(pdns_client_options) => pdns_client_options.build(zone, self.1.clone()),
|
||||
Builder::DNSUpdate(dnsupdate_client_options) => dnsupdate_client_options.build(zone),
|
||||
Builder::None => Dns::None,
|
||||
},
|
||||
);
|
||||
|
@ -100,6 +108,7 @@ struct InnerManager {
|
|||
#[serde(tag = "type", rename_all = "lowercase")]
|
||||
pub enum Builder {
|
||||
PowerDNS(PdnsClientOptions),
|
||||
DNSUpdate(DNSUpdateClientOptions),
|
||||
#[default]
|
||||
None,
|
||||
}
|
||||
|
@ -107,6 +116,7 @@ pub enum Builder {
|
|||
#[apply(DefDer)]
|
||||
pub enum Dns {
|
||||
PowerDNS(PdnsHandler),
|
||||
DNSUpdate(DnsUpdateHandler),
|
||||
None,
|
||||
}
|
||||
|
||||
|
@ -114,6 +124,7 @@ impl Dns {
|
|||
pub async fn set_record(&self, domain: String, content: String) -> types::Result<DnsToken> {
|
||||
match self {
|
||||
Dns::PowerDNS(pdns_handler) => pdns_handler.set_record(domain, content).await,
|
||||
Dns::DNSUpdate(dns_update_handler) => dns_update_handler.set_record(domain, content).await,
|
||||
Dns::None => Error::err("Not Implemented"),
|
||||
}
|
||||
}
|
||||
|
|
|
@ -34,6 +34,7 @@ use crate::{
|
|||
},
|
||||
dns::{
|
||||
Manager,
|
||||
dnsupdate::DnsUpdateToken,
|
||||
pdns::PdnsToken,
|
||||
},
|
||||
},
|
||||
|
@ -167,6 +168,7 @@ impl Error {
|
|||
pub enum DnsToken {
|
||||
None,
|
||||
Pdns(Box<PdnsToken>),
|
||||
DnsUpdate(DnsUpdateToken),
|
||||
}
|
||||
|
||||
impl DnsToken {
|
||||
|
@ -174,6 +176,10 @@ impl DnsToken {
|
|||
Self::Pdns(Box::new(PdnsToken::new(builder)))
|
||||
}
|
||||
|
||||
pub fn new_dns_update() -> Self {
|
||||
Self::DnsUpdate(DnsUpdateToken {})
|
||||
}
|
||||
|
||||
pub fn new_none() -> Self {
|
||||
Self::None
|
||||
}
|
||||
|
@ -182,6 +188,7 @@ impl DnsToken {
|
|||
match self {
|
||||
DnsToken::None => {},
|
||||
DnsToken::Pdns(pdns_token) => pdns_token.remove().await,
|
||||
DnsToken::DnsUpdate(dns_update_token) => dns_update_token.remove().await,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Laden …
Tabelle hinzufügen
In neuem Issue referenzieren