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