fdu

freenom-dns-updater

A tool to update freenom's dns records

Showing:

Popularity

Downloads/wk

0

GitHub Stars

132

Maintenance

Last Commit

1yr ago

Contributors

7

Package

Dependencies

7

License

MIT

Categories

Readme

Freenom dns updater

GitHub license Unit Test dev and main branch PyPI - Wheel Total alerts Language grade: Python Quality Gate Status Lines of Code Vulnerabilities deepcode

A tool written in python to update freenom's dns records

Main Features

  • Manage (add/update/remove) a domain's dns record with cli
  • Automatic records updates according to ip (v4/v6) changes
  • Auto renew domains (thanks to Cedric Farinazzo)

Upcoming features

  • Password encryption

Installation

pip install freenom-dns-updater

Usage

Basic usage

Let's say you want to add or update your main A/AAAA domain records exemple.tk with your current ip (v4/v6). Simply type :

fdu record update $LOGIN $PASSWORD exemple.tk

Note that if you don't have a ipv6 access, the tool will detect that and will update only the A record (ipv4) of example.tk.

In order to add or update the subdomain sub.example.tk:

fdu record update $LOGIN $PASSWORD example.tk -n sub

Advanced usage

If you want to update multiple (sub)domains you could call the tool for each domains. Even better, you can create a configuration file.
A configuration is a YAML file, which look like :

login: yourlogin@somemail.domain
password: yourpassword

# list here the records you want to add/update
record:
  # the following will update both the A and AAAA records with your current ips (v4 and v6).
  # Note that if you don't have a ipv6 connection, the program'll detect it and will only update the A record (ipv4)
  - domain: test.tk

  # the following will update both your subdomain's A and AAAA records with your current ips (v4 and v6)
  - domain: test.tk
    name: mysubdomain

  # here's more advanced exemples

  # the following will update the AAAA record with a specified ipv6
  - domain: test2.tk
    name: # you can omit this line
    type: AAAA
    target: "fd2b:1c1b:3641:1cd8::" # note that you have to quote ipv6 addresses
    ttl: 24440

  # the following will update your subdomain's A record with your current ip (v4)
  - domain: test2.tk
    name: mysubdomain
    type: A
    target: auto # you can omit this line


  # you can omit the record type and give only ipv4 or ipv6 addresses.
  - domain: test2.tk
    name: ipv6sub
    target: "fd2b:1c1b:3641:1cd8::"

  - domain: test2.tk
    name: ipv4sub
    target: "64.64.64.64"

In order to use such configuration, you can use the following command :

fdu update /path/to/config

Where /path/to/config can be either:

  • A path to a file (default location is /etc/freenom.yml)
  • A http url (a raw secret gist for instance)

Schedule

In order to launch regularly an update, you can launch the tool with :

fdu process -c -i -r -t 3600 /path/to/config

Where the params are :

paramdescription
-ccache the ip and update only if there is any changes
-iignore errors when updating
-rrenew the domains
-ttime (in second) to wait between two updates
/path/to/configa path or a url to a configuration file

Using systemd

For ease of use a systemd unit file is available along the source code.

  • Save your configuration into /etc/freenom.yml
  • Copy the systemd/system/freenom-dns-updater.service into a valid systemd unit folder (/usr/lib/systemd/system/ for instance).
  • finally enable the service using
systemctl enable freenom-dns-updater
systemctl start freenom-dns-updater

Using other Os / services manager

There's two straightforward choices :

  • Launch the previous fdu process command
  • Schedule the fdu update command using cron, windows' scheduled task, ...

Known issues

  • The website my.freenom.com is not really stable (503/504 errors very often) => there's 3 retry on every request made by the tool but even with this it's common to face a remote server error

Docker image

If you want to run this tool in an "isolated" environment there's a docker image available at maxisoft/freenom-dns-updater

Ipv6

Note that if you want to use the ipv6 functionality, you have to enable the docker ipv6 stack

Examples

  • Update dns records using a gist config file :
docker run -it --rm maxisoft/freenom-dns-updater fdu update https://gist.githubusercontent.com/maxisoft/1b979b64e4cf5157d58d/raw/freenom.yml
  • Run the tool in a background docker with a local config file :
docker run -d --rm -v /path/to/config:/etc/freenom.yml maxisoft/freenom-dns-updater

Rate & Review

Great Documentation0
Easy to Use0
Performant0
Highly Customizable0
Bleeding Edge0
Responsive Maintainers0
Poor Documentation0
Hard to Use0
Slow0
Buggy0
Abandoned0
Unwelcoming Community0
100
No reviews found
Be the first to rate

Alternatives

No alternatives found

Tutorials

No tutorials found
Add a tutorial