Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/Hentra/dyndns-netcup-go

Dynamic DNS client for the netcup dns api written in go.
https://github.com/Hentra/dyndns-netcup-go

Last synced: 5 days ago
JSON representation

Dynamic DNS client for the netcup dns api written in go.

Awesome Lists containing this project

README

        

# DYNDNS NETCUP GO
![Build](https://github.com/Hentra/dyndns-netcup-go/workflows/Build/badge.svg?branch=master)
[![Issues](https://img.shields.io/github/issues/Hentra/dyndns-netcup-go)](https://github.com/Hentra/dyndns-netcup-go/issues)
[![Release](https://img.shields.io/github/release/Hentra/dyndns-netcup-go?include_prereleases)](https://github.com/Hentra/dyndns-netcup-go/releases)
[![Go Report Card](https://goreportcard.com/badge/github.com/Hentra/dyndns-netcup-go)](https://goreportcard.com/report/github.com/Hentra/dyndns-netcup-go)

Dyndns client for the netcup DNS API written in go. Not
related to netcup GmbH. It is **heavily** inspired by
[this](https://github.com/stecklars/dynamic-dns-netcup-api)
project which might be also a good solution for your
dynamic DNS needs.

## Table of Contents

* [Features](#features)
* [Installation](#installation)
* [Docker](#docker)
* [Manual](#manual)
* [From source](#from-source)
* [Usage](#usage)
* [Prequisites](#prequisites)
* [Run dyndns-netcup-go](#run-dyndns-netcup-go)
* [Commandline flags](#commandline-flags)
* [Cache](#cache)
* [Contributing](#contributing)

## Features

* Multi domain support
* Subdomain support
* TTL update support
* Creation of a DNS record if it doesn't already exist
* Multi host support (nice when you need to update both `@` and `*`)
* IPv6 support

If you need additional features please open up an
[Issue](https://github.com/Hentra/dyndns-netcup-go/issues).

## Installation

### Docker

docker run -d \
-v $(pwd)/config.yml:/config.yml \
-e INTERVAL=300 \
ghcr.io/hentra/dyndns-netcup-go

The environment variable `INTERVAL` defines the interval of DNS updates in
seconds.

### Manual
1. Download the lastest [binary](https://github.com/Hentra/dyndns-netcup-go/releases) for your OS
2. `cd` to the file you downloaded and unzip
3. Put `dyndns-netcup-go` somewhere in your path

### From source
First, install [Go](https://golang.org/doc/install) as
recommended. After that run following commands:

git clone https://github.com/Hentra/dyndns-netcup-go.git
cd dyndns-netcup-go
go install

This will create a binary named `dyndns-netcup-go` and install it to your go
binary home. Make sure your `GOPATH` environment variable is set.

Refer to [Usage](#usage) for further information.

## Usage

### Prequisites

* You need to have a netcup account and a domain, obviously.
* Then you need an apikey and apipassword.
[Here](https://www.netcup-wiki.de/wiki/CCP_API#Authentifizierung) is a
description (in German) on how you get those.

### Run dyndns-netcup-go
1. Move/rename the [example configuration](./config/example.yml) `config/example.yml`
to `config.yml` and fill out all the fields. There are some comments in the file for further information.
2. Run `dyndns-netcup-go -v` in the **same** directory as your configuration file and it will
configure your DNS Records. You can specify the location of the
configuration file with the `-c` or `-config` flag if you don't want to run
it in the same directory. To disable the output for information remove the `-v` flag. You will
still get the output from errors.

It might be necessary to run this program every few minutes. That interval
depends on how you configured your TTL.

#### Commandline flags
For a list of all available command line flags run `dyndns-netcup-go -h`.

### Cache
Without the cache the application would lookup its ip addresses and fetch the DNS
records from netcup. After that it will compare the specified hosts in the DNS
records with the current ip addresses and update if necessary.

As reported in [this issue](https://github.com/Hentra/dyndns-netcup-go/issues/1)
it would be also possible to store the ip addresses between two runs of the
application and only fetch DNS records from netcup when they differ.

To enable the cache configure the two variables `IP-CACHE` and
`IP-CACHE-LOCATION` as according to the comments in `example.yml`.

## Contributing
For any feature requests and or bugs open up an
[Issue](https://github.com/Hentra/dyndns-netcup-go/issues). Feel free to also
add a pull request and I will have a look on it.