diff --git a/README.md b/README.md index dcb8752..e71e8ef 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,112 @@ -# dynb -dynb - dynamic DNS update script for bash +# 🔃 dynb +dynb - dynamic DNS update script, written in bash + +IPv4 (A) and IPv6 (AAAA) record updates are supported. + +- [✨ Update Methods](#-update-methods) + - [APIs](#apis) + - [DynDNS2](#dyndns2) +- [📦 Requirements](#-requirements) +- [🚀 Installation](#-installation) +- [⚙ Configuration](#-configuration) +- [🏃 Run](#-run) +- [⏰ Cron](#-cron) + + +## ✨ Update Methods +The following update methods are currently implemented: + +### APIs + +* INWX JSON-RPC-API + Limitations: + - minimum TTL is 300 (5 minutes) + +### DynDNS2 + +* INWX DynDNS2 protocol + Limitations: + - minimum TTL is 60 (1 minute) + - one DynDNS account with one hostname is for free + +## 📦 Requirements + +* `curl` - The minimum requirement for running DynDNS2 operations + +essential for APIs: + +* `jq` - Command-line JSON processor + +optional requirement: + +* `getopt` for CLI parameter handling from [util-linux](https://pkgs.org/download/util-linux) + +## 🚀 Installation + +Download the latest release + +or simply clone this repo +``` +git clone https://github.com/EV21/dynb.git +``` + +If you want to add the script to you PATH, run :point_down: +``` +bash dynb.sh --link +``` +This convenience function only works if `util-linux` is installed on your system. + +## ⚙ Configuration + +You can use a config in form of an `.env` file. +Or if your system meets the relevant requirements you can use CLI parameters. + +Create `.env` in the app root directory or at `~/.local/share/dynb/.env`. +``` +_dyn_domain=dyndns.example.com + +## service provider could be inwx +_serviceProvider=inwx + +## update method options: domrobot, dyndns +_update_method=domrobot + +## ip mode could be either: 4, 6 or dual for dualstack +_ip_mode=dual + +## If you are using the DomRobot RPC-API enter your credentials for the web interface login here +## If you are using the DynDNS2 protocol enter your credentials here +_username= +_password= +``` + +## 🏃 Run + +If you have a config file just run :point_down: +``` +dynb +``` +Alternatively you can use parameters if your system meets the relevant requirements. This example shows the long form parameter, there are also short ones. +Call the help function :point_down: +``` +dynb --help +``` +``` +dynb --ip-mode dualstack --update-method domrobot --domain dyndns.example.com --username user42 --password SuperSecretPassword +``` +``` +dynb --ip-mode dualstack --update-method dyndns --provider inwx --domain dyndns.example.com --username user42 --password SuperSecretPassword +``` + +## ⏰ Cron +To automatically call the script you can use cron. + +execute :point_down: +``` +crontab -e +``` +then enter :point_down: to run dynb every five minutes. +``` +*/5 * * * * $HOME/.local/bin/dynb >> $HOME/.local/share/dynb/dynb-cron.log +``` +Note, cron typically does not use the users PATH variable.