Automatically updates your Cloudflare DNS records for specific zones. Especially useful if you have dynamic IP address

Overview

Cloudflare DNS updater

What does it do?

Cloudflare DNS updater updates specified dns records for specified zones effortlessly and automatically. It was originally created to help me hosting my services under dynamic public IP address. Feel free to fork and reuse the code.

How to use

You can compile the updater from source or download the binary. To compile the program by yourself, you need to have the rustc and cargo installed.

Create your config.json that matches the example

{
  "UpdateThreshold": 120,
  "Keys": [
    {
      "AuthKey": "your auth key to some zones",
      "Zones": [
        {
          "ZoneId": "dfhmordntv8t4vb8snittvbies7nct7s47v",
          "Records": ["test2.domain.moe", "test.domain.moe", "tast.domain.moe"]
        }
      ]
    },
    {
      "AuthKey": "your auth key to some other zones",
      "Zones": [
        {
          "ZoneId": "esyigod5tihdvtudn5gitvnecrasdadg",
          "Records": ["error.bababooey.com", "backend.bababooey.com", "bababooey.com"]
        }
      ]
    }
  ]
}

Important

You have to generate your authentication key in cloudflare with necessary permissions to view and edit the specified zones and their dns records, detailed instruction can be found here

Known bugs

None yet, you tell me

You might also like...
Utility for working with reverse DNS

RDNS RDNS is a small Rust CLI utility for performing single and bulk reverse DNS (PTR) lookups. Usage RDNS 0.1.0 Joe Banks [email protected] Utilities for

Dropping GFW DNS contaminated packets based on Rust + eBPF
Dropping GFW DNS contaminated packets based on Rust + eBPF

Dropping GFW DNS contaminated packets based on Rust + eBPF

Implementation of algorithms for Domain Name System (DNS) Cookies construction

DNS Cookie RFC7873 left the construction of Server Cookies to the discretion of the DNS Server (implementer) which has resulted in a gallimaufry of di

Third party Google DNS client for rust.

google-dns-rs Documentation Install Add the following line to your Cargo.toml file: google-dns-rs = "0.3.0" Usage use google_dns_rs::api::{Dns, DoH, R

A wrapper for the Google Cloud DNS API

cloud-dns is a crate providing a client to interact with Google Cloud DNS v1

A Rust based DNS client, server, and resolver

Trust-DNS A Rust based DNS client, server, and Resolver, built to be safe and secure from the ground up. This repo consists of multiple crates: Librar

Resolved - a simple DNS server for home networks

resolved resolved (pronounced "resolved", not "resolved") is a simple DNS server for home networks. To that end, it supports: Recursive and non-recurs

DNS resolver for split-horizon scenarios

polyresolver is a resolver for split-horizon scenarios polyresolver is used to root domain names to different nameservers for the purposes of resolvin

Command-line DNS client using bitvec, nom and RFC 1035

Dingo Domain INformation Gatherer, Obviously. Installation Install cargo, see instructions on the Rust website Run ./install.sh (it just does cargo bu

Comments
  • Error missing field 'result' at line1 column 76

    Error missing field 'result' at line1 column 76

    I am getting this error with the following (sanitized) config.json in the same directory as my binary. I have compiled on aarch64 using ubuntu 20.04 distro:

    {
      "UpdateThreshold": 120,
      "Keys": [
        {
          "AuthKey": "sanitized",
          "Zones": [
            {
              "ZoneId": "sanitized",
              "ARecords": [
                "teleport.v4.some.site"
              ],
              "AaaaRecords": [
                "teleport.v6.some.site.me"
              ]
            }
          ]
        }
      ]
    }
    

    I have created an API Token according to the directions (I did limit it to my ip addresses, and a single zone, which is the zone in question and the Cloudflare token retrieval worked..

    opened by symgryph 3
Owner
Niko Huuskonen
JS | TS | Java | C# | Rust
Niko Huuskonen
DNS Server written in Rust for fun, see https://dev.to/xfbs/writing-a-dns-server-in-rust-1gpn

DNS Fun Ever wondered how you can write a DNS server in Rust? No? Well, too bad, I'm telling you anyways. But don't worry, this is going to be a fun o

Patrick Elsen 26 Jan 13, 2023
SOCKS5 implement library, with some useful utilities such as dns-query, socks5-server, dns2socks, udp-client, etc.

socks5-impl Fundamental abstractions and async read / write functions for SOCKS5 protocol and Relatively low-level asynchronized SOCKS5 server impleme

null 5 Aug 3, 2023
Bot creating DNS-01 challenged certificates. This is useful for automating wildcard certificates.

ACME Client Automating DNS-01 Challenge for Alfahosting Domains This is an ACME (letsencrypt by default) client that performs DNS-01 proofs agains an

hardworking 4 Apr 11, 2024
Imagine your SSH server only listens on an IPv6 address, and where the last 6 digits are changing every 30 seconds as a TOTP code...

tosh Imagine your SSH server only listens on an IPv6 address, and where the last 6 digits are changing every 30 seconds as a TOTP code... Inspired fro

Mark Vainomaa 409 Oct 23, 2022
A tool to aid in self-hosting. Expose local services on your computer, via a public IPv4 address.

innisfree A tool to aid in self-hosting. Expose local services on your computer, via a public IPv4 address. Why? Most of the data I maintain is local,

Conor Schaefer 7 Mar 19, 2022
Userspace libpcap-based tool to mirror your dns traffic

DNS traffic mirroring tool (dns-mirror) Description Userspace libpcap-based tool. dns-mirror sniffs dns packets on the given interface and proxies it

Timofey 1 Mar 15, 2022
A really basic Cloudflare worker made in rust

Rust WebAssembly Worker. A really basic Cloudflare worker made in rust.

Bram 4 Nov 17, 2022
TCP is so widely used, however QUIC may have a better performance.

TCP is so widely used, however QUIC may have a better performance. For softwares which use protocols built on TCP, this program helps them take FULL advantage of QUIC.

zephyr 15 Jun 10, 2022
Make every request from a separate IPv6 address.

Http Proxy IPv6 Pool Make every request from a separate IPv6 address. https://zu1k.com/posts/tutorials/http-proxy-ipv6-pool/ Tutorial Assuming you alr

zu1k 280 Dec 31, 2022
Library + CLI-Tool to measure the TTFB (time to first byte) of HTTP requests. Additionally, this crate measures the times of DNS lookup, TCP connect and TLS handshake.

TTFB: CLI + Lib to Measure the TTFB of HTTP/1.1 Requests Similar to the network tab in Google Chrome or Mozilla Firefox, this crate helps you find the

Philipp Schuster 24 Dec 1, 2022