3 releases
0.1.2 | Apr 18, 2024 |
---|---|
0.1.1 | Apr 17, 2024 |
0.1.0 | Apr 16, 2024 |
#1283 in Network programming
387 downloads per month
36KB
860 lines
dns-update
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
- 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
Copyright (C) 2020-2024, Stalwart Labs Ltd.
Dependencies
~16–29MB
~520K SLoC