Skip to content

Encotric/dns-update

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

at your option.

Copyright

Copyright (C) 2020, Stalwart Labs LLC

About

Dynamic DNS update library for Rust

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 100.0%