122 lines
3.3 KiB
Markdown
122 lines
3.3 KiB
Markdown
[![pipeline status](http://gitlab.heili.eu/lukas/dynuiprefresher/badges/master/pipeline.svg)](http://gitlab.heili.eu/lukas/dynuiprefresher/-/commits/master)
|
|
# DynuIPRefresher
|
|
A lightweight C++ application to setup a service for refreshing a dynamic IP to the Dynu servers.
|
|
Dynu.com is a free DDns service and provides an API.
|
|
There is also a GUI for Windows Users and beginners.
|
|
|
|
## Installation
|
|
Download the latest Release at [Release_Page](https://github.com/Lukas-Heiligenbrunner/DynuIPRefresher/releases).
|
|
I'm providing executables for Debian/Ubuntu (.deb) and RHEL/Debian (.rpm).
|
|
But you can still compile the code my your own (see build section).
|
|
|
|
## Configuration
|
|
There is a configuration file `/etc/dynuiprefresher.cfg` where you have to specify the DYNU API key (get it from their homepage), the domainid and your domain.
|
|
Furthermore, you can optionally specify a Telegram API key and a Chat ID if you want to be notfied when your local ip changes.
|
|
|
|
To enable and start the service:
|
|
`systemctl enable dynuiprefresher.service` and `systemctl start dynuiprefresher.service`
|
|
|
|
## Usage
|
|
First of all configure the right keys in the `/etc/dynuiprefresher.cfg` or `%appdata%\DynuIpRefresher\dynuiprefresher.cfg` config file.
|
|
|
|
Afterwards use the following options:
|
|
|
|
```
|
|
help page:
|
|
[-h] [--help] print this help page
|
|
[-v] [--version] print the software version
|
|
[-f] [--force] force refresh of ip
|
|
[-l] [--loop] infinite loop to refresh ip every five minutes
|
|
[-c] [--checkconfig] validate configuration
|
|
[-ip] [--currentip] get current global ip
|
|
[no argument] normal ip check and refresh
|
|
```
|
|
|
|
### GUI
|
|
|
|
You can also build the grapical user inteface if you want.
|
|
There you can manually trigger a refresh in a gui and set all the config parameters.
|
|
|
|
Home Page:
|
|
![couldn't load image](https://i.ibb.co/syDwWQg/Screenshot-20200608-104253.png)
|
|
|
|
Config Page:
|
|
![couldn't load image](https://i.ibb.co/89vnJXY/Screenshot-20200608-104308.png)
|
|
|
|
|
|
## Build
|
|
## Basic Build
|
|
### Download source files
|
|
|
|
`git clone https://github.com/Lukas-Heiligenbrunner/DynuIPRefresher.git`
|
|
|
|
### install build dependencies
|
|
|
|
`libcurl`
|
|
`libconfig`
|
|
|
|
#### Debian:
|
|
`apt install libcurl4-openssl-dev`
|
|
|
|
#### Fedora:
|
|
`dnf install libcurl-devel libconfig-devel`
|
|
|
|
#### Alpine Linux:
|
|
Compiler dependencies:
|
|
|
|
`apk add make cmake g++`
|
|
|
|
Lib dependencies:
|
|
|
|
`apk add libcurl curl-dev libconfig libconfig-dev`
|
|
|
|
Packaging dependencies:
|
|
|
|
`apk add dpkg rpm`
|
|
|
|
|
|
#### dependencies for package build
|
|
`dpkg` --> debian/ubuntu package
|
|
|
|
`rpmbuild` --> Fedora/RedHat/CentOS package
|
|
|
|
### cmake project
|
|
cd into downloaded files and Generate makefiles:
|
|
|
|
`cmake -S . -B build`
|
|
|
|
### compile project
|
|
|
|
`make`
|
|
|
|
[root] install it to the system
|
|
|
|
`make install`
|
|
|
|
(optional) create Linux packages
|
|
|
|
`make package`
|
|
|
|
### GUI Build
|
|
|
|
please use the predefined Docker-Image here:
|
|
[DockerHub](https://hub.docker.com/repository/docker/luki42/dynuiprefresher_build)
|
|
|
|
|
|
### Windows cross build
|
|
Set Winbuild flag in CMakeList.txt.
|
|
|
|
Dependencies:
|
|
* MinGW Compiler
|
|
* MinGW-libcurl
|
|
* MinGW-libconfig++
|
|
|
|
Optional dependencies
|
|
* NSIS Pack tool (for creating installer)
|
|
* doxygen (for generating html doc)
|
|
|
|
The Simplest way to install all dependencies is the preconfigured Docker-Image:
|
|
[DockerHub](https://hub.docker.com/repository/docker/luki42/dynuiprefresher_build)
|
|
|
|
`make package` will pack it into a NSIS installer for Windows.
|