Skip to main content

Crate dns_update

Crate dns_update 

Source
Expand description

§dns-update

crates.io build docs.rs crates.io

dns-update is an Dynamic DNS update library for Rust that supports updating DNS records using the RFC 2136 protocol and different cloud provider APIs such as Cloudflare. It was designed to be simple and easy to use, while providing a high level of flexibility and performance.

§Limitations

  • Currently the library is async only.
  • Besides RFC 2136, it only supports a few cloud providers API.

§PRs Welcome

PRs to add more providers are welcome. The goal is to support as many providers as Go’s lego library.

§Usage Example

Using RFC2136 with TSIG:

        // Create a new RFC2136 client
        let client = DnsUpdater::new_rfc2136_tsig("tcp://127.0.0.1:53", "<KEY_NAME>", STANDARD.decode("<TSIG_KEY>").unwrap(), TsigAlgorithm::HmacSha512).unwrap();

        // Create a new TXT record
        client.create(
            "test._domainkey.example.org",
            DnsRecord::TXT {
                content: "v=DKIM1; k=rsa; h=sha256; p=test".to_string(),
            },
            300,
            "example.org",
        )
        .await
        .unwrap();

        // Delete the record
        client.delete("test._domainkey.example.org", "example.org").await.unwrap();

Using a cloud provider such as Cloudflare:

        // Create a new Cloudflare client
        let client =
            DnsUpdater::new_cloudflare("<API_TOKEN>", None::<String>, Some(Duration::from_secs(60)))
                .unwrap();

        // Create a new TXT record
        client.create(
            "test._domainkey.example.org",
            DnsRecord::TXT {
                content: "v=DKIM1; k=rsa; h=sha256; p=test".to_string(),
            },
            300,
            "example.org",
        )
        .await
        .unwrap();

        // Delete the record
        client.delete("test._domainkey.example.org", "example.org").await.unwrap();

§License

Licensed under either of

  • Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
  • MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)

at your option.

Copyright (C) 2020, Stalwart Labs LLC

Modules§

bind
crypto
dnssec
dns security extension related modules
http
jwt
Generic JWT utility for providers that need JWT authentication.
providers
tests
update
utils

Structs§

KeyValue
MXRecord
NamedDnsRecord
A named DNS record, which consists of a name and a DNS record.
SRVRecord
TLSARecord

Enums§

Algorithm
A DNSSEC algorithm.
CAARecord
DnsRecord
A DNS record type with a value.
DnsRecordType
A DNS record type.
DnsUpdater
Error
TlsaCertUsage
TlsaMatching
TlsaSelector
TsigAlgorithm
A TSIG algorithm.

Traits§

IntoFqdn

Type Aliases§

Result