Skip to content

regmibijay/strato-dyndns

Repository files navigation

Strato-DynDNS

Join the chat at https://gitter.im/strato-dyndns/community Build status Downloads Total API Usage

Strato-DynDNS updates your website's DNS records on DNS servers. Originally designed for Strato.

Disclaimer

  • This tool is in no way associated with Strato AG.
  • You use this tool at your own sole responsibility.
  • To fetch external IPV4 and IPV6 Addresses, this library uses a simple PHP endpoint written and hosted by myself. No data about users IP is stored or processed by me except for amount of usage of API which can be seen here publicly. However, logging of your IP address might still be done by Cloud Service Provider. If you do not want this, you can supply own API endpoint which returns pure IP address as response. See below in docs.

Currently Supported Registrars

  • Strato
  • Namecheap

Installation

To install this tool, please download a suited version for your operating system from releases page of github repository of this project. Alternatively, you can install it via pip: $ pip3 install strato-dyndns

If you want v1 (which only supports strato), use $ pip3 install strato-dyndns==1.2.1

Usage:

Command Line Option Function
-c or --config inputs a configuration file, look below for configuration file syntax
-u or --username specify username
-p or --password specify password
-d or --domain specify domain
-ip specify ip address, accepts multiple IP addresses separated by spaces
-v4 specifies to update IPv4 records
-v6 specifies to update IPv6 records

Python (3.6+) Library Documentation

The DynDNSClient library was written with importablity in mind. Full documentation to be found here.

Quality of Life (QoL)

For QoL, this tool offers a functionality to read parameters from a config file.

1. Configuration file

A configuration file needs to be in JSON Format and needs to contain mandatory parameters username, password and domain. An example config file could look like this:

{
  "username": "maindomain.de",
  "password": "S00p3rS3cur3_!",
  "domain": "subdomain.maindomain.de"
}

Please take into consideration that username for a Namecheap domain is actually the domain itself and domain is either @ or www etc. For more info about this, please read this document.

2. Automation

While this script itself does not YET support chronic executions, scheduling updates are indeed possible with tools like crontab e.g.

#open cronjobs in editing mode
$ crontab -e  
#add strato-dyndns to list
10 10 * * 1 strato_dyndns strato -c config.conf -v4 -v6
#this would update your DNS records at 10:10 am every week.

To-Do

  • add a block scheduler for own scheduling mechanism
  • add other domain registrars

Contributions

Any contribution to this tool are welcome. Any pull request, bug or issue reporting will be addressed as soon as possible.