dns-update

Crates.iodns-update
lib.rsdns-update
version0.1.2
sourcesrc
created_at2024-04-16 09:51:57.35678
updated_at2024-04-18 09:02:44.003394
descriptionDynamic DNS update (RFC 2136 and cloud) library for Rust
homepagehttps://github.com/stalwartlabs/dns-update
repositoryhttps://github.com/stalwartlabs/dns-update
max_upload_size
id1210092
size47,439
Mauro D. (mdecimus)

documentation

README

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 Cloudflare's 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 = Rfc2136Provider::new_tsig("tcp://127.0.0.1:53", "<KEY_NAME>", STANDARD.decode("<TSIG_KEY>").unwrap(), TsigAlgorithm::HmacSha512).unwrap();

        // Create a new TXT record
        c.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
        c.delete("test._domainkey.example.org", "example.org").await.unwrap();

Using Cloudflare's API:

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

        // Create a new TXT record
        c.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
        c.delete("test._domainkey.example.org", "example.org").await.unwrap();

License

Licensed under either of

at your option.

Copyright

Copyright (C) 2020-2024, Stalwart Labs Ltd.

Commit count: 4

cargo fmt