From 4fd9a9832a1bb23cd2ee8c5449dd2c7977ed19f7 Mon Sep 17 00:00:00 2001 From: Love Billenius Date: Sun, 14 Jul 2024 17:04:08 +0200 Subject: [PATCH] readme --- README.md | 80 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..4996ba2 --- /dev/null +++ b/README.md @@ -0,0 +1,80 @@ +# 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:** + + ```sh + git clone https://github.com/yourusername/dynip-cloudflare.git + cd dynip-cloudflare + ``` + +2. **Build the project:** + + ```sh + 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: + + ```toml + 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:** + + ```sh + ./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 + +```toml +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 MIT License.