Cloudflare DNS Updater written in Rust. Works for IPv4 and IPv6 alike.
Find a file
2023-03-21 10:41:27 +01:00
src Add status code check for get request 2023-03-21 10:41:27 +01:00
.gitignore Seperated API Key into different config file 2023-02-26 01:49:02 +01:00
.gitlab-ci.yml Debian does not need openssl 2023-02-27 02:04:17 +00:00
api-key-empty.json Revert "Remove template file due to new release method" 2023-02-26 23:34:02 +01:00
Cargo.lock Added timer based execution and changed change printing 2023-02-27 15:04:12 +01:00
Cargo.toml Added timer based execution and changed change printing 2023-02-27 15:04:12 +01:00
cloudflare.json add all current DNS records 2022-11-27 14:14:18 +01:00
config.json Disable IPv4 in Default Config 2023-03-02 15:44:06 +01:00
README.md Modified README.md (new information), added requirements.txt for easy venv setup 2022-11-27 16:42:15 +01:00

Cloudflare DNS Updater

Create and activating a venv

Make sure Python 3.10 or higher is installed. Use cd to change to the location of this repository.

Now, run

py -3.10 -m venv venv

Replace the -3.10 with other Python versions if necessary (ex.: -3.11)

Activate the venv using the command

venv/scripts/activate

Installing the required packages

Make sure the venv is activated.

Run the following command

pip install -r requirements.txt

Alternatively, the packages can be installed manually by using pip install.

The full list of packages needed:

  • cloudflare (Version 2.0.0 or greater)
  • Buildins:
    • json
    • configparser
    • ipaddress
    • sys

Using the script

Before running the script, make sure there exists a config.ini file next to the cloudflare_script.py. The config has to have the following structure:

[cloudflare]
TOKEN=<cloudflare api token>

[server]
HOSTNAME=hostname-of-website.com

Run the script using the following arguments:

python cloudflare_script.py <ipversion> <path/to/ip/list>

IP-Version can be 4 or 6. The IP-List has to conform to the following structure and be a json file:

{
  "AAAA": [
    "ipv6 site prefix"
  ],
  "A": [
    "ipv4 site prefix"
  ]
}

To only get the currently registered DNS records for a given API key, run

python cloudflare_script.py

THis will print all DNS records for the API key with name, ip, cloudflare id and ip-version