zone-update 0.5.0

A minimal library of DNS provider utilities
Documentation

Zone Update

Crates.io Docs.rs GitHub CI License

A minimal Rust library for updating DNS records with various DNS providers.

Overview

Zone Update is a lightweight library that provides a simple interface for programmatically managing DNS records through provider APIs. The library is async and supports both smol and tokio.

Supported DNS providers

Currently, Zone Update supports the following DNS providers:

  • Gandi
  • Dnsimple
  • DnsMadeEasy
  • Porkbun

See the DNS providers matrix for more details.

Installation

Add this to your Cargo.toml:

[dependencies]
zone-update = "0.1.0"

Usage

Basic Example

use zone_update::{gandi, errors::Result};
use std::net::Ipv4Addr;

async fn update_gandi_record() -> Result<()> {
    let config = zone_update::Config {
        domain: "example.com".to_string(),
        dry_run: false,
    };
    
    let auth = gandi::Auth::ApiKey("your-api-key".to_string());
    let client = gandi::Gandi::new(config, auth);
    
    let host = "www";
    let new_ip = Ipv4Addr::new(192, 0, 2, 1);

    // Update the A record for www.example.com
    client.update_v4_record(host, &new_ip).await?;
    
    Ok(())
}

See the examples directory for other use-cases.

License

This project is licensed under either of:

at your option.

Contributing

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.