dns-update 0.4.1

Dynamic DNS update (RFC 2136 and cloud) library for Rust
Documentation

dns-update

crates.io 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 over 70 cloud, registrar, and self-hosted DNS provider APIs. It was designed to be simple and easy to use, while providing a high level of flexibility and performance.

Supported providers

Provider Constructor Notes
RFC 2136 new_rfc2136_tsig TSIG authentication
Alibaba Cloud DNS new_alidns ACS3-HMAC-SHA256
ArvanCloud new_arvancloud
AutoDNS new_autodns InterNetX
Azure DNS new_azuredns OAuth2 client credentials
Baidu Cloud DNS new_baiducloud BCE-Auth-V1
BlueCat Address Manager v2 new_bluecatv2 OAuth
Bunny DNS new_bunny
Cloudflare new_cloudflare API token or X-Auth-*
ClouDNS new_cloudns
Constellix new_constellix HMAC-SHA1
cPanel new_cpanel UAPI, API token
DDNSS.de new_ddnss TXT only
deSEC new_desec
DigitalOcean new_digitalocean
DNSimple new_dnsimple
DNS Made Easy new_dnsmadeeasy HMAC-SHA1
Domeneshop new_domeneshop
DreamHost new_dreamhost
DuckDNS new_duckdns TXT only
Dynu new_dynu
EasyDNS new_easydns
Akamai Edge DNS new_edgedns EG1-HMAC-SHA256
Exoscale new_exoscale EXO2-HMAC-SHA256
FreeMyIP new_freemyip TXT only
Gandi v5 new_gandiv5 LiveDNS
Gcore new_gcore
GleSYS new_glesys
GoDaddy new_godaddy
Google Cloud DNS new_google_cloud_dns Service account JWT
Hetzner DNS new_hetzner
hosting.de new_hostingde
Hostinger new_hostinger
Huawei Cloud DNS new_huaweicloud SDK-HMAC-SHA256
Hurricane Electric new_hurricane TXT only
IBM Cloud (SoftLayer) new_ibmcloud Classic Infrastructure
Infoblox NIOS new_infoblox WAPI
Infomaniak new_infomaniak
INWX new_inwx JSON-RPC
IONOS new_ionos
IPv64 new_ipv64 TXT only
Joker new_joker DMAPI, API key or username/password
AWS Lightsail new_lightsail AWS Sigv4
Linode new_linode
LuaDNS new_luadns
Mythic Beasts new_mythicbeasts OAuth2
Namecheap new_namecheap XML API
Name.com new_namedotcom
NameSilo new_namesilo XML API
netcup new_netcup JSON-RPC, session cache
Netlify new_netlify
Nifcloud new_nifcloud NIFTY3-HTTPS
NS1 new_ns1
Oracle Cloud DNS new_oraclecloud RSA-SHA256 HTTP Signatures
OVH new_ovh
Plesk new_plesk REST API, X-API-Key
Porkbun new_porkbun
AWS Route 53 new_route53 AWS Sigv4
ANS SafeDNS new_safedns
Scaleway new_scaleway
Spaceship new_spaceship
Tencent Cloud DNSPod new_tencentcloud TC3-HMAC-SHA256
TransIP new_transip RSA-SHA512 JWT
UltraDNS new_ultradns OAuth2
Vercel new_vercel
Volcano Engine new_volcengine HMAC-SHA256
Vultr new_vultr
Websupport new_websupport HMAC-SHA1
Yandex Cloud DNS new_yandexcloud PS256 JWT

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