From 4aede8cc512a1609d08b10682d3b26b695bc202b Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Thu, 11 May 2017 15:52:53 +0200 Subject: [PATCH] Add add-on duckDNS (#40) Add add-on duckDNS --- duckdns/Dockerfile | 14 ++++++++++++++ duckdns/config.json | 19 +++++++++++++++++++ duckdns/run.sh | 22 ++++++++++++++++++++++ 3 files changed, 55 insertions(+) create mode 100644 duckdns/Dockerfile create mode 100644 duckdns/config.json create mode 100644 duckdns/run.sh diff --git a/duckdns/Dockerfile b/duckdns/Dockerfile new file mode 100644 index 0000000..0a6936b --- /dev/null +++ b/duckdns/Dockerfile @@ -0,0 +1,14 @@ +FROM %%BASE_IMAGE%% + +# Add version +ENV VERSION %%VERSION%% +ENV LANG C.UTF-8 + +# Setup base +RUN apk add --no-cache jq curl + +# Copy data +COPY run.sh / +RUN chmod a+x /run.sh + +CMD [ "/run.sh" ] diff --git a/duckdns/config.json b/duckdns/config.json new file mode 100644 index 0000000..0753d60 --- /dev/null +++ b/duckdns/config.json @@ -0,0 +1,19 @@ +{ + "name": "Duck DNS", + "version": "0.1", + "slug": "duckdns", + "description": "Free dynamic DNS hosted on Amazon VPC", + "url": "https://home-assistant.io/addons/duckdns/", + "startup": "before", + "boot": "auto", + "options": { + "token": null, + "domains": [null], + "seconds": 300 + }, + "schema": { + "token": "email", + "domain": ["str"], + "seconds": "int" + } +} diff --git a/duckdns/run.sh b/duckdns/run.sh new file mode 100644 index 0000000..6af9056 --- /dev/null +++ b/duckdns/run.sh @@ -0,0 +1,22 @@ +#!/bin/bash +set -e + +CONFIG_PATH=/data/options.json + +TOKEN=$(jq --raw-output ".token" $CONFIG_PATH) +DOMAINS=$(jq --raw-output ".domains[]" $CONFIG_PATH) +SECONDS=$(jq --raw-output ".seconds" $CONFIG_PATH) + +for line in $DOMAINS; do + if [ -z "$DOMAIN_ARG" ]; then + DOMAIN_ARG="$line" + else + DOMAIN_ARG="$DOMAIN_ARG,$line" + fi +done + +# +while true; do + curl -k "https://www.duckdns.org/update?domains=$DOMAIN_ARG&token=$TOKEN&ip=" + sleep "$SECONDS" +done