3 releases

0.1.2 Aug 31, 2024
0.1.1 Aug 31, 2024
0.1.0 Aug 28, 2024

#453 in Network programming

Download history 431/week @ 2024-08-26 22/week @ 2024-09-02

453 downloads per month

MIT license

22KB
345 lines

━━━━ ❖ ━━━━



❖ ZenDNS

ZenDNS is an easy-to-use commandline utility to manage DDNS on Cloudflare, Namecheap, and DuckDNS


❖ Installation

Shell

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/dotzenith/zendns/releases/latest/download/zendns-installer.sh | sh

Brew

brew install dotzenith/tap/zendns

Powershell

irm https://github.com/dotzenith/zendns/releases/latest/download/zendns-installer.ps1 | iex

Cargo

cargo install zendns

Binaries

Pre-Compiled binaries for linux, mac, and windows are available in Releases

Source

  • First, install rust
git clone https://github.com/dotzenith/ZenDNS.git
cd ZenDNS
cargo build --release
./target/release/zendns

❖ Usage

Manage Dynamic DNS with serenity

Usage: zendns [OPTIONS] --config <CONFIG>

Options:
  -c, --config <CONFIG>  The yaml config file to use
  -l, --log <LOGFILE>    Where the output will be logged, uses stdout if not used
  -h, --help             Print help
  -V, --version          Print version

Normal

zendns --config /path/to/config.yaml

Dedicated Logfile

zendns --config /path/to/config.yaml --log /path/to/logfile

❖ Configuration

❖ Cloudflare

Create an API token for your zone in Profile Settings. The token must have Zone::DNS::Read and Zone::DNS::Edit permissions. Zone Resource can be set to Specific Zone and set to the zone you want to update. If you would like to use this same token for all other zones, please select All Zones. Leave Client IP Address Filtering as is, and define how long this token should stay valid for in the TTL section.

The configuration for Cloudflare looks as follows:

cloudflare:
  - key: "your-api-key"
    zone: "your-website.com"
    hostname: "your-hostname" # `@` if you want to update `your-website.com`
    ttl: 1 # 1 for auto, otherwise between 60 and 86400
    proxied: false

❖ Namecheap

See Namecheap's Guide on enabling DDNS

The configuration for Namecheap looks as follows:

namecheap:
  - password: "your-password-key"
    host: "your-hostname"
    domain: "your-website.com"

❖ DuckDNS

Copy the token from DuckDNS profile page

The configuration for DuckDNS looks as follows:

duckdns:
  - token: "your-token"
    domain: "your-hostname.duckdns.org"

❖ All Together

All of the providers can be added to the same file, with multiple entries per provider as well

cloudflare:
  - key: "your-api-key"
    zone: "your-website.com"
    hostname: "your-hostname" # `@` if you want to update `your-website.com`
    ttl: 1 # 1 for auto, otherwise between 60 and 86400
    proxied: false

namecheap:
  - password: "your-password-key"
    host: "your-hostname"
    domain: "your-website.com"

duckdns:
  - token: "your-token"
    domain: "your-hostname.duckdns.org"
  - token: "your-token"
    domain: "your-other-hostname.duckdns.org"

❖ What's New?

0.1.2 - Fetch IP only once


Dependencies

~9–21MB
~322K SLoC