Go to file
2024-08-05 14:29:22 +02:00
src move tests 2024-07-25 21:20:05 +02:00
tests move tests 2024-07-25 21:20:05 +02:00
.gitignore gitignore 2024-07-14 16:45:01 +02:00
Cargo.lock update dependencies 2024-07-25 21:17:57 +02:00
Cargo.toml simplify 2024-07-14 16:10:13 +02:00
LICENSE license 2024-07-14 17:13:24 +02:00
README.md Clarify license 2024-08-05 14:29:22 +02:00

Dynamic IP Updater with Cloudflare DNS

This project is a dynamic IP updater for Cloudflare DNS records. It listens for changes in the IPv4 address of the network interface and updates the DNS records in Cloudflare accordingly.

Features

  • Automatically detects changes in the public IP address.
  • Updates Cloudflare DNS records when the public IP changes.
  • Listens for network interface events to detect IP changes.
  • Handles errors and retries updates to Cloudflare.

Prerequisites

  • Rust and Cargo installed.
  • Cloudflare account with API token.
  • Network interface with dynamic IP address.

Installation

  1. Clone the repository:

    git clone https://github.com/yourusername/dynip-cloudflare.git
    cd dynip-cloudflare
    
  2. Build the project:

    cargo build --release
    
  3. Create configuration file:

    Create a config.toml file in the current directory or in the configuration directory (typically ~/.config/dynip-cloudflare/) with the following content:

    zone_id = "your_zone_id"
    api_key = "your_api_key"
    domains = ["example.com", "sub.example.com"]
    max_errors_in_row = 5
    

Usage

  1. Run the program:

    ./target/release/dynip-cloudflare
    
  2. Logging:

    The program logs to both stderr and a rotating file located in the logs directory. The log level is set to Info.

Configuration

config.toml

  • zone_id: The Zone ID of your Cloudflare domain.
  • api_key: The API key for your Cloudflare account.
  • domains: A list of domain names to update.
  • max_errors_in_row: Maximum number of consecutive errors before the program stops. Will be set to 10 as default

Example

zone_id = "your_zone_id"
api_key = "your_api_key"
domains = ["example.com", "sub.example.com"]
max_errors_in_row = 5 

Error Handling

The program handles errors gracefully, with retries and logging of error messages. If the number of consecutive errors exceeds max_errors_in_row, the program will stop.

License

This project is licensed under the BSD 2-Clause License.