Skip to main content

This packages provides a way to update DNS records programmatically, for customers of Schlundtech, using their XML-Gateway.

Many thanks to https://github.com/martinlowinski/php-dyndns for doing the heavy lifting of figuring out how to talk to the XML-Gateway in a way that actually makes it do what we want.

Usage

First, you need to create a subdomain with an A-record in your domain, say home.example.com, and install this package, e.g. with pip install ws.ddns (or git clone ...; pip install -e .)

Then you can use the command-line utility provided by this package, like so:

$ schlund-ddns --username USER --password PASS home.example.com 1.2.3.4

If you have both an A and AAAA record for the subdomain, you have to update them separately, i.e. call the script twice, once with an IPv4 and a second time with IPv6 address.

(See schlund-ddns --help for more configuration parameters, e.g. the context that you were told to use when applying for the XML-Gateway.)

Instead of passing the parameters on the commandline, you can instead call schlund-ddns --config myconfig.ini (see below for the file format).

Alternatively, set up the provided cgi script schlund-ddns-cgi to provide HTTP access. You’ll need to provide username and password using a configuration file and then passing that file’s path as an environment variable. Here’s an example apache configuration snippet to do this:

ScriptAlias /dns-update /path/to/ddns/schlund-ddns-cgi
<Location /dns-update>
  SetEnv DDNS_CONFIG /path/to/ddns/config

  AuthName "Dynamic DNS"
  AuthType Basic
  AuthUserFile /path/to/ddns/htpasswd
  require valid-user
</Location>

The configuration file is a standard ini file and should look like this:

[default]
username = USER
password = PASS
context  = CONTEXT

You can optionally add an allowed_hostnames = one.example.com two.example.com whitespace-separated list to the config file, only those will then be accepted.

The HTTP protocol is modeled after the one from NoIP, that is, clients should perform a request like this to trigger a DNS update:

http://example.com/dns-update?hostname=home.example.com&myip=1.2.3.4

There is also a docker image of the HTTP service here: https://hub.docker.com/r/customelements/schlund-ddns

2FA support

  • Install pip install pyotp in addition to this package

  • Pass the 2FA secret (probably 16 characters, you may have to reverse-engineer them from the QR-Code used for setup) as –totp-secret` commandline or configuration parameter

CHANGES

1.6.0 (2024-02-05)

Changes

  • Support TOTP in CGI mode as well (totp)

1.5.0 (2023-09-18)

Changes

  • Support subdomains with both A and AAAA records (ipv6)

1.4.0 (2023-05-12)

Changes

  • Fix config parsing after introducing totp secret parameter (totp)

1.3.1 (2023-04-04)

Changes

  • Switch from setup.py to pyproject.toml (wheel)

1.3.0 (2023-03-20)

  • Support a configuration file for the command line script

  • Determine the domain name correctly for multi-level subdomains

  • Support 2FA TOTP authentication

  • Drop Python-2 support

1.2.0 (2020-10-04)

  • Model our response text after the noip.com protocol

1.1.1 (2018-03-05)

  • Handle PATH_INFO internally

1.1.0 (2018-03-03)

  • Add optional allowed_hostnames config option

1.0.4 (2018-03-03)

  • Make web part Python-3 compatible

1.0.3 (2018-03-03)

  • Make current-setuptools compatible

1.0.2 (2018-03-03)

  • Make Python-3 compatible

1.0.1 (2018-01-14)

  • Move from bitbucket to github

1.0.0 (2014-04-06)

  • First release.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ws.ddns-1.6.0.tar.gz (5.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ws.ddns-1.6.0-py3-none-any.whl (5.7 kB view details)

Uploaded Python 3

File details

Details for the file ws.ddns-1.6.0.tar.gz.

File metadata

  • Download URL: ws.ddns-1.6.0.tar.gz
  • Upload date:
  • Size: 5.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-httpx/0.23.3

File hashes

Hashes for ws.ddns-1.6.0.tar.gz
Algorithm Hash digest
SHA256 38a3b51974a00680a20464a627520df4c1132e462cfbe569e87ce44112fa7369
MD5 c6cb7a3bc3a02ed68f65c7c18ac076c4
BLAKE2b-256 bfec6d147de65768477dac16a0f376ae42d9991b8b4044cc337172352dc479e0

See more details on using hashes here.

File details

Details for the file ws.ddns-1.6.0-py3-none-any.whl.

File metadata

  • Download URL: ws.ddns-1.6.0-py3-none-any.whl
  • Upload date:
  • Size: 5.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-httpx/0.23.3

File hashes

Hashes for ws.ddns-1.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 987115fa7e12f51a131b2f3d336499a2ed01974f8122ac9b31ed091c3e556687
MD5 0531bd3e8258d6adb74fc8493db7dda0
BLAKE2b-256 7c91d230438dcf0813c2f0fa5d5c21ed18a5a6c7315462c59eaf2a96b7e87c60

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

1.6.0 This release

2 files

1.5.0

2 files

1.4.0

2 files

1.3.1

2 files

1.3.0

1 file

1.2.0

1 file

1.1.1

1 file

1.1.0

1 file

1.0.4

1 file

1.0.3

1 file

1.0.2

1 file

1.0.1

1 file

1.0.0

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page