diff --git a/external/subpack/net/ddns-scripts/files/usr/bin/ddns.sh b/external/subpack/net/ddns-scripts/files/usr/bin/ddns.sh
new file mode 100644
index 0000000..921465f
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/bin/ddns.sh
@@ -0,0 +1,172 @@
+#!/bin/sh
+#
+# Copyright (C) 2020 TDT AG <development@tdt.de>
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See https://www.gnu.org/licenses/gpl-2.0.txt for more information.
+#
+
+. /lib/functions.sh
+
+DDNS_PACKAGE_DIR="/usr/share/ddns"
+URL="https://raw.githubusercontent.com/openwrt/packages/master/net/ddns-scripts/files"
+
+usage() {
+	local code="$1"
+	local msg="$2"
+
+	echo "$msg"
+	echo ""
+	echo "Usage: $(basename "$0") <command> <action> <service>"
+	echo ""
+	echo "Supported ddns <command>:"
+	echo "  service:  Command for custom ddns service providers"
+	echo ""
+	echo "Supported ddns 'service' command <action>:"
+	echo "  update:             Update local custom ddns service list"
+	echo "  list-available:     List all available custom service providers"
+	echo "  list-installed:     List all installed custom service providers"
+	echo "  install <service>:  Install custom service provider"
+	echo "  remove <service>:   Remove custom service provider"
+	echo "  purge:              Remove local custom ddns services"
+
+	exit "$code"
+}
+
+action_update() {
+	local cacert
+
+	config_load ddns
+	config_get url global 'url' "${URL}${DDNS_PACKAGE_DIR}"
+	config_get cacert global 'cacert' "IGNORE"
+	url="${url}/list"
+
+	mkdir -p "${DDNS_PACKAGE_DIR}"
+
+	if [ "$cacert" = "IGNORE" ]; then
+		uclient-fetch \
+			--no-check-certificate \
+			"$url" \
+			-O "${DDNS_PACKAGE_DIR}/list"
+	elif [ -f "$cacert" ]; then
+		uclient-fetch \
+			--ca-certificate="${cacert}" \
+			"$url" \
+			-O "${DDNS_PACKAGE_DIR}/list"
+	elif [ -n "$cacert" ]; then
+		echo "Certification file not found ($cacert)"
+		exit 5
+	fi
+}
+
+action_list_available() {
+	if [ -f "${DDNS_PACKAGE_DIR}/list" ]; then
+		cat "${DDNS_PACKAGE_DIR}/list"
+	else
+		echo "No custom service list file found. Please download first"
+		exit 3
+	fi
+}
+
+action_list_installed() {
+	if [ -d "${DDNS_PACKAGE_DIR}/custom" ]; then
+		ls "${DDNS_PACKAGE_DIR}/custom"
+	else
+		echo "No custom services installed"
+		exit 4
+	fi
+}
+
+action_install() {
+	local service="$1"
+
+	local url cacert
+
+	config_load ddns
+	config_get url global 'url' "${URL}${DDNS_PACKAGE_DIR}/default"
+	config_get cacert global 'cacert' "IGNORE"
+	url="${url}/${service}.json"
+
+	if [ -z "$service" ]; then
+		usage "4" "No custom service specified"
+	fi
+
+	mkdir -p "${DDNS_PACKAGE_DIR}/custom"
+
+	if [ "$cacert" = "IGNORE" ]; then
+		uclient-fetch \
+			--no-check-certificate \
+			"${url}" \
+			-O "${DDNS_PACKAGE_DIR}/custom/${service}.json"
+	elif [ -f "$cacert" ]; then
+		uclient-fetch \
+			--ca-certifcate="${cacert}" \
+			"${url}" \
+			-O "${DDNS_PACKAGE_DIR}/custom/${service}.json"
+	elif [ -n "$cacert" ]; then
+		echo "Certification file not found ($cacert)"
+		exit 5
+	fi
+}
+
+action_remove() {
+	local service="$1"
+	if [ -z "$service" ]; then
+		usage "4" "No custom service specified"
+	fi
+
+	rm "${DDNS_PACKAGE_DIR}/custom/${service}.json"
+}
+
+action_purge() {
+	rm -rf "${DDNS_PACKAGE_DIR}/custom"
+	rm -rf "${DDNS_PACKAGE_DIR}/list"
+}
+
+sub_service() {
+	local action="$1"
+	local service="$2"
+
+	case "$action" in
+		update)
+			action_update
+			;;
+		list-available)
+			action_list_available
+			;;
+		list-installed)
+			action_list_installed
+			;;
+		purge)
+			action_purge
+			;;
+		install)
+			action_install "$service"
+			;;
+		remove)
+			action_remove "$service"
+			;;
+		*)
+			usage "2" "Action not supported"
+			;;
+	esac
+}
+
+main() {
+	local cmd="$1"
+	local action="$2"
+	local service="$3"
+
+	[ "$#" -eq 0 ] && usage "1"
+
+	case "${cmd}" in
+		service)
+			sub_service "${action}" "${service}"
+			;;
+		*)
+			usage "1" "Command not supported"
+			;;
+	esac
+}
+
+main "$@"
diff --git a/external/subpack/net/ddns-scripts/files/usr/lib/ddns/dynamic_dns_functions.sh b/external/subpack/net/ddns-scripts/files/usr/lib/ddns/dynamic_dns_functions.sh
new file mode 100644
index 0000000..f36d11c
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/lib/ddns/dynamic_dns_functions.sh
@@ -0,0 +1,1396 @@
+#!/bin/sh
+# /usr/lib/ddns/dynamic_dns_functions.sh
+#
+#.Distributed under the terms of the GNU General Public License (GPL) version 2.0
+# Original written by Eric Paul Bishop, January 2008
+# (Loosely) based on the script on the one posted by exobyte in the forums here:
+# http://forum.openwrt.org/viewtopic.php?id=14040
+# extended and partial rewritten
+#.2014-2018 Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
+#
+# function timeout
+# copied from http://www.ict.griffith.edu.au/anthony/software/timeout.sh
+# @author Anthony Thyssen  6 April 2011
+#
+# variables in small chars are read from /etc/config/ddns
+# variables in big chars are defined inside these scripts as global vars
+# variables in big chars beginning with "__" are local defined inside functions only
+# set -vx  	#script debugger
+
+. /lib/functions.sh
+. /lib/functions/network.sh
+
+# GLOBAL VARIABLES #
+if [ -f "/usr/share/ddns/version" ]; then
+	VERSION="$(cat "/usr/share/ddns/version")"
+else
+	VERSION="unknown"
+fi
+SECTION_ID=""		# hold config's section name
+VERBOSE=0		# default mode is log to console, but easily changed with parameter
+MYPROG=$(basename $0)	# my program call name
+
+LOGFILE=""		# logfile - all files are set in dynamic_dns_updater.sh
+PIDFILE=""		# pid file
+UPDFILE=""		# store UPTIME of last update
+DATFILE=""		# save stdout data of WGet and other external programs called
+ERRFILE=""		# save stderr output of WGet and other external programs called
+IPFILE=""		# store registered IP for read by LuCI status
+TLDFILE=/usr/share/public_suffix_list.dat.gz	# TLD file used by split_FQDN
+
+CHECK_SECONDS=0		# calculated seconds out of given
+FORCE_SECONDS=0		# interval and unit
+RETRY_SECONDS=0		# in configuration
+
+LAST_TIME=0		# holds the uptime of last successful update
+CURR_TIME=0		# holds the current uptime
+NEXT_TIME=0		# calculated time for next FORCED update
+EPOCH_TIME=0		# seconds since 1.1.1970 00:00:00
+
+REGISTERED_IP=""	# holds the IP read from DNS
+LOCAL_IP=""		# holds the local IP read from the box
+
+URL_USER=""		# url encoded $username from config file
+URL_PASS=""		# url encoded $password from config file
+URL_PENC=""		# url encoded $param_enc from config file
+
+UPD_ANSWER=""		# Answer given by service on success
+
+ERR_LAST=0		# used to save $? return code of program and function calls
+ERR_UPDATE=0		# error counter on different local and registered ip
+
+PID_SLEEP=0		# ProcessID of current background "sleep"
+
+# regular expression to detect IPv4 / IPv6
+# IPv4       0-9   1-3x "." 0-9  1-3x "." 0-9  1-3x "." 0-9  1-3x
+IPV4_REGEX="[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}"
+# IPv6       ( ( 0-9a-f  1-4char ":") min 1x) ( ( 0-9a-f  1-4char   )optional) ( (":" 0-9a-f 1-4char  ) min 1x)
+IPV6_REGEX="\(\([0-9A-Fa-f]\{1,4\}:\)\{1,\}\)\(\([0-9A-Fa-f]\{1,4\}\)\{0,1\}\)\(\(:[0-9A-Fa-f]\{1,4\}\)\{1,\}\)"
+
+# characters that are dangerous to pass to a shell command line
+SHELL_ESCAPE="[\"\'\`\$\!();><{}?|\[\]\*\\\\]"
+
+# dns character set. "-" must be the last character
+DNS_CHARSET="[@a-zA-Z0-9._-]"
+
+# domains can have * for wildcard. "-" must be the last character
+DNS_CHARSET_DOMAIN="[@a-zA-Z0-9._*-]"
+
+# detect if called by ddns-lucihelper.sh script, disable retrys (empty variable == false)
+LUCI_HELPER=$(printf %s "$MYPROG" | grep -i "luci")
+
+# Name Server Lookup Programs
+BIND_HOST=$(command -v host)
+KNOT_HOST=$(command -v khost)
+DRILL=$(command -v drill)
+HOSTIP=$(command -v hostip)
+NSLOOKUP=$(command -v nslookup)
+
+# Transfer Programs
+WGET=$(command -v wget)
+$WGET -V 2>/dev/null | grep -F -q +https && WGET_SSL=$WGET
+
+CURL=$(command -v curl)
+# CURL_SSL not empty then SSL support available
+CURL_SSL=$($CURL -V 2>/dev/null | grep -F "https")
+# CURL_PROXY not empty then Proxy support available
+CURL_PROXY=$(find /lib /usr/lib -name libcurl.so* -exec strings {} 2>/dev/null \; | grep -im1 "all_proxy")
+
+UCLIENT_FETCH=$(command -v uclient-fetch)
+
+# Global configuration settings
+# allow NON-public IP's
+upd_privateip=$(uci -q get ddns.global.upd_privateip) || upd_privateip=0
+
+# directory to store run information to.
+ddns_rundir=$(uci -q get ddns.global.ddns_rundir) || ddns_rundir="/var/run/ddns"
+[ -d $ddns_rundir ] || mkdir -p -m755 $ddns_rundir
+
+# directory to store log files
+ddns_logdir=$(uci -q get ddns.global.ddns_logdir) || ddns_logdir="/var/log/ddns"
+[ -d $ddns_logdir ] || mkdir -p -m755 $ddns_logdir
+
+# number of lines to before rotate logfile
+ddns_loglines=$(uci -q get ddns.global.ddns_loglines) || ddns_loglines=250
+ddns_loglines=$((ddns_loglines + 1))	# correct sed handling
+
+# format to show date information in log and luci-app-ddns default ISO 8601 format
+ddns_dateformat=$(uci -q get ddns.global.ddns_dateformat) || ddns_dateformat="%F %R"
+DATE_PROG="date +'$ddns_dateformat'"
+
+# USE_CURL if GNU Wget and cURL installed normally Wget is used by do_transfer()
+# to change this use global option use_curl '1'
+USE_CURL=$(uci -q get ddns.global.use_curl) || USE_CURL=0	# read config
+[ -n "$CURL" ] || USE_CURL=0					# check for cURL
+
+# loads all options for a given package and section
+# also, sets all_option_variables to a list of the variable names
+# $1 = ddns, $2 = SECTION_ID
+load_all_config_options()
+{
+	local __PKGNAME="$1"
+	local __SECTIONID="$2"
+	local __VAR
+	local __ALL_OPTION_VARIABLES=""
+
+	# this callback loads all the variables in the __SECTIONID section when we do
+	# config_load. We need to redefine the option_cb for different sections
+	# so that the active one isn't still active after we're done with it.  For reference
+	# the $1 variable is the name of the option and $2 is the name of the section
+	config_cb()
+	{
+		if [ ."$2" = ."$__SECTIONID" ]; then
+			option_cb()
+			{
+				__ALL_OPTION_VARIABLES="$__ALL_OPTION_VARIABLES $1"
+			}
+		else
+			option_cb() { return 0; }
+		fi
+	}
+
+	config_load "$__PKGNAME"
+
+	# Given SECTION_ID not found so no data, so return 1
+	[ -z "$__ALL_OPTION_VARIABLES" ] && return 1
+
+	for __VAR in $__ALL_OPTION_VARIABLES
+	do
+		config_get "$__VAR" "$__SECTIONID" "$__VAR"
+	done
+	return 0
+}
+
+# read's all service sections from ddns config
+# $1 = Name of variable to store
+load_all_service_sections() {
+	local __DATA=""
+	config_cb()
+	{
+		# only look for section type "service", ignore everything else
+		[ "$1" = "service" ] && __DATA="$__DATA $2"
+	}
+	config_load "ddns"
+
+	eval "$1=\"$__DATA\""
+	return
+}
+
+# starts updater script for all given sections or only for the one given
+# $1 = interface (Optional: when given only scripts are started
+# configured for that interface)
+# used by /etc/hotplug.d/iface/95-ddns on IFUP
+# and by /etc/init.d/ddns start
+start_daemon_for_all_ddns_sections()
+{
+	local __EVENTIF="$1"
+	local __SECTIONS=""
+	local __SECTIONID=""
+	local __IFACE=""
+
+	load_all_service_sections __SECTIONS
+	for __SECTIONID in $__SECTIONS; do
+		config_get __IFACE "$__SECTIONID" interface "wan"
+		[ -z "$__EVENTIF" -o "$__IFACE" = "$__EVENTIF" ] || continue
+		if [ $VERBOSE -eq 0 ]; then	# start in background
+			/usr/lib/ddns/dynamic_dns_updater.sh -v 0 -S "$__SECTIONID" -- start &
+		else
+			/usr/lib/ddns/dynamic_dns_updater.sh -v "$VERBOSE" -S "$__SECTIONID" -- start
+		fi
+	done
+}
+
+# stop sections process incl. childs (sleeps)
+# $1 = section
+stop_section_processes() {
+	local __PID=0
+	local __PIDFILE="$ddns_rundir/$1.pid"
+	[ $# -ne 1 ] && write_log 12 "Error calling 'stop_section_processes()' - wrong number of parameters"
+
+	[ -e "$__PIDFILE" ] && {
+		__PID=$(cat $__PIDFILE)
+		ps | grep "^[\t ]*$__PID" >/dev/null 2>&1 && kill $__PID || __PID=0	# terminate it
+	}
+	[ $__PID -eq 0 ] # report if process was running
+}
+
+# stop updater script for all defines sections or only for one given
+# $1 = interface (optional)
+# used by /etc/hotplug.d/iface/95-ddns on 'ifdown'
+# and by /etc/init.d/ddns stop
+# needed because we also need to kill "sleep" child processes
+stop_daemon_for_all_ddns_sections() {
+	local __EVENTIF="$1"
+	local __SECTIONS=""
+	local __SECTIONID=""
+	local __IFACE=""
+
+	load_all_service_sections __SECTIONS
+	for __SECTIONID in $__SECTIONS;	do
+		config_get __IFACE "$__SECTIONID" interface "wan"
+		[ -z "$__EVENTIF" -o "$__IFACE" = "$__EVENTIF" ] || continue
+		stop_section_processes "$__SECTIONID"
+	done
+}
+
+# reports to console, logfile, syslog
+# $1	loglevel 7 == Debug to 0 == EMERG
+#	value +10 will exit the scripts
+# $2..n	text to report
+write_log() {
+	local __LEVEL __EXIT __CMD __MSG __MSE
+	local __TIME=$(date +%H%M%S)
+	[ $1 -ge 10 ] && {
+		__LEVEL=$(($1-10))
+		__EXIT=1
+	} || {
+		__LEVEL=$1
+		__EXIT=0
+	}
+	shift	# remove loglevel
+	[ $__EXIT -eq 0 ] && __MSG="$*" || __MSG="$* - TERMINATE"
+	case $__LEVEL in		# create log message and command depending on loglevel
+		0)	__CMD="logger -p user.emerg -t ddns-scripts[$$] $SECTION_ID: $__MSG"
+			__MSG=" $__TIME EMERG : $__MSG" ;;
+		1)	__CMD="logger -p user.alert -t ddns-scripts[$$] $SECTION_ID: $__MSG"
+			__MSG=" $__TIME ALERT : $__MSG" ;;
+		2)	__CMD="logger -p user.crit -t ddns-scripts[$$] $SECTION_ID: $__MSG"
+			__MSG=" $__TIME  CRIT : $__MSG" ;;
+		3)	__CMD="logger -p user.err -t ddns-scripts[$$] $SECTION_ID: $__MSG"
+			__MSG=" $__TIME ERROR : $__MSG" ;;
+		4)	__CMD="logger -p user.warn -t ddns-scripts[$$] $SECTION_ID: $__MSG"
+			__MSG=" $__TIME  WARN : $__MSG" ;;
+		5)	__CMD="logger -p user.notice -t ddns-scripts[$$] $SECTION_ID: $__MSG"
+			__MSG=" $__TIME  note : $__MSG" ;;
+		6)	__CMD="logger -p user.info -t ddns-scripts[$$] $SECTION_ID: $__MSG"
+			__MSG=" $__TIME  info : $__MSG" ;;
+		7)	__MSG=" $__TIME       : $__MSG";;
+		*) 	return;;
+	esac
+
+	# verbose echo
+	[ $VERBOSE -gt 0 -o $__EXIT -gt 0 ] && echo -e "$__MSG"
+	# write to logfile
+	if [ ${use_logfile:-1} -eq 1 -o $VERBOSE -gt 1 ]; then
+		if [ -n "$password" ]; then
+			# url encode __MSG, password already done
+			urlencode __MSE "$__MSG"
+			# replace encoded password inside encoded message
+			# and url decode (newline was encoded as %00)
+			__MSG=$( echo -e "$__MSE" \
+				| sed -e "s/$URL_PASS/***PW***/g" \
+				| sed -e "s/+/ /g; s/%00/\n/g; s/%/\\\\x/g" | xargs -0 printf "%b" )
+		fi
+		printf "%s\n" "$__MSG" >> $LOGFILE
+		# VERBOSE > 1 then NO loop so NO truncate log to $ddns_loglines lines
+		[ $VERBOSE -gt 1 ] || sed -i -e :a -e '$q;N;'$ddns_loglines',$D;ba' $LOGFILE
+	fi
+	[ -n "$LUCI_HELPER" ] && return	# nothing else todo when running LuCI helper script
+	[ $__LEVEL -eq 7 ] && return	# no syslog for debug messages
+	__CMD=$(echo -e "$__CMD" | tr -d '\n' | tr '\t' '     ')        # remove \n \t chars
+	[ $__EXIT  -eq 1 ] && {
+		eval '$__CMD'	# force syslog before exit
+		exit 1
+	}
+	[ $use_syslog -eq 0 ] && return
+	[ $((use_syslog + __LEVEL)) -le 7 ] && eval '$__CMD'
+
+	return
+}
+
+# replace all special chars to their %hex value
+# used for USERNAME and PASSWORD in update_url
+# unchanged: "-"(minus) "_"(underscore) "."(dot) "~"(tilde)
+# to verify: "'"(single quote) '"'(double quote)	# because shell delimiter
+#            "$"(Dollar)				# because used as variable output
+# tested with the following string stored via Luci Application as password / username
+# A B!"#AA$1BB%&'()*+,-./:;<=>?@[\]^_`{|}~	without problems at Dollar or quotes
+urlencode() {
+	# $1	Name of Variable to store encoded string to
+	# $2	string to encode
+	local __ENC
+
+	[ $# -ne 2 ] && write_log 12 "Error calling 'urlencode()' - wrong number of parameters"
+
+	__ENC="$(awk -v str="$2" 'BEGIN{ORS="";for(i=32;i<=127;i++)lookup[sprintf("%c",i)]=i
+		for(k=1;k<=length(str);++k){enc=substr(str,k,1);if(enc!~"[-_.~a-zA-Z0-9]")enc=sprintf("%%%02x", lookup[enc]);print enc}}')"
+
+	eval "$1=\"$__ENC\""	# transfer back to variable
+	return 0
+}
+
+# extract url or script for given DDNS Provider from
+# $1	Name of the provider
+# $2	Provider directory
+# $3	Name of Variable to store url to
+# $4	Name of Variable to store script to
+# $5	Name of Variable to store service answer to
+get_service_data() {
+	local provider="$1"
+	shift
+	local dir="$1"
+	shift
+
+	. /usr/share/libubox/jshn.sh
+	local name data url answer script
+
+	[ $# -ne 3 ] && write_log 12 "Error calling 'get_service_data()' - wrong number of parameters"
+
+	[ -f "${dir}/${provider}.json" ] || {
+		eval "$1=\"\""
+		eval "$2=\"\""
+		eval "$3=\"\""
+		return 1
+	}
+
+	json_load_file "${dir}/${provider}.json"
+	json_get_var name "name"
+	if [ "$use_ipv6" -eq "1" ]; then
+		json_select "ipv6"
+	else
+		json_select "ipv4"
+	fi
+	json_get_var data "url"
+	json_get_var answer "answer"
+	json_select ".."
+	json_cleanup
+
+	# check if URL or SCRIPT is given
+	url=$(echo "$data" | grep "^http")
+	[ -z "$url" ] && script="/usr/lib/ddns/${data}"
+
+	eval "$1=\"$url\""
+	eval "$2=\"$script\""
+	eval "$3=\"$answer\""
+	return 0
+}
+
+# Calculate seconds from interval and unit
+# $1	Name of Variable to store result in
+# $2	Number and
+# $3	Unit of time interval
+get_seconds() {
+	[ $# -ne 3 ] && write_log 12 "Error calling 'get_seconds()' - wrong number of parameters"
+	case "$3" in
+		"days" )	eval "$1=$(( $2 * 86400 ))";;
+		"hours" )	eval "$1=$(( $2 * 3600 ))";;
+		"minutes" )	eval "$1=$(( $2 * 60 ))";;
+		* )		eval "$1=$2";;
+	esac
+	return 0
+}
+
+timeout() {
+	#.copied from http://www.ict.griffith.edu.au/anthony/software/timeout.sh
+	# only did the following changes
+	#	- commented out "#!/bin/bash" and usage section
+	#	- replace exit by return for usage as function
+	#	- some reformatting
+	#
+	# timeout [-SIG] time [--] command args...
+	#
+	# Run the given command until completion, but kill it if it runs too long.
+	# Specifically designed to exit immediately (no sleep interval) and clean up
+	# nicely without messages or leaving any extra processes when finished.
+	#
+	# Example use
+	#    timeout 5 countdown
+	#
+	# Based on notes in my "Shell Script Hints", section "Command Timeout"
+	#   http://www.ict.griffith.edu.au/~anthony/info/shell/script.hints
+	#
+	# This script uses a lot of tricks to terminate both the background command,
+	# the timeout script, and even the sleep process.  It also includes trap
+	# commands to prevent sub-shells reporting expected "Termination Errors".
+	#
+	# It took years of occasional trials, errors and testing to get a pure bash
+	# timeout command working as well as this does.
+	#
+	#.Anthony Thyssen     6 April 2011
+	#
+#	PROGNAME=$(type $0 | awk '{print $3}')	# search for executable on path
+#	PROGDIR=$(dirname $PROGNAME)		# extract directory of program
+#	PROGNAME=$(basename $PROGNAME)		# base name of program
+
+	# output the script comments as docs
+#	Usage() {
+#		echo >&2 "$PROGNAME:" "$@"
+#		sed >&2 -n '/^###/q; /^#/!q; s/^#//; s/^ //; 3s/^/Usage: /; 2,$ p' "$PROGDIR/$PROGNAME"
+#		exit 10;
+#	}
+
+	SIG=-TERM
+
+	while [ $# -gt 0 ]; do
+		case "$1" in
+			--)
+				# forced end of user options
+				shift;
+				break ;;
+#			-\?|--help|--doc*)
+#				Usage ;;
+			[0-9]*)
+				TIMEOUT="$1" ;;
+			-*)
+				SIG="$1" ;;
+			*)
+				# unforced  end of user options
+				break ;;
+		esac
+		shift	# next option
+	done
+
+	# run main command in backgrounds and get its pid
+	"$@" &
+	command_pid=$!
+
+	# timeout sub-process abort countdown after ABORT seconds! also backgrounded
+	sleep_pid=0
+	(
+		# cleanup sleep process
+		trap 'kill -TERM $sleep_pid; return 1' 1 2 3 15
+		# sleep timeout period in background
+		sleep $TIMEOUT &
+		sleep_pid=$!
+		wait $sleep_pid
+		# Abort the command
+		kill $SIG $command_pid >/dev/null 2>&1
+		return 1
+	) &
+	timeout_pid=$!
+
+	# Wait for main command to finished or be timed out
+	wait $command_pid
+	status=$?
+
+	# Clean up timeout sub-shell - if it is still running!
+	kill $timeout_pid 2>/dev/null
+	wait $timeout_pid 2>/dev/null
+
+	# Uncomment to check if a LONG sleep still running (no sleep should be)
+	# sleep 1
+	# echo "-----------"
+	# /bin/ps j  # uncomment to show if abort "sleep" is still sleeping
+
+	return $status
+}
+
+# sanitize a variable
+# $1	variable name
+# $2	allowed shell pattern
+# $3	disallowed shell pattern
+sanitize_variable() {
+	local __VAR=$1
+	eval __VALUE=\$$__VAR
+	local __ALLOWED=$2
+	local __REJECT=$3
+
+	# removing all allowed should give empty string
+	if [ -n "$__ALLOWED" ]; then
+		[ -z "${__VALUE//$__ALLOWED}" ] || write_log 12 "sanitize on $__VAR found characters outside allowed subset"
+	fi
+
+	# removing rejected pattern should give the same string as the input
+	if [ -n "$__REJECT" ]; then
+		[ "$__VALUE" = "${__VALUE//$__REJECT}" ] || write_log 12 "sanitize on $__VAR found rejected characters"
+	fi
+}
+
+# verify given host and port is connectable
+# $1	Host/IP to verify
+# $2	Port to verify
+verify_host_port() {
+	local __HOST=$1
+	local __PORT=$2
+	local __NC=$(command -v nc)
+	local __NCEXT=$($(command -v nc) --help 2>&1 | grep "\-w" 2>/dev/null)	# busybox nc compiled with extensions
+	local __IP __IPV4 __IPV6 __RUNPROG __PROG __ERR
+	# return codes
+	# 1	system specific error
+	# 2	nslookup/host error
+	# 3	nc (netcat) error
+	# 4	unmatched IP version
+
+	[ $# -ne 2 ] && write_log 12 "Error calling 'verify_host_port()' - wrong number of parameters"
+
+	# check if ip or FQDN was given
+	__IPV4=$(echo $__HOST | grep -m 1 -o "$IPV4_REGEX$")	# do not detect ip in 0.0.0.0.example.com
+	__IPV6=$(echo $__HOST | grep -m 1 -o "$IPV6_REGEX")
+	# if FQDN given get IP address
+	[ -z "$__IPV4" -a -z "$__IPV6" ] && {
+		if [ -n "$BIND_HOST" ]; then	# use BIND host if installed
+			__PROG="BIND host"
+			__RUNPROG="$BIND_HOST $__HOST >$DATFILE 2>$ERRFILE"
+		elif [ -n "$KNOT_HOST" ]; then	# use Knot host if installed
+			__PROG="Knot host"
+			__RUNPROG="$KNOT_HOST $__HOST >$DATFILE 2>$ERRFILE"
+		elif [ -n "$DRILL" ]; then	# use drill if installed
+			__PROG="drill"
+			__RUNPROG="$DRILL -V0 $__HOST A >$DATFILE 2>$ERRFILE"			# IPv4
+			__RUNPROG="$__RUNPROG; $DRILL -V0 $__HOST AAAA >>$DATFILE 2>>$ERRFILE"	# IPv6
+		elif [ -n "$HOSTIP" ]; then	# use hostip if installed
+			__PROG="hostip"
+			__RUNPROG="$HOSTIP $__HOST >$DATFILE 2>$ERRFILE"			# IPv4
+			__RUNPROG="$__RUNPROG; $HOSTIP -6 $__HOST >>$DATFILE 2>>$ERRFILE"	# IPv6
+		else	# use BusyBox nslookup
+			__PROG="BusyBox nslookup"
+			__RUNPROG="$NSLOOKUP $__HOST >$DATFILE 2>$ERRFILE"
+		fi
+		write_log 7 "#> $__RUNPROG"
+		eval $__RUNPROG
+		__ERR=$?
+		# command error
+		[ $__ERR -gt 0 ] && {
+			write_log 3 "DNS Resolver Error - $__PROG Error '$__ERR'"
+			write_log 7 "$(cat $ERRFILE)"
+			return 2
+		}
+		# extract IP address
+		if [ -n "$BIND_HOST" -o -n "$KNOT_HOST" ]; then	# use BIND host or Knot host if installed
+			__IPV4="$(awk -F "address " '/has address/ {print $2; exit}' "$DATFILE")"
+			__IPV6="$(awk -F "address " '/has IPv6/ {print $2; exit}' "$DATFILE")"
+		elif [ -n "$DRILL" ]; then	# use drill if installed
+			__IPV4="$(awk '/^'"$__HOST"'/ {print $5}' "$DATFILE" | grep -m 1 -o "$IPV4_REGEX")"
+			__IPV6="$(awk '/^'"$__HOST"'/ {print $5}' "$DATFILE" | grep -m 1 -o "$IPV6_REGEX")"
+		elif [ -n "$HOSTIP" ]; then	# use hostip if installed
+			__IPV4="$(grep -m 1 -o "$IPV4_REGEX" "$DATFILE")"
+			__IPV6="$(grep -m 1 -o "$IPV6_REGEX" "$DATFILE")"
+		else	# use BusyBox nslookup
+			__IPV4="$(sed -ne "/^Name:/,\$ { s/^Address[0-9 ]\{0,\}: \($IPV4_REGEX\).*$/\\1/p }" "$DATFILE")"
+			__IPV6="$(sed -ne "/^Name:/,\$ { s/^Address[0-9 ]\{0,\}: \($IPV6_REGEX\).*$/\\1/p }" "$DATFILE")"
+		fi
+	}
+
+	# check IP version if forced
+	if [ $force_ipversion -ne 0 ]; then
+		__ERR=0
+		[ $use_ipv6 -eq 0 -a -z "$__IPV4" ] && __ERR=4
+		[ $use_ipv6 -eq 1 -a -z "$__IPV6" ] && __ERR=6
+		[ $__ERR -gt 0 ] && {
+			[ -n "$LUCI_HELPER" ] && return 4
+			write_log 14 "Verify host Error '4' - Forced IP Version IPv$__ERR don't match"
+		}
+	fi
+
+	# verify nc command
+	# busybox nc compiled without -l option "NO OPT l!" -> critical error
+	$__NC --help 2>&1 | grep -i "NO OPT l!" >/dev/null 2>&1 && \
+		write_log 12 "Busybox nc (netcat) compiled without '-l' option, error 'NO OPT l!'"
+	# busybox nc compiled with extensions
+	$__NC --help 2>&1 | grep "\-w" >/dev/null 2>&1 && __NCEXT="TRUE"
+
+	# connectivity test
+	# run busybox nc to HOST PORT
+	# busybox might be compiled with "FEATURE_PREFER_IPV4_ADDRESS=n"
+	# then nc will try to connect via IPv6 if there is any IPv6 available on any host interface
+	# not worrying, if there is an IPv6 wan address
+	# so if not "force_ipversion" to use_ipv6 then connect test via ipv4, if available
+	[ $force_ipversion -ne 0 -a $use_ipv6 -ne 0 -o -z "$__IPV4" ] && __IP=$__IPV6 || __IP=$__IPV4
+
+	if [ -n "$__NCEXT" ]; then	# BusyBox nc compiled with extensions (timeout support)
+		__RUNPROG="$__NC -w 1 $__IP $__PORT </dev/null >$DATFILE 2>$ERRFILE"
+		write_log 7 "#> $__RUNPROG"
+		eval $__RUNPROG
+		__ERR=$?
+		[ $__ERR -eq 0 ] && return 0
+		write_log 3 "Connect error - BusyBox nc (netcat) Error '$__ERR'"
+		write_log 7 "$(cat $ERRFILE)"
+		return 3
+	else		# nc compiled without extensions (no timeout support)
+		__RUNPROG="timeout 2 -- $__NC $__IP $__PORT </dev/null >$DATFILE 2>$ERRFILE"
+		write_log 7 "#> $__RUNPROG"
+		eval $__RUNPROG
+		__ERR=$?
+		[ $__ERR -eq 0 ] && return 0
+		write_log 3 "Connect error - BusyBox nc (netcat) timeout Error '$__ERR'"
+		return 3
+	fi
+}
+
+# verify given DNS server if connectable
+# $1	DNS server to verify
+verify_dns() {
+	local __ERR=255	# last error buffer
+	local __CNT=0	# error counter
+
+	[ $# -ne 1 ] && write_log 12 "Error calling 'verify_dns()' - wrong number of parameters"
+	write_log 7 "Verify DNS server '$1'"
+
+	while [ $__ERR -ne 0 ]; do
+		# DNS uses port 53
+		verify_host_port "$1" "53"
+		__ERR=$?
+		if [ -n "$LUCI_HELPER" ]; then	# no retry if called by LuCI helper script
+			return $__ERR
+		elif [ $__ERR -ne 0 -a $VERBOSE -gt 1 ]; then	# VERBOSE > 1 then NO retry
+			write_log 4 "Verify DNS server '$1' failed - Verbose Mode: $VERBOSE - NO retry on error"
+			return $__ERR
+		elif [ $__ERR -ne 0 ]; then
+			__CNT=$(( $__CNT + 1 ))	# increment error counter
+			# if error count > retry_count leave here
+			[ $retry_count -gt 0 -a $__CNT -gt $retry_count ] && \
+				write_log 14 "Verify DNS server '$1' failed after $retry_count retries"
+
+			write_log 4 "Verify DNS server '$1' failed - retry $__CNT/$retry_count in $RETRY_SECONDS seconds"
+			sleep $RETRY_SECONDS &
+			PID_SLEEP=$!
+			wait $PID_SLEEP	# enable trap-handler
+			PID_SLEEP=0
+		fi
+	done
+	return 0
+}
+
+# analyze and verify given proxy string
+# $1	Proxy-String to verify
+verify_proxy() {
+	#	complete entry		user:password@host:port
+	# 				inside user and password NO '@' of ":" allowed
+	#	host and port only	host:port
+	#	host only		host		ERROR unsupported
+	#	IPv4 address instead of host	123.234.234.123
+	#	IPv6 address instead of host	[xxxx:....:xxxx]	in square bracket
+	local __TMP __HOST __PORT
+	local __ERR=255	# last error buffer
+	local __CNT=0	# error counter
+
+	[ $# -ne 1 ] && write_log 12 "Error calling 'verify_proxy()' - wrong number of parameters"
+	write_log 7 "Verify Proxy server 'http://$1'"
+
+	# try to split user:password "@" host:port
+	__TMP=$(echo $1 | awk -F "@" '{print $2}')
+	# no "@" found - only host:port is given
+	[ -z "$__TMP" ] && __TMP="$1"
+	# now lets check for IPv6 address
+	__HOST=$(echo $__TMP | grep -m 1 -o "$IPV6_REGEX")
+	# IPv6 host address found read port
+	if [ -n "$__HOST" ]; then
+		# IPv6 split at "]:"
+		__PORT=$(echo $__TMP | awk -F "]:" '{print $2}')
+	else
+		__HOST=$(echo $__TMP | awk -F ":" '{print $1}')
+		__PORT=$(echo $__TMP | awk -F ":" '{print $2}')
+	fi
+	# No Port detected - EXITING
+	[ -z "$__PORT" ] && {
+		[ -n "$LUCI_HELPER" ] && return 5
+		write_log 14 "Invalid Proxy server Error '5' - proxy port missing"
+	}
+
+	while [ $__ERR -gt 0 ]; do
+		verify_host_port "$__HOST" "$__PORT"
+		__ERR=$?
+		if [ -n "$LUCI_HELPER" ]; then	# no retry if called by LuCI helper script
+			return $__ERR
+		elif [ $__ERR -gt 0 -a $VERBOSE -gt 1 ]; then	# VERBOSE > 1 then NO retry
+			write_log 4 "Verify Proxy server '$1' failed - Verbose Mode: $VERBOSE - NO retry on error"
+			return $__ERR
+		elif [ $__ERR -gt 0 ]; then
+			__CNT=$(( $__CNT + 1 ))	# increment error counter
+			# if error count > retry_count leave here
+			[ $retry_count -gt 0 -a $__CNT -gt $retry_count ] && \
+				write_log 14 "Verify Proxy server '$1' failed after $retry_count retries"
+
+			write_log 4 "Verify Proxy server '$1' failed - retry $__CNT/$retry_count in $RETRY_SECONDS seconds"
+			sleep $RETRY_SECONDS &
+			PID_SLEEP=$!
+			wait $PID_SLEEP	# enable trap-handler
+			PID_SLEEP=0
+		fi
+	done
+	return 0
+}
+
+do_transfer() {
+	# $1	# URL to use
+	local __URL="$1"
+	local __ERR=0
+	local __CNT=0	# error counter
+	local __PROG  __RUNPROG
+
+	[ $# -ne 1 ] && write_log 12 "Error in 'do_transfer()' - wrong number of parameters"
+
+	# Use ip_network as default for bind_network if not separately specified
+	[ -z "$bind_network" ] && [ "$ip_source" = "network" ] && [ "$ip_network" ] && bind_network="$ip_network"
+
+	# lets prefer GNU Wget because it does all for us - IPv4/IPv6/HTTPS/PROXY/force IP version
+	if [ -n "$WGET_SSL" ] && [ $USE_CURL -eq 0 ]; then 			# except global option use_curl is set to "1"
+		__PROG="$WGET --hsts-file=/tmp/.wget-hsts -nv -t 1 -O $DATFILE -o $ERRFILE"	# non_verbose no_retry outfile errfile
+		# force network/ip to use for communication
+		if [ -n "$bind_network" ]; then
+			local __BINDIP
+			# set correct program to detect IP
+			[ $use_ipv6 -eq 0 ] && __RUNPROG="network_get_ipaddr" || __RUNPROG="network_get_ipaddr6"
+			eval "$__RUNPROG __BINDIP $bind_network" || \
+				write_log 13 "Can not detect local IP using '$__RUNPROG $bind_network' - Error: '$?'"
+			write_log 7 "Force communication via IP '$__BINDIP'"
+			__PROG="$__PROG --bind-address=$__BINDIP"
+		fi
+		# force ip version to use
+		if [ $force_ipversion -eq 1 ]; then
+			[ $use_ipv6 -eq 0 ] && __PROG="$__PROG -4" || __PROG="$__PROG -6"	# force IPv4/IPv6
+		fi
+		# set certificate parameters
+		if [ $use_https -eq 1 ]; then
+			if [ "$cacert" = "IGNORE" ]; then	# idea from Ticket #15327 to ignore server cert
+				__PROG="$__PROG --no-check-certificate"
+			elif [ -f "$cacert" ]; then
+				__PROG="$__PROG --ca-certificate=${cacert}"
+			elif [ -d "$cacert" ]; then
+				__PROG="$__PROG --ca-directory=${cacert}"
+			elif [ -n "$cacert" ]; then		# it's not a file and not a directory but given
+				write_log 14 "No valid certificate(s) found at '$cacert' for HTTPS communication"
+			fi
+		fi
+		# disable proxy if no set (there might be .wgetrc or .curlrc or wrong environment set)
+		[ -z "$proxy" ] && __PROG="$__PROG --no-proxy"
+
+		__RUNPROG="$__PROG '$__URL'"	# build final command
+		__PROG="GNU Wget"		# reuse for error logging
+
+	# 2nd choice is cURL IPv4/IPv6/HTTPS
+	# libcurl might be compiled without Proxy or HTTPS Support
+	elif [ -n "$CURL" ]; then
+		__PROG="$CURL -RsS -o $DATFILE --stderr $ERRFILE"
+		# check HTTPS support
+		[ -z "$CURL_SSL" -a $use_https -eq 1 ] && \
+			write_log 13 "cURL: libcurl compiled without https support"
+		# force network/interface-device to use for communication
+		if [ -n "$bind_network" ]; then
+			local __DEVICE
+			network_get_device __DEVICE $bind_network || \
+				write_log 13 "Can not detect local device using 'network_get_device $bind_network' - Error: '$?'"
+			write_log 7 "Force communication via device '$__DEVICE'"
+			__PROG="$__PROG --interface $__DEVICE"
+		fi
+		# force ip version to use
+		if [ $force_ipversion -eq 1 ]; then
+			[ $use_ipv6 -eq 0 ] && __PROG="$__PROG -4" || __PROG="$__PROG -6"	# force IPv4/IPv6
+		fi
+		# set certificate parameters
+		if [ $use_https -eq 1 ]; then
+			if [ "$cacert" = "IGNORE" ]; then	# idea from Ticket #15327 to ignore server cert
+				__PROG="$__PROG --insecure"	# but not empty better to use "IGNORE"
+			elif [ -f "$cacert" ]; then
+				__PROG="$__PROG --cacert $cacert"
+			elif [ -d "$cacert" ]; then
+				__PROG="$__PROG --capath $cacert"
+			elif [ -n "$cacert" ]; then		# it's not a file and not a directory but given
+				write_log 14 "No valid certificate(s) found at '$cacert' for HTTPS communication"
+			fi
+		fi
+		# disable proxy if no set (there might be .wgetrc or .curlrc or wrong environment set)
+		# or check if libcurl compiled with proxy support
+		if [ -z "$proxy" ]; then
+			__PROG="$__PROG --noproxy '*'"
+		elif [ -z "$CURL_PROXY" ]; then
+			# if libcurl has no proxy support and proxy should be used then force ERROR
+			write_log 13 "cURL: libcurl compiled without Proxy support"
+		fi
+
+		__RUNPROG="$__PROG '$__URL'"	# build final command
+		__PROG="cURL"			# reuse for error logging
+
+	# uclient-fetch possibly with ssl support if /lib/libustream-ssl.so installed
+	elif [ -n "$UCLIENT_FETCH" ]; then
+		# UCLIENT_FETCH_SSL not empty then SSL support available
+		UCLIENT_FETCH_SSL=$(find /lib /usr/lib -name libustream-ssl.so* 2>/dev/null)
+		__PROG="$UCLIENT_FETCH -q -O $DATFILE"
+		# force network/ip not supported
+		[ -n "$__BINDIP" ] && \
+			write_log 14 "uclient-fetch: FORCE binding to specific address not supported"
+		# force ip version to use
+		if [ $force_ipversion -eq 1 ]; then
+			[ $use_ipv6 -eq 0 ] && __PROG="$__PROG -4" || __PROG="$__PROG -6"       # force IPv4/IPv6
+		fi
+		# https possibly not supported
+		[ $use_https -eq 1 -a -z "$UCLIENT_FETCH_SSL" ] && \
+			write_log 14 "uclient-fetch: no HTTPS support! Additional install one of ustream-ssl packages"
+		# proxy support
+		[ -z "$proxy" ] && __PROG="$__PROG -Y off" || __PROG="$__PROG -Y on"
+		# https & certificates
+		if [ $use_https -eq 1 ]; then
+			if [ "$cacert" = "IGNORE" ]; then
+				__PROG="$__PROG --no-check-certificate"
+			elif [ -f "$cacert" ]; then
+				__PROG="$__PROG --ca-certificate=$cacert"
+			elif [ -n "$cacert" ]; then		# it's not a file; nothing else supported
+				write_log 14 "No valid certificate file '$cacert' for HTTPS communication"
+			fi
+		fi
+		__RUNPROG="$__PROG '$__URL' 2>$ERRFILE"		# build final command
+		__PROG="uclient-fetch"				# reuse for error logging
+
+	# Busybox Wget or any other wget in search $PATH (did not support neither IPv6 nor HTTPS)
+	elif [ -n "$WGET" ]; then
+		__PROG="$WGET -q -O $DATFILE"
+		# force network/ip not supported
+		[ -n "$__BINDIP" ] && \
+			write_log 14 "BusyBox Wget: FORCE binding to specific address not supported"
+		# force ip version not supported
+		[ $force_ipversion -eq 1 ] && \
+			write_log 14 "BusyBox Wget: Force connecting to IPv4 or IPv6 addresses not supported"
+		# https not supported
+		[ $use_https -eq 1 ] && \
+			write_log 14 "BusyBox Wget: no HTTPS support"
+		# disable proxy if no set (there might be .wgetrc or .curlrc or wrong environment set)
+		[ -z "$proxy" ] && __PROG="$__PROG -Y off"
+
+		__RUNPROG="$__PROG '$__URL' 2>$ERRFILE"		# build final command
+		__PROG="Busybox Wget"				# reuse for error logging
+
+	else
+		write_log 13 "Neither 'Wget' nor 'cURL' nor 'uclient-fetch' installed or executable"
+	fi
+
+	while : ; do
+		write_log 7 "#> $__RUNPROG"
+		eval $__RUNPROG			# DO transfer
+		__ERR=$?			# save error code
+		[ $__ERR -eq 0 ] && return 0	# no error leave
+		[ -n "$LUCI_HELPER" ] && return 1	# no retry if called by LuCI helper script
+
+		write_log 3 "$__PROG Error: '$__ERR'"
+		write_log 7 "$(cat $ERRFILE)"		# report error
+
+		[ $VERBOSE -gt 1 ] && {
+			# VERBOSE > 1 then NO retry
+			write_log 4 "Transfer failed - Verbose Mode: $VERBOSE - NO retry on error"
+			return 1
+		}
+
+		__CNT=$(( $__CNT + 1 ))	# increment error counter
+		# if error count > retry_count leave here
+		[ $retry_count -gt 0 -a $__CNT -gt $retry_count ] && \
+			write_log 14 "Transfer failed after $retry_count retries"
+
+		write_log 4 "Transfer failed - retry $__CNT/$retry_count in $RETRY_SECONDS seconds"
+		sleep $RETRY_SECONDS &
+		PID_SLEEP=$!
+		wait $PID_SLEEP	# enable trap-handler
+		PID_SLEEP=0
+	done
+	# we should never come here there must be a programming error
+	write_log 12 "Error in 'do_transfer()' - program coding error"
+}
+
+send_update() {
+	# $1	# IP to set at DDNS service provider
+	local __IP
+
+	[ $# -ne 1 ] && write_log 12 "Error calling 'send_update()' - wrong number of parameters"
+
+	if [ $upd_privateip -eq 0 ]; then
+		# verify given IP / no private IPv4's / no IPv6 addr starting with fxxx of with ":"
+		[ $use_ipv6 -eq 0 ] && __IP=$(echo $1 | grep -v -E "(^0|^10\.|^100\.6[4-9]\.|^100\.[7-9][0-9]\.|^100\.1[0-1][0-9]\.|^100\.12[0-7]\.|^127|^169\.254|^172\.1[6-9]\.|^172\.2[0-9]\.|^172\.3[0-1]\.|^192\.168)")
+		[ $use_ipv6 -eq 1 ] && __IP=$(echo $1 | grep "^[0-9a-eA-E]")
+	else
+		__IP=$(echo $1 | grep -m 1 -o "$IPV4_REGEX")		# valid IPv4 or
+		[ -z "$__IP" ] && __IP=$(echo $1 | grep -m 1 -o "$IPV6_REGEX")	# IPv6
+	fi
+	[ -z "$__IP" ] && {
+		write_log 3 "No or private or invalid IP '$1' given! Please check your configuration"
+		return 127
+	}
+
+	if [ -n "$update_script" ]; then
+		write_log 7 "parsing script '$update_script'"
+		. $update_script
+	else
+		local __URL __ERR
+
+		# do replaces in URL
+		__URL=$(echo $update_url | sed -e "s#\[USERNAME\]#$URL_USER#g"	-e "s#\[PASSWORD\]#$URL_PASS#g" \
+					       -e "s#\[PARAMENC\]#$URL_PENC#g"	-e "s#\[PARAMOPT\]#$param_opt#g" \
+					       -e "s#\[DOMAIN\]#$domain#g"	-e "s#\[IP\]#$__IP#g")
+		[ $use_https -ne 0 ] && __URL=$(echo $__URL | sed -e 's#^http:#https:#')
+
+		do_transfer "$__URL" || return 1
+
+		write_log 7 "DDNS Provider answered:${N}$(cat $DATFILE)"
+
+		[ -z "$UPD_ANSWER" ] && return 0	# not set then ignore
+
+		grep -i -E "$UPD_ANSWER" $DATFILE >/dev/null 2>&1
+		return $?	# "0" if found
+	fi
+}
+
+get_local_ip () {
+	# $1	Name of Variable to store local IP (LOCAL_IP)
+	local __CNT=0	# error counter
+	local __RUNPROG __DATA __URL __ERR
+
+	[ $# -ne 1 ] && write_log 12 "Error calling 'get_local_ip()' - wrong number of parameters"
+	write_log 7 "Detect local IP on '$ip_source'"
+
+	while : ; do
+		if [ -n "$ip_network" -a "$ip_source" = "network" ]; then
+			# set correct program
+			network_flush_cache	# force re-read data from ubus
+			[ $use_ipv6 -eq 0 ] && __RUNPROG="network_get_ipaddr" \
+					    || __RUNPROG="network_get_ipaddr6"
+			eval "$__RUNPROG __DATA $ip_network" || \
+				write_log 13 "Can not detect local IP using $__RUNPROG '$ip_network' - Error: '$?'"
+			[ -n "$__DATA" ] && write_log 7 "Local IP '$__DATA' detected on network '$ip_network'"
+		elif [ -n "$ip_interface" -a "$ip_source" = "interface" ]; then
+			local __DATA4=""; local __DATA6=""
+			if [ -n "$(command -v ip)" ]; then		# ip program installed
+				write_log 7 "#> ip -o addr show dev $ip_interface scope global >$DATFILE 2>$ERRFILE"
+				ip -o addr show dev $ip_interface scope global >$DATFILE 2>$ERRFILE
+				__ERR=$?
+				if [ $__ERR -eq 0 ]; then
+					# DATFILE (sample)
+					# 10: l2tp-inet: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1456 qdisc fq_codel state UNKNOWN qlen 3\    link/ppp
+					# 10: l2tp-inet    inet 95.30.176.51 peer 95.30.176.1/32 scope global l2tp-inet\       valid_lft forever preferred_lft forever
+					# 5: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP qlen 1000\    link/ether 08:00:27:d0:10:32 brd ff:ff:ff:ff:ff:ff
+					# 5: eth1    inet 172.27.10.128/24 brd 172.27.10.255 scope global eth1\       valid_lft forever preferred_lft forever
+					# 5: eth1    inet 172.55.55.155/24 brd 172.27.10.255 scope global eth1\       valid_lft 12345sec preferred_lft 12345sec
+					# 5: eth1    inet6 2002:b0c7:f326::806b:c629:b8b9:433/128 scope global dynamic \       valid_lft 8026sec preferred_lft 8026sec
+					# 5: eth1    inet6 fd43:5368:6f6d:6500:806b:c629:b8b9:433/128 scope global dynamic \       valid_lft 8026sec preferred_lft 8026sec
+					# 5: eth1    inet6 fd43:5368:6f6d:6500:a00:27ff:fed0:1032/64 scope global dynamic \       valid_lft 14352sec preferred_lft 14352sec
+					# 5: eth1    inet6 2002:b0c7:f326::a00:27ff:fed0:1032/64 scope global dynamic \       valid_lft 14352sec preferred_lft 14352sec
+
+					#    remove      remove     remove      replace     replace
+					#     link     inet6 fxxx    sec      forever=>-1   / => ' ' to separate subnet from ip
+					sed "/link/d; /inet6 f/d; s/sec//g; s/forever/-1/g; s/\// /g" $DATFILE | \
+						awk '{ print $3" "$4" "$NF }' > $ERRFILE	# temp reuse ERRFILE
+					# we only need    inet?   IP  prefered time
+
+					local __TIME4=0;  local __TIME6=0
+					local __TYP __ADR __TIME
+					while read __TYP __ADR __TIME; do
+						__TIME=${__TIME:-0}	# supress shell errors on last (empty) line of DATFILE
+						#    IPversion       no "-1" record stored - now "-1" record or new time > oldtime
+						[ "$__TYP" = "inet6" -a $__TIME6 -ge 0 -a \( $__TIME -lt 0 -o $__TIME -gt $__TIME6 \) ] && {
+							__DATA6="$__ADR"
+							__TIME6="$__TIME"
+						}
+						[ "$__TYP" = "inet" -a $__TIME4 -ge 0 -a \( $__TIME -lt 0 -o $__TIME -gt $__TIME4 \) ] && {
+							__DATA4="$__ADR"
+							__TIME4="$__TIME"
+						}
+					done < $ERRFILE
+				else
+					write_log 3 "ip Error: '$__ERR'"
+					write_log 7 "$(cat $ERRFILE)"		# report error
+				fi
+			else					# use deprecated ifconfig
+				write_log 7 "#> ifconfig $ip_interface >$DATFILE 2>$ERRFILE"
+				ifconfig $ip_interface >$DATFILE 2>$ERRFILE
+				__ERR=$?
+				if [ $__ERR -eq 0 ]; then
+					__DATA4=$(awk '
+						/inet addr:/ {	# Filter IPv4
+						#   inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0
+						$1="";		# remove inet
+						$3="";		# remove Bcast: ...
+						$4="";		# remove Mask: ...
+						FS=":";		# separator ":"
+						$0=$0;		# reread to activate separator
+						$1="";		# remove addr
+						FS=" ";		# set back separator to default " "
+						$0=$0;		# reread to activate separator (remove whitespaces)
+						print $1;	# print IPv4 addr
+						}' $DATFILE
+					)
+					__DATA6=$(awk '
+						/inet6/ && /: [0-9a-eA-E]/ {	# Filter IPv6 exclude fxxx
+						#   inet6 addr: 2001:db8::xxxx:xxxx/32 Scope:Global
+						FS="/";		# separator "/"
+						$0=$0;		# reread to activate separator
+						$2="";		# remove everything behind "/"
+						FS=" ";		# set back separator to default " "
+						$0=$0;		# reread to activate separator
+						print $3;	# print IPv6 addr
+						}' $DATFILE
+					)
+				else
+					write_log 3 "ifconfig Error: '$__ERR'"
+					write_log 7 "$(cat $ERRFILE)"		# report error
+				fi
+			fi
+			[ $use_ipv6 -eq 0 ] && __DATA="$__DATA4" || __DATA="$__DATA6"
+			[ -n "$__DATA" ] && write_log 7 "Local IP '$__DATA' detected on interface '$ip_interface'"
+		elif [ -n "$ip_script" -a "$ip_source" = "script" ]; then
+			write_log 7 "#> $ip_script >$DATFILE 2>$ERRFILE"
+			eval $ip_script >$DATFILE 2>$ERRFILE
+			__ERR=$?
+			if [ $__ERR -eq 0 ]; then
+				__DATA=$(cat $DATFILE)
+				[ -n "$__DATA" ] && write_log 7 "Local IP '$__DATA' detected via script '$ip_script'"
+			else
+				write_log 3 "$ip_script Error: '$__ERR'"
+				write_log 7 "$(cat $ERRFILE)"		# report error
+			fi
+		elif [ -n "$ip_url" -a "$ip_source" = "web" ]; then
+			do_transfer "$ip_url"
+			# use correct regular expression
+			[ $use_ipv6 -eq 0 ] \
+				&& __DATA=$(grep -m 1 -o "$IPV4_REGEX" $DATFILE) \
+				|| __DATA=$(grep -m 1 -o "$IPV6_REGEX" $DATFILE)
+			[ -n "$__DATA" ] && write_log 7 "Local IP '$__DATA' detected on web at '$ip_url'"
+		else
+			write_log 12 "Error in 'get_local_ip()' - unhandled ip_source '$ip_source'"
+		fi
+		# valid data found return here
+		[ -n "$__DATA" ] && {
+			eval "$1=\"$__DATA\""
+			return 0
+		}
+
+		[ -n "$LUCI_HELPER" ] && return 1	# no retry if called by LuCI helper script
+
+		write_log 7 "Data detected:"
+		write_log 7 "$(cat $DATFILE)"
+
+		[ $VERBOSE -gt 1 ] && {
+			# VERBOSE > 1 then NO retry
+			write_log 4 "Get local IP via '$ip_source' failed - Verbose Mode: $VERBOSE - NO retry on error"
+			return 1
+		}
+
+		__CNT=$(( $__CNT + 1 ))	# increment error counter
+		# if error count > retry_count leave here
+		[ $retry_count -gt 0 -a $__CNT -gt $retry_count ] && \
+			write_log 14 "Get local IP via '$ip_source' failed after $retry_count retries"
+		write_log 4 "Get local IP via '$ip_source' failed - retry $__CNT/$retry_count in $RETRY_SECONDS seconds"
+		sleep $RETRY_SECONDS &
+		PID_SLEEP=$!
+		wait $PID_SLEEP	# enable trap-handler
+		PID_SLEEP=0
+	done
+	# we should never come here there must be a programming error
+	write_log 12 "Error in 'get_local_ip()' - program coding error"
+}
+
+get_registered_ip() {
+	# $1	Name of Variable to store public IP (REGISTERED_IP)
+	# $2	(optional) if set, do not retry on error
+	local __CNT=0	# error counter
+	local __ERR=255
+	local __REGEX  __PROG  __RUNPROG  __DATA  __IP
+	# return codes
+	# 1	no IP detected
+
+	[ $# -lt 1 -o $# -gt 2 ] && write_log 12 "Error calling 'get_registered_ip()' - wrong number of parameters"
+	[ $is_glue -eq 1 -a -z "$BIND_HOST" ] && write_log 14 "Lookup of glue records is only supported using BIND host"
+	write_log 7 "Detect registered/public IP"
+
+	# set correct regular expression
+	[ $use_ipv6 -eq 0 ] && __REGEX="$IPV4_REGEX" || __REGEX="$IPV6_REGEX"
+
+	if [ -n "$BIND_HOST" ]; then
+		__PROG="$BIND_HOST"
+		[ $use_ipv6 -eq 0 ] && __PROG="$__PROG -t A"  || __PROG="$__PROG -t AAAA"
+		if [ $force_ipversion -eq 1 ]; then			# force IP version
+			[ $use_ipv6 -eq 0 ] && __PROG="$__PROG -4"  || __PROG="$__PROG -6"
+		fi
+		[ $force_dnstcp -eq 1 ] && __PROG="$__PROG -T"	# force TCP
+		[ $is_glue -eq 1 ] && __PROG="$__PROG -v" # use verbose output to get additional section
+
+		__RUNPROG="$__PROG $lookup_host $dns_server >$DATFILE 2>$ERRFILE"
+		__PROG="BIND host"
+	elif [ -n "$KNOT_HOST" ]; then
+		__PROG="$KNOT_HOST"
+		[ $use_ipv6 -eq 0 ] && __PROG="$__PROG -t A"  || __PROG="$__PROG -t AAAA"
+		if [ $force_ipversion -eq 1 ]; then			# force IP version
+			[ $use_ipv6 -eq 0 ] && __PROG="$__PROG -4"  || __PROG="$__PROG -6"
+		fi
+		[ $force_dnstcp -eq 1 ] && __PROG="$__PROG -T"	# force TCP
+
+		__RUNPROG="$__PROG $lookup_host $dns_server >$DATFILE 2>$ERRFILE"
+		__PROG="Knot host"
+	elif [ -n "$DRILL" ]; then
+		__PROG="$DRILL -V0"			# drill options name @server type
+		if [ $force_ipversion -eq 1 ]; then			# force IP version
+			[ $use_ipv6 -eq 0 ] && __PROG="$__PROG -4"  || __PROG="$__PROG -6"
+		fi
+		[ $force_dnstcp -eq 1 ] && __PROG="$__PROG -t" || __PROG="$__PROG -u"	# force TCP
+		__PROG="$__PROG $lookup_host"
+		[ -n "$dns_server" ] && __PROG="$__PROG @$dns_server"
+		[ $use_ipv6 -eq 0 ] && __PROG="$__PROG A"  || __PROG="$__PROG AAAA"
+
+		__RUNPROG="$__PROG >$DATFILE 2>$ERRFILE"
+		__PROG="drill"
+	elif [ -n "$HOSTIP" ]; then	# hostip package installed
+		__PROG="$HOSTIP"
+		[ $force_dnstcp -ne 0 ] && \
+			write_log 14 "hostip - no support for 'DNS over TCP'"
+
+		# is IP given as dns_server ?
+		__IP=$(echo $dns_server | grep -m 1 -o "$IPV4_REGEX")
+		[ -z "$__IP" ] && __IP=$(echo $dns_server | grep -m 1 -o "$IPV6_REGEX")
+
+		# we got NO ip for dns_server, so build command
+		[ -z "$__IP" -a -n "$dns_server" ] && {
+			__IP="\`$HOSTIP"
+			[ $use_ipv6 -eq 1 -a $force_ipversion -eq 1 ] && __IP="$__IP -6"
+			__IP="$__IP $dns_server | grep -m 1 -o"
+			[ $use_ipv6 -eq 1 -a $force_ipversion -eq 1 ] \
+				&& __IP="$__IP '$IPV6_REGEX'" \
+				|| __IP="$__IP '$IPV4_REGEX'"
+			__IP="$__IP \`"
+		}
+
+		[ $use_ipv6 -eq 1 ] && __PROG="$__PROG -6"
+		[ -n "$dns_server" ] && __PROG="$__PROG -r $__IP"
+		__RUNPROG="$__PROG $lookup_host >$DATFILE 2>$ERRFILE"
+		__PROG="hostip"
+	elif [ -n "$NSLOOKUP" ]; then	# last use BusyBox nslookup
+		NSLOOKUP_MUSL=$($(command -v nslookup) localhost 2>&1 | grep -F "(null)")	# not empty busybox compiled with musl
+		[ $force_dnstcp -ne 0 ] && \
+			write_log 14 "Busybox nslookup - no support for 'DNS over TCP'"
+		[ -n "$NSLOOKUP_MUSL" -a -n "$dns_server" ] && \
+			write_log 14 "Busybox compiled with musl - nslookup don't support the use of DNS Server"
+		[ $force_ipversion -ne 0 ] && \
+			write_log 5 "Busybox nslookup - no support to 'force IP Version' (ignored)"
+
+		__RUNPROG="$NSLOOKUP $lookup_host $dns_server >$DATFILE 2>$ERRFILE"
+		__PROG="BusyBox nslookup"
+	else	# there must be an error
+		write_log 12 "Error in 'get_registered_ip()' - no supported Name Server lookup software accessible"
+	fi
+
+	while : ; do
+		write_log 7 "#> $__RUNPROG"
+		eval $__RUNPROG
+		__ERR=$?
+		if [ $__ERR -ne 0 ]; then
+			write_log 3 "$__PROG error: '$__ERR'"
+			write_log 7 "$(cat $ERRFILE)"
+		else
+			if [ -n "$BIND_HOST" -o -n "$KNOT_HOST" ]; then
+				if [ $is_glue -eq 1 ]; then
+					__DATA=$(cat $DATFILE | grep "^$lookup_host" | grep -om1 "$__REGEX" )
+				else
+					__DATA=$(cat $DATFILE | awk -F "address " '/has/ {print $2; exit}' )
+				fi
+			elif [ -n "$DRILL" ]; then
+				__DATA=$(cat $DATFILE | awk '/^'"$lookup_host"'/ {print $5; exit}' )
+			elif [ -n "$HOSTIP" ]; then
+				__DATA=$(cat $DATFILE | grep -om1 "$__REGEX")
+			elif [ -n "$NSLOOKUP" ]; then
+				__DATA=$(cat $DATFILE | sed -ne "/^Name:/,\$ { s/^Address[0-9 ]\{0,\}: \($__REGEX\).*$/\\1/p }" )
+			fi
+			[ -n "$__DATA" ] && {
+				write_log 7 "Registered IP '$__DATA' detected"
+				[ -z "$IPFILE" ] || echo "$__DATA" > $IPFILE
+				eval "$1=\"$__DATA\""	# valid data found
+				return 0		# leave here
+			}
+			write_log 4 "NO valid IP found"
+			__ERR=127
+		fi
+		[ -z "$IPFILE" ] || echo "" > $IPFILE
+
+		[ -n "$LUCI_HELPER" ] && return $__ERR	# no retry if called by LuCI helper script
+		[ -n "$2" ] && return $__ERR		# $2 is given -> no retry
+		[ $VERBOSE -gt 1 ] && {
+			# VERBOSE > 1 then NO retry
+			write_log 4 "Get registered/public IP for '$lookup_host' failed - Verbose Mode: $VERBOSE - NO retry on error"
+			return $__ERR
+		}
+
+		__CNT=$(( $__CNT + 1 ))	# increment error counter
+		# if error count > retry_count leave here
+		[ $retry_count -gt 0 -a $__CNT -gt $retry_count ] && \
+			write_log 14 "Get registered/public IP for '$lookup_host' failed after $retry_count retries"
+
+		write_log 4 "Get registered/public IP for '$lookup_host' failed - retry $__CNT/$retry_count in $RETRY_SECONDS seconds"
+		sleep $RETRY_SECONDS &
+		PID_SLEEP=$!
+		wait $PID_SLEEP	# enable trap-handler
+		PID_SLEEP=0
+	done
+	# we should never come here there must be a programming error
+	write_log 12 "Error in 'get_registered_ip()' - program coding error"
+}
+
+get_uptime() {
+	# $1	Variable to store result in
+	[ $# -ne 1 ] && write_log 12 "Error calling 'verify_host_port()' - wrong number of parameters"
+	local __UPTIME=$(cat /proc/uptime)
+	eval "$1=\"${__UPTIME%%.*}\""
+}
+
+trap_handler() {
+	# $1	trap signal
+	# $2	optional (exit status)
+	local __PIDS __PID
+	local __ERR=${2:-0}
+	local __OLD_IFS=$IFS
+	local __NEWLINE_IFS='
+' # __NEWLINE_IFS
+
+	[ $PID_SLEEP -ne 0 ] && kill -$1 $PID_SLEEP 2>/dev/null	# kill pending sleep if exist
+
+	case $1 in
+		 0)	if [ $__ERR -eq 0 ]; then
+				write_log 5 "PID '$$' exit normal at $(eval $DATE_PROG)${N}"
+			else
+				write_log 4 "PID '$$' exit WITH ERROR '$__ERR' at $(eval $DATE_PROG)${N}"
+			fi ;;
+		 1)	write_log 6 "PID '$$' received 'SIGHUP' at $(eval $DATE_PROG)"
+			# reload config via starting the script again
+			/usr/lib/ddns/dynamic_dns_updater.sh -v "0" -S "$__SECTIONID" -- start || true
+			exit 0 ;;	# and leave this one
+		 2)	write_log 5 "PID '$$' terminated by 'SIGINT' at $(eval $DATE_PROG)${N}";;
+		 3)	write_log 5 "PID '$$' terminated by 'SIGQUIT' at $(eval $DATE_PROG)${N}";;
+		15)	write_log 5 "PID '$$' terminated by 'SIGTERM' at $(eval $DATE_PROG)${N}";;
+		 *)	write_log 13 "Unhandled signal '$1' in 'trap_handler()'";;
+	esac
+
+	__PIDS=$(pgrep -P $$)	# get my childs (pgrep prints with "newline")
+	IFS=$__NEWLINE_IFS
+	for __PID in $__PIDS; do
+		kill -$1 $__PID	# terminate it
+	done
+	IFS=$__OLD_IFS
+
+	# remove out and err file
+	[ -f $DATFILE ] && rm -f $DATFILE
+	[ -f $ERRFILE ] && rm -f $ERRFILE
+
+	# exit with correct handling:
+	# remove trap handling settings and send kill to myself
+	trap - 0 1 2 3 15
+	[ $1 -gt 0 ] && kill -$1 $$
+}
+
+split_FQDN() {
+	# $1	FQDN to split
+	# $2	name of variable to store TLD
+	# $3	name of variable to store (reg)Domain
+	# $4	name of variable to store Host/Subdomain
+
+	[ $# -ne 4 ] && write_log 12 "Error calling 'split_FQDN()' - wrong number of parameters"
+	[ -z "$1"  ] && write_log 12 "Error calling 'split_FQDN()' - missing FQDN to split"
+	[ -f $TLDFILE ] || write_log 12 "Error calling 'split_FQDN()' - missing file '$TLDFILE'"
+
+	local _HOST _FDOM _CTLD _FTLD
+	local _SET="$@"					# save given function parameters
+
+	local _PAR=$(echo "$1" | tr [A-Z] [a-z] | tr "." " ")	# to lower and replace DOT with SPACE
+	set -- $_PAR					# set new as function parameters
+	_PAR=""						# clear variable for later reuse
+	while [ -n "$1" ] ; do				# as long we have parameters
+		_PAR="$1 $_PAR"				# invert order of parameters
+		shift
+	done
+	set -- $_PAR					# use new as function parameters
+	_PAR=""						# clear variable
+
+	while [ -n "$1" ] ; do				# as long we have parameters
+		if [ -z "$_CTLD" ]; then 		# first loop
+			_CTLD="$1"			# CURRENT TLD to look at
+			shift
+		else
+			_CTLD="$1.$_CTLD"		# Next TLD to look at
+			shift
+		fi
+		# check if TLD exact match in tld_names.dat, save TLD
+		zcat $TLDFILE | grep -E "^$_CTLD$" >/dev/null 2>&1 && {
+			_FTLD="$_CTLD"		# save found
+			_FDOM="$1"		# save domain next step might be invalid
+			continue
+		}
+		# check if match any "*" in tld_names.dat,
+		zcat $TLDFILE | grep -E "^\*.$_CTLD$" >/dev/null 2>&1 && {
+			[ -z "$1" ] && break	# no more data break
+			# check if next level TLD match excludes "!" in tld_names.dat
+			if zcat $TLDFILE | grep -E "^!$1.$_CTLD$" >/dev/null 2>&1 ; then
+				_FTLD="$_CTLD"	# Yes
+			else
+				_FTLD="$1.$_CTLD"
+				shift
+			fi
+			_FDOM="$1"; shift
+		}
+		[ -n "$_FTLD" ] && break	# we have something valid, break
+	done
+
+	# the leftover parameters are the HOST/SUBDOMAIN
+	while [ -n "$1" ]; do
+		_HOST="$1 $_HOST"		# remember we need to invert
+		shift
+	done
+	_HOST=$(echo $_HOST | tr " " ".")	# insert DOT
+
+	set -- $_SET				# set back parameters from function call
+	[ -n "$_FTLD" ] && {
+		eval "$2=$_FTLD"		# set TLD
+		eval "$3=$_FDOM"		# set registrable domain
+		eval "$4=$_HOST"		# set HOST/SUBDOMAIN
+		return 0
+	}
+	eval "$2=''"		# clear TLD
+	eval "$3=''"		# clear registrable domain
+	eval "$4=''"		# clear HOST/SUBDOMAIN
+	return 1
+}
+
+expand_ipv6() {
+	# Original written for bash by
+	#.Author:  Florian Streibelt <florian@f-streibelt.de>
+	# Date:    08.04.2012
+	# License: Public Domain, but please be fair and
+	#          attribute the original author(s) and provide
+	#          a link to the original source for corrections:
+	#.         https://github.com/mutax/IPv6-Address-checks
+
+	# $1	IPv6 to expand
+	# $2	name of variable to store expanded IPv6
+	[ $# -ne 2 ] && write_log 12 "Error calling 'expand_ipv6()' - wrong number of parameters"
+
+	INPUT="$(echo "$1" | tr 'A-F' 'a-f')"
+	[ "$INPUT" = "::" ] && INPUT="::0"	# special case ::
+
+	O=""
+
+	while [ "$O" != "$INPUT" ]; do
+		O="$INPUT"
+
+		# fill all words with zeroes
+		INPUT=$( echo "$INPUT" | sed	-e 's|:\([0-9a-f]\{3\}\):|:0\1:|g' \
+						-e 's|:\([0-9a-f]\{3\}\)$|:0\1|g' \
+						-e 's|^\([0-9a-f]\{3\}\):|0\1:|g' \
+						-e 's|:\([0-9a-f]\{2\}\):|:00\1:|g' \
+						-e 's|:\([0-9a-f]\{2\}\)$|:00\1|g' \
+						-e 's|^\([0-9a-f]\{2\}\):|00\1:|g' \
+						-e 's|:\([0-9a-f]\):|:000\1:|g' \
+						-e 's|:\([0-9a-f]\)$|:000\1|g' \
+						-e 's|^\([0-9a-f]\):|000\1:|g' )
+
+	done
+
+	# now expand the ::
+	ZEROES=""
+
+	echo "$INPUT" | grep -qs "::"
+	if [ "$?" -eq 0 ]; then
+		GRPS="$( echo "$INPUT" | sed  's|[0-9a-f]||g' | wc -m )"
+		GRPS=$(( GRPS-1 ))		# remove carriage return
+		MISSING=$(( 8-GRPS ))
+		while [ $MISSING -gt 0 ]; do
+			ZEROES="$ZEROES:0000"
+			MISSING=$(( MISSING-1 ))
+		done
+
+		# be careful where to place the :
+		INPUT=$( echo "$INPUT" | sed	-e 's|\(.\)::\(.\)|\1'$ZEROES':\2|g' \
+						-e 's|\(.\)::$|\1'$ZEROES':0000|g' \
+						-e 's|^::\(.\)|'$ZEROES':0000:\1|g;s|^:||g' )
+	fi
+
+	# an expanded address has 39 chars + CR
+	if [ $(echo $INPUT | wc -m) != 40 ]; then
+		write_log 4 "Error in 'expand_ipv6()' - invalid IPv6 found: '$1' expanded: '$INPUT'"
+		eval "$2='invalid'"
+		return 1
+	fi
+
+	# echo the fully expanded version of the address
+	eval "$2=$INPUT"
+	return 0
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/lib/ddns/dynamic_dns_lucihelper.sh b/external/subpack/net/ddns-scripts/files/usr/lib/ddns/dynamic_dns_lucihelper.sh
new file mode 100644
index 0000000..ab3eb78
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/lib/ddns/dynamic_dns_lucihelper.sh
@@ -0,0 +1,172 @@
+#!/bin/sh
+# /usr/lib/ddns/dynamic_dns_lucihelper.sh
+#
+#.Distributed under the terms of the GNU General Public License (GPL) version 2.0
+#.2014-2018 Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
+# This script is used by luci-app-ddns
+#
+# variables in small chars are read from /etc/config/ddns as parameter given here
+# variables in big chars are defined inside these scripts as gloval vars
+# variables in big chars beginning with "__" are local defined inside functions only
+# set -vx  	#script debugger
+
+. /usr/lib/ddns/dynamic_dns_functions.sh	# global vars are also defined here
+
+usage() {
+	cat << EOF
+
+Usage:
+ $MYPROG [options] -- command
+
+Commands:
+ get_local_ip        using given INTERFACE or NETWORK or SCRIPT or URL
+ get_registered_ip   for given FQDN
+ verify_dns          given DNS-SERVER
+ verify_proxy        given PROXY
+ start               start given SECTION
+ reload              force running ddns processes to reload changed configuration
+ restart             restart all ddns processes
+
+Parameters:
+ -6                  => use_ipv6=1          (default 0)
+ -d DNS-SERVER       => dns_server=SERVER[:PORT]
+ -f                  => force_ipversion=1   (default 0)
+ -g                  => is_glue=1           (default 0)
+ -i INTERFACE        => ip_interface=INTERFACE; ip_source="interface"
+ -l FQDN             => lookup_host=FQDN
+ -n NETWORK          => ip_network=NETWORK; ip_source="network"
+ -p PROXY            => proxy=[USER:PASS@]PROXY:PORT
+ -s SCRIPT           => ip_script=SCRIPT; ip_source="script"
+ -t                  => force_dnstcp=1      (default 0)
+ -u URL              => ip_url=URL; ip_source="web"
+ -S SECTION          SECTION to start
+
+ -h                  => show this help and exit
+ -L                  => use_logfile=1    (default 0)
+ -v LEVEL            => VERBOSE=LEVEL    (default 0)
+ -V                  => show version and exit
+
+EOF
+}
+
+usage_err() {
+	printf %s\\n "$MYPROG: $@" >&2
+	usage >&2
+	exit 255
+}
+
+# preset some variables, wrong or not set in ddns-functions.sh
+SECTION_ID="lucihelper"
+LOGFILE="$ddns_logdir/$SECTION_ID.log"
+DATFILE="$ddns_rundir/$SECTION_ID.$$.dat"	# save stdout data of WGet and other extern programs called
+ERRFILE="$ddns_rundir/$SECTION_ID.$$.err"	# save stderr output of WGet and other extern programs called
+DDNSPRG="/usr/lib/ddns/dynamic_dns_updater.sh"
+VERBOSE=0		# no console logging
+# global variables normally set by reading DDNS UCI configuration
+use_syslog=0		# no syslog
+use_logfile=0		# no logfile
+
+use_ipv6=0		# Use IPv6 - default IPv4
+force_ipversion=0	# Force IP Version - default 0 - No
+force_dnstcp=0		# Force TCP on DNS - default 0 - No
+is_glue=0		# Is glue record - default 0 - No
+use_https=0		# not needed but must be set
+
+while getopts ":6d:fghi:l:n:p:s:S:tu:Lv:V" OPT; do
+	case "$OPT" in
+		6)	use_ipv6=1;;
+		d)	dns_server="$OPTARG";;
+		f)	force_ipversion=1;;
+		g)	is_glue=1;;
+		i)	ip_interface="$OPTARG"; ip_source="interface";;
+		l)	lookup_host="$OPTARG";;
+		n)	ip_network="$OPTARG"; ip_source="network";;
+		p)	proxy="$OPTARG";;
+		s)	ip_script="$OPTARG"; ip_source="script";;
+		t)	force_dnstcp=1;;
+		u)	ip_url="$OPTARG"; ip_source="web";;
+		h)	usage; exit 255;;
+		L)	use_logfile=1;;
+		v)	VERBOSE=$OPTARG;;
+		S)	SECTION=$OPTARG;;
+		V)	printf %s\\n "ddns-scripts $VERSION"; exit 255;;
+		:)	usage_err "option -$OPTARG missing argument";;
+		\?)	usage_err "invalid option -$OPTARG";;
+		*)	usage_err "unhandled option -$OPT $OPTARG";;
+	esac
+done
+shift $((OPTIND - 1 ))	# OPTIND is 1 based
+
+[ $# -eq 0 ] && usage_err "missing command"
+
+__RET=0
+case "$1" in
+	get_registered_ip)
+		[ -z "$lookup_host" ] && usage_err "command 'get_registered_ip': 'lookup_host' not set" 
+		write_log 7 "-----> get_registered_ip IP"
+		[ -z "$SECTION" ] || IPFILE="$ddns_rundir/$SECTION.ip"
+		IP=""
+		get_registered_ip IP
+		__RET=$?
+		[ $__RET -ne 0 ] && IP=""
+		printf "%s" "$IP"
+		;;
+	verify_dns)
+		[ -z "$dns_server" ] && usage_err "command 'verify_dns': 'dns_server' not set" 
+		write_log 7 "-----> verify_dns '$dns_server'"
+		verify_dns "$dns_server"
+		__RET=$?
+		;;
+	verify_proxy)
+		[ -z "$proxy" ] && usage_err "command 'verify_proxy': 'proxy' not set" 
+		write_log 7 "-----> verify_proxy '$proxy'"
+		verify_proxy "$proxy"
+		__RET=$?
+		;;
+	get_local_ip)
+		[ -z "$ip_source" ] && usage_err "command 'get_local_ip': 'ip_source' not set" 
+		[ -n "$proxy" -a "$ip_source" = "web" ] && {
+			# proxy defined, used for ip_source=web
+			export HTTP_PROXY="http://$proxy"
+			export HTTPS_PROXY="http://$proxy"
+			export http_proxy="http://$proxy"
+			export https_proxy="http://$proxy"
+		}
+		# don't need IP only the return code
+		IP=""
+		if [ "$ip_source" = "web" -o  "$ip_source" = "script" ]; then
+			# we wait only 3 seconds for an
+			# answer from "web" or "script"
+			write_log 7 "-----> timeout 3 -- get_local_ip IP"
+			timeout 3 -- get_local_ip IP
+		else
+			write_log 7 "-----> get_local_ip IP"
+			get_local_ip IP
+		fi
+		__RET=$?
+		;;
+	start)
+		[ -z "$SECTION" ] &&  usage_err "command 'start': 'SECTION' not set"
+		if [ $VERBOSE -eq 0 ]; then	# start in background
+			$DDNSPRG -v 0 -S $SECTION -- start &
+		else
+			$DDNSPRG -v $VERBOSE -S $SECTION -- start
+		fi
+		;;
+	reload)
+		$DDNSPRG -- reload
+		;;
+	restart)
+		$DDNSPRG -- stop
+		sleep 1
+		$DDNSPRG -- start
+		;;
+	*)
+		__RET=255
+		;;
+esac
+
+# remove out and err file
+[ -f $DATFILE ] && rm -f $DATFILE
+[ -f $ERRFILE ] && rm -f $ERRFILE
+return $__RET
diff --git a/external/subpack/net/ddns-scripts/files/usr/lib/ddns/dynamic_dns_updater.sh b/external/subpack/net/ddns-scripts/files/usr/lib/ddns/dynamic_dns_updater.sh
new file mode 100644
index 0000000..8176fa7
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/lib/ddns/dynamic_dns_updater.sh
@@ -0,0 +1,436 @@
+#!/bin/sh
+# /usr/lib/ddns/dynamic_dns_updater.sh
+#
+#.Distributed under the terms of the GNU General Public License (GPL) version 2.0
+# Original written by Eric Paul Bishop, January 2008
+# (Loosely) based on the script on the one posted by exobyte in the forums here:
+# http://forum.openwrt.org/viewtopic.php?id=14040
+# extended and partial rewritten
+#.2014-2018 Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
+#
+# variables in small chars are read from /etc/config/ddns
+# variables in big chars are defined inside these scripts as global vars
+# variables in big chars beginning with "__" are local defined inside functions only
+# set -vx  	#script debugger
+
+. $(dirname $0)/dynamic_dns_functions.sh	# global vars are also defined here
+
+usage() {
+	cat << EOF
+
+Usage:
+ $MYPROG [options] -- command
+
+Commands:
+start                Start SECTION or NETWORK or all
+stop                 Stop NETWORK or all
+
+Parameters:
+ -n NETWORK          Start/Stop sections in background monitoring NETWORK, force VERBOSE=0
+ -S SECTION          SECTION to start
+                     use either -N NETWORK or -S SECTION
+
+ -h                  show this help and exit
+ -V                  show version and exit
+ -v LEVEL            VERBOSE=LEVEL (default 1)
+                        '0' NO output to console
+                        '1' output to console
+                        '2' output to console AND logfile
+                            + run once WITHOUT retry on error
+                        '3' output to console AND logfile
+                            + run once WITHOUT retry on error
+                            + NOT sending update to DDNS service
+
+EOF
+}
+
+usage_err() {
+	printf %s\\n "$MYPROG: $@" >&2
+	usage >&2
+	exit 1
+}
+
+while getopts ":hv:n:S:V" OPT; do
+	case "$OPT" in
+		h)	usage; exit 0;;
+		v)	VERBOSE=$OPTARG;;
+		n)	NETWORK=$OPTARG;;
+		S)	SECTION_ID=$OPTARG;;
+		V)	printf %s\\n "ddns-scripts $VERSION"; exit 0;;
+		:)	usage_err "option -$OPTARG missing argument";;
+		\?)	usage_err "invalid option -$OPTARG";;
+		*)	usage_err "unhandled option -$OPT $OPTARG";;
+	esac
+done
+shift $((OPTIND - 1 ))	# OPTIND is 1 based
+
+[ -n "$NETWORK" -a -n "$SECTION_ID" ] && usage_err "use either option '-N' or '-S' not both"
+[ $# -eq 0 ] && usage_err "missing command"
+[ $# -gt 1 ] && usage_err "to much commands"
+
+case "$1" in
+	start)
+		if [ -n "$NETWORK" ]; then
+			start_daemon_for_all_ddns_sections "$NETWORK"
+			exit 0
+		fi
+		if [ -z "$SECTION_ID" ]; then
+			start_daemon_for_all_ddns_sections
+			exit 0
+		fi
+		;;
+	stop)
+		if [ -n "$INTERFACE" ]; then
+			stop_daemon_for_all_ddns_sections "$NETWORK"
+			exit 0
+		else
+			stop_daemon_for_all_ddns_sections
+			exit 0
+		fi
+		exit 1
+		;;
+	reload)
+		killall -1 dynamic_dns_updater.sh 2>/dev/null
+		exit $?
+		;;
+	*)	usage_err "unknown command - $1";;
+esac
+
+# set file names
+PIDFILE="$ddns_rundir/$SECTION_ID.pid"	# Process ID file
+UPDFILE="$ddns_rundir/$SECTION_ID.update"	# last update successful send (system uptime)
+DATFILE="$ddns_rundir/$SECTION_ID.dat"	# save stdout data of WGet and other extern programs called
+ERRFILE="$ddns_rundir/$SECTION_ID.err"	# save stderr output of WGet and other extern programs called
+IPFILE="$ddns_rundir/$SECTION_ID.ip"	#
+LOGFILE="$ddns_logdir/$SECTION_ID.log"	# log file
+
+# VERBOSE > 1 delete logfile if exist to create an empty one
+# only with this data of this run for easier diagnostic
+# new one created by write_log function
+[ $VERBOSE -gt 1 -a -f $LOGFILE ] && rm -f $LOGFILE
+
+# TRAP handler
+trap "trap_handler 0 \$?" 0	# handle script exit with exit status
+trap "trap_handler 1"  1	# SIGHUP	Hangup / reload config
+trap "trap_handler 2"  2	# SIGINT	Terminal interrupt
+trap "trap_handler 3"  3	# SIGQUIT	Terminal quit
+# trap "trap_handler 9"  9	# SIGKILL	no chance to trap
+trap "trap_handler 15" 15	# SIGTERM	Termination
+
+################################################################################
+# Leave this comment here, to clearly document variable names that are expected/possible
+# Use load_all_config_options to load config options, which is a much more flexible solution.
+#
+# config_load "ddns"
+# config_get <variable> $SECTION_ID <option>
+#
+# defined options (also used as variable):
+#
+# enabled	self-explanatory
+# interface 	network interface used by hotplug.d i.e. 'wan' or 'wan6'
+#
+# service_name	Which DDNS service do you use or "custom"
+# update_url	URL to use to update your "custom" DDNS service
+# update_script SCRIPT to use to update your "custom" DDNS service
+#
+# lookup_host	FQDN of ONE of your at DDNS service defined host / required to validate if IP update happen/necessary
+# domain 	Nomally your DDNS hostname / replace [DOMAIN] in update_url
+# username 	Username of your DDNS service account / urlenceded and replace [USERNAME] in update_url
+# password 	Password of your DDNS service account / urlencoded and replace [PASSWORD] in update_url
+# param_enc	Optional parameter for (later) usage  / urlencoded and replace [PARAMENC] in update_url
+# param_opt	Optional parameter for (later) usage  / replace [PARAMOPT] in update_url
+#
+# use_https	use HTTPS to update DDNS service
+# cacert	file or directory where HTTPS can find certificates to verify server; 'IGNORE' ignore check of server certificate
+#
+# use_syslog	log activity to syslog
+#
+# ip_source	source to detect current local IP ('network' or 'web' or 'script' or 'interface')
+# ip_network	local defined network to read IP from i.e. 'wan' or 'wan6'
+# ip_url	URL to read local address from i.e. http://checkip.dyndns.com/ or http://checkipv6.dyndns.com/
+# ip_script	full path and name of your script to detect local IP
+# ip_interface	physical interface to use for detecting
+#
+# check_interval	check for changes every  !!! checks below 10 minutes make no sense because the Internet
+# check_unit		'days' 'hours' 'minutes' !!! needs about 5-10 minutes to sync an IP-change for an DNS entry
+#
+# force_interval	force to send an update to your service if no change was detected
+# force_unit		'days' 'hours' 'minutes' !!! force_interval="0" runs this script once for use i.e. with cron
+#
+# retry_interval	if error was detected retry in
+# retry_unit		'days' 'hours' 'minutes' 'seconds'
+# retry_count 		number of retries before scripts stops
+#
+# use_ipv6		detecting/sending IPv6 address
+# force_ipversion	force usage of IPv4 or IPv6 for the whole detection and update communication
+# dns_server		using a non default dns server to get Registered IP from Internet
+# force_dnstcp		force communication with DNS server via TCP instead of default UDP
+# proxy			using a proxy for communication !!! ALSO used to detect local IP via web => return proxy's IP !!!
+# use_logfile		self-explanatory "/var/log/ddns/$SECTION_ID.log"
+# is_glue			the record that should be updated is a glue record
+#
+# some functionality needs
+# - GNU Wget or cURL installed for sending updates to DDNS service
+# - BIND host installed to detect Registered IP
+#
+################################################################################
+
+load_all_config_options "ddns" "$SECTION_ID"
+ERR_LAST=$?	# save return code - equal 0 if SECTION_ID found
+
+# set defaults if not defined
+[ -z "$enabled" ]	  && enabled=0
+[ -z "$retry_count" ]	  && retry_count=0	# endless retry
+[ -z "$use_syslog" ]      && use_syslog=2	# syslog "Notice"
+[ -z "$use_https" ]       && use_https=0	# not use https
+[ -z "$use_logfile" ]     && use_logfile=1	# use logfile by default
+[ -z "$use_ipv6" ]	  && use_ipv6=0		# use IPv4 by default
+[ -z "$force_ipversion" ] && force_ipversion=0	# default let system decide
+[ -z "$force_dnstcp" ]	  && force_dnstcp=0	# default UDP
+[ -z "$ip_source" ]	  && ip_source="network"
+[ -z "$is_glue" ]	  && is_glue=0		# default the ddns record is not a glue record
+[ "$ip_source" = "network" -a -z "$ip_network" -a $use_ipv6 -eq 0 ] && ip_network="wan"  # IPv4: default wan
+[ "$ip_source" = "network" -a -z "$ip_network" -a $use_ipv6 -eq 1 ] && ip_network="wan6" # IPv6: default wan6
+[ "$ip_source" = "web" -a -z "$ip_url" -a $use_ipv6 -eq 0 ] && ip_url="http://checkip.dyndns.com"
+[ "$ip_source" = "web" -a -z "$ip_url" -a $use_ipv6 -eq 1 ] && ip_url="http://checkipv6.dyndns.com"
+[ "$ip_source" = "interface" -a -z "$ip_interface" ] && ip_interface="eth1"
+
+# url encode username (might be email or something like this)
+# and password (might have special chars for security reason)
+# and optional parameter "param_enc"
+[ -n "$username" ] && urlencode URL_USER "$username"
+[ -n "$password" ] && urlencode URL_PASS "$password"
+[ -n "$param_enc" ] && urlencode URL_PENC "$param_enc"
+
+# SECTION_ID does not exists
+[ $ERR_LAST -ne 0 ] && {
+	[ $VERBOSE -le 1 ] && VERBOSE=2		# force console out and logfile output
+	[ -f $LOGFILE ] && rm -f $LOGFILE	# clear logfile before first entry
+	write_log  7 "************ ************** ************** **************"
+	write_log  5 "PID '$$' started at $(eval $DATE_PROG)"
+	write_log  7 "ddns version  : $VERSION"
+	write_log  7 "uci configuration:${N}$(uci -q show ddns | grep '=service' | sort)"
+	write_log 14 "Service section '$SECTION_ID' not defined"
+}
+
+write_log 7 "************ ************** ************** **************"
+write_log 5 "PID '$$' started at $(eval $DATE_PROG)"
+write_log 7 "ddns version  : $VERSION"
+write_log 7 "uci configuration:${N}$(uci -q show ddns.$SECTION_ID | sort)"
+# write_log 7 "ddns version  : $(opkg list-installed ddns-scripts | cut -d ' ' -f 3)"
+case $VERBOSE in
+	0) write_log  7 "verbose mode  : 0 - run normal, NO console output";;
+	1) write_log  7 "verbose mode  : 1 - run normal, console mode";;
+	2) write_log  7 "verbose mode  : 2 - run once, NO retry on error";;
+	3) write_log  7 "verbose mode  : 3 - run once, NO retry on error, NOT sending update";;
+	*) write_log 14 "error detecting VERBOSE '$VERBOSE'";;
+esac
+
+# check enabled state otherwise we don't need to continue
+[ $enabled -eq 0 ] && write_log 14 "Service section disabled!"
+
+# determine what update url we're using if a service_name is supplied
+# otherwise update_url is set inside configuration (custom update url)
+# or update_script is set inside configuration (custom update script)
+[ -n "$service_name" ] && {
+	# Check first if we have a custom service provider with this name
+	get_service_data "$service_name" "/usr/share/ddns/custom" update_url update_script UPD_ANSWER
+	if [ "$?" != "0" ]; then
+		get_service_data "$service_name" "/usr/share/ddns/default" update_url update_script UPD_ANSWER
+	fi
+}
+
+[ -z "$update_url" -a -z "$update_script" ] && write_log 14 "No update_url found/defined or no update_script found/defined!"
+[ -n "$update_script" -a ! -f "$update_script" ] && write_log 14 "Custom update_script not found!"
+
+# temporary needed to convert existing uci settings
+[ -z "$lookup_host" ] && {
+	uci -q set ddns.$SECTION_ID.lookup_host="$domain"
+	uci -q commit ddns
+	lookup_host="$domain"
+}
+# later versions only check if configured correctly
+
+# without lookup host and possibly other required options we can do nothing for you
+[ -z "$lookup_host" ] && write_log 14 "Service section not configured correctly! Missing 'lookup_host'"
+
+# verify validity of variables
+[ -n "$lookup_host" ] && sanitize_variable lookup_host "$DNS_CHARSET" ""
+[ -n "$dns_server" ] && sanitize_variable dns_server "$DNS_CHARSET" ""
+[ -n "$domain" ] && sanitize_variable domain "$DNS_CHARSET_DOMAIN" ""
+
+# Filter shell escape characters, if these are required in the URL, they
+# can still be passed url encoded
+[ -n "$param_opt" ] && sanitize_variable param_opt "" "$SHELL_ESCAPE"
+
+[ -n "$update_url" ] && {
+	# only check if update_url is given, update_scripts have to check themselves
+	[ -z "$domain" ] && $(echo "$update_url" | grep "\[DOMAIN\]" >/dev/null 2>&1) && \
+		write_log 14 "Service section not configured correctly! Missing 'domain'"
+	[ -z "$username" ] && $(echo "$update_url" | grep "\[USERNAME\]" >/dev/null 2>&1) && \
+		write_log 14 "Service section not configured correctly! Missing 'username'"
+	[ -z "$password" ] && $(echo "$update_url" | grep "\[PASSWORD\]" >/dev/null 2>&1) && \
+		write_log 14 "Service section not configured correctly! Missing 'password'"
+	[ -z "$param_enc" ] && $(echo "$update_url" | grep "\[PARAMENC\]" >/dev/null 2>&1) && \
+		write_log 14 "Service section not configured correctly! Missing 'param_enc'"
+	[ -z "$param_opt" ] && $(echo "$update_url" | grep "\[PARAMOPT\]" >/dev/null 2>&1) && \
+		write_log 14 "Service section not configured correctly! Missing 'param_opt'"
+}
+
+# verify ip_source 'script' if script is configured and executable
+if [ "$ip_source" = "script" ]; then
+	set -- $ip_script	#handling script with parameters, we need a trick
+	[ -z "$1" ] && write_log 14 "No script defined to detect local IP!"
+	[ -x "$1" ] || write_log 14 "Script to detect local IP not executable!"
+fi
+
+# compute update interval in seconds
+get_seconds CHECK_SECONDS ${check_interval:-10} ${check_unit:-"minutes"} # default 10 min
+get_seconds FORCE_SECONDS ${force_interval:-72} ${force_unit:-"hours"}	 # default 3 days
+get_seconds RETRY_SECONDS ${retry_interval:-60} ${retry_unit:-"seconds"} # default 60 sec
+[ $CHECK_SECONDS -lt 300 ] && CHECK_SECONDS=300		# minimum 5 minutes
+[ $FORCE_SECONDS -gt 0 -a $FORCE_SECONDS -lt $CHECK_SECONDS ] && FORCE_SECONDS=$CHECK_SECONDS	# FORCE_SECONDS >= CHECK_SECONDS or 0
+write_log 7 "check interval: $CHECK_SECONDS seconds"
+write_log 7 "force interval: $FORCE_SECONDS seconds"
+write_log 7 "retry interval: $RETRY_SECONDS seconds"
+write_log 7 "retry counter : $retry_count times"
+
+# kill old process if it exists & set new pid file
+stop_section_processes "$SECTION_ID"
+[ $? -gt 0 ] && write_log 7 "'SIGTERM' was send to old process" || write_log 7 "No old process"
+echo $$ > $PIDFILE
+
+# determine when the last update was
+# the following lines should prevent multiple updates if hotplug fires multiple startups
+# as described in Ticket #7820, but did not function if never an update take place
+# i.e. after a reboot (/var is linked to /tmp)
+# using uptime as reference because date might not be updated via NTP client
+get_uptime CURR_TIME
+[ -e "$UPDFILE" ] && {
+	LAST_TIME=$(cat $UPDFILE)
+	# check also LAST > CURR because link of /var/run to /tmp might be removed
+	# i.e. boxes with larger filesystems
+	[ -z "$LAST_TIME" ] && LAST_TIME=0
+	[ $LAST_TIME -gt $CURR_TIME ] && LAST_TIME=0
+}
+if [ $LAST_TIME -eq 0 ]; then
+	write_log 7 "last update: never"
+else
+	EPOCH_TIME=$(( $(date +%s) - $CURR_TIME + $LAST_TIME ))
+	EPOCH_TIME="date -d @$EPOCH_TIME +'$ddns_dateformat'"
+	write_log 7 "last update: $(eval $EPOCH_TIME)"
+fi
+
+# verify DNS server
+[ -n "$dns_server" ] && verify_dns "$dns_server"
+
+# verify Proxy server and set environment
+[ -n "$proxy" ] && {
+	verify_proxy "$proxy" && {
+		# everything ok set proxy
+		export HTTP_PROXY="http://$proxy"
+		export HTTPS_PROXY="http://$proxy"
+		export http_proxy="http://$proxy"
+		export https_proxy="http://$proxy"
+	}
+}
+
+# let's check if there is already an IP registered on the web
+get_registered_ip REGISTERED_IP "NO_RETRY"
+ERR_LAST=$?
+#     No error    or     No IP set	 otherwise retry
+[ $ERR_LAST -eq 0 -o $ERR_LAST -eq 127 ] || get_registered_ip REGISTERED_IP
+# on IPv6 we use expanded version to be shure when comparing
+[ $use_ipv6 -eq 1 ] && expand_ipv6 "$REGISTERED_IP" REGISTERED_IP
+
+# loop endlessly, checking ip every check_interval and forcing an updating once every force_interval
+write_log 6 "Starting main loop at $(eval $DATE_PROG)"
+while : ; do
+
+	get_local_ip LOCAL_IP		# read local IP
+	[ $use_ipv6 -eq 1 ] && expand_ipv6 "$LOCAL_IP" LOCAL_IP	# on IPv6 we use expanded version
+
+	# prepare update
+	# never updated or forced immediate then NEXT_TIME = 0
+	[ $FORCE_SECONDS -eq 0 -o $LAST_TIME -eq 0 ] \
+		&& NEXT_TIME=0 \
+		|| NEXT_TIME=$(( $LAST_TIME + $FORCE_SECONDS ))
+
+	get_uptime CURR_TIME		# get current uptime
+
+	# send update when current time > next time or local ip different from registered ip
+	if [ $CURR_TIME -ge $NEXT_TIME -o "$LOCAL_IP" != "$REGISTERED_IP" ]; then
+		if [ $VERBOSE -gt 2 ]; then
+			write_log 7 "Verbose Mode: $VERBOSE - NO UPDATE send"
+		elif [ "$LOCAL_IP" != "$REGISTERED_IP" ]; then
+			write_log 7 "Update needed - L: '$LOCAL_IP' <> R: '$REGISTERED_IP'"
+		else
+			write_log 7 "Forced Update - L: '$LOCAL_IP' == R: '$REGISTERED_IP'"
+		fi
+
+		ERR_LAST=0
+		[ $VERBOSE -lt 3 ] && {
+			# only send if VERBOSE < 3
+			send_update "$LOCAL_IP"
+			ERR_LAST=$?	# save return value
+		}
+
+		# error sending local IP to provider
+		# we have no communication error (handled inside send_update/do_transfer)
+		# but update was not recognized
+		# do NOT retry after RETRY_SECONDS, do retry after CHECK_SECONDS
+		# to early retrys will block most DDNS provider
+		# providers answer is checked inside send_update() function
+		if [ $ERR_LAST -eq 0 ]; then
+			get_uptime LAST_TIME		# we send update, so
+			echo $LAST_TIME > $UPDFILE	# save LASTTIME to file
+			[ "$LOCAL_IP" != "$REGISTERED_IP" ] \
+				&& write_log 6 "Update successful - IP '$LOCAL_IP' send" \
+				|| write_log 6 "Forced update successful - IP: '$LOCAL_IP' send"
+		elif [ $ERR_LAST -eq 127 ]; then
+			write_log 3 "No update send to DDNS Provider"
+		else
+			write_log 3 "IP update not accepted by DDNS Provider"
+		fi
+	fi
+
+	# now we wait for check interval before testing if update was recognized
+	# only sleep if VERBOSE <= 2 because otherwise nothing was send
+	[ $VERBOSE -le 2 ] && {
+		write_log 7 "Waiting $CHECK_SECONDS seconds (Check Interval)"
+		sleep $CHECK_SECONDS &
+		PID_SLEEP=$!
+		wait $PID_SLEEP	# enable trap-handler
+		PID_SLEEP=0
+	} || write_log 7 "Verbose Mode: $VERBOSE - NO Check Interval waiting"
+
+	REGISTERED_IP=""		# clear variable
+	get_registered_ip REGISTERED_IP	# get registered/public IP
+	[ $use_ipv6 -eq 1 ] && expand_ipv6 "$REGISTERED_IP" REGISTERED_IP	# on IPv6 we use expanded version
+
+	# IP's are still different
+	if [ "$LOCAL_IP" != "$REGISTERED_IP" ]; then
+		if [ $VERBOSE -le 1 ]; then	# VERBOSE <=1 then retry
+			ERR_UPDATE=$(( $ERR_UPDATE + 1 ))
+			[ $retry_count -gt 0 -a $ERR_UPDATE -gt $retry_count ] && \
+				write_log 14 "Updating IP at DDNS provider failed after $retry_count retries"
+			write_log 4 "Updating IP at DDNS provider failed - starting retry $ERR_UPDATE/$retry_count"
+			continue # loop to beginning
+		else
+			write_log 4 "Updating IP at DDNS provider failed"
+			write_log 7 "Verbose Mode: $VERBOSE - NO retry"; exit 1
+		fi
+	else
+		# we checked successful the last update
+		ERR_UPDATE=0			# reset error counter
+	fi
+
+	# force_update=0 or VERBOSE > 1 - leave here
+	[ $VERBOSE -gt 1 ]  && write_log 7 "Verbose Mode: $VERBOSE - NO reloop"
+	[ $FORCE_SECONDS -eq 0 ] && write_log 6 "Configured to run once"
+	[ $VERBOSE -gt 1 -o $FORCE_SECONDS -eq 0 ] && exit 0
+
+	write_log 6 "Rerun IP check at $(eval $DATE_PROG)"
+done
+# we should never come here there must be a programming error
+write_log 12 "Error in 'dynamic_dns_updater.sh - program coding error"
diff --git a/external/subpack/net/ddns-scripts/files/usr/lib/ddns/update_cloudflare_com_v4.sh b/external/subpack/net/ddns-scripts/files/usr/lib/ddns/update_cloudflare_com_v4.sh
new file mode 100644
index 0000000..c5bbe17
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/lib/ddns/update_cloudflare_com_v4.sh
@@ -0,0 +1,198 @@
+#!/bin/sh
+#
+#.Distributed under the terms of the GNU General Public License (GPL) version 2.0
+#
+# script for sending updates to cloudflare.com
+#.based on Ben Kulbertis cloudflare-update-record.sh found at http://gist.github.com/benkulbertis
+#.and on George Johnson's cf-ddns.sh found at https://github.com/gstuartj/cf-ddns.sh
+#.2016-2018 Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
+# CloudFlare API documentation at https://api.cloudflare.com/
+#
+# This script is parsed by dynamic_dns_functions.sh inside send_update() function
+#
+# using following options from /etc/config/ddns
+# option username  - your cloudflare e-mail
+# option password  - cloudflare api key, you can get it from cloudflare.com/my-account/
+# option domain    - "hostname@yourdomain.TLD"	# syntax changed to remove split_FQDN() function and tld_names.dat.gz
+#
+# The proxy status would not be changed by this script. Please change it in Cloudflare dashboard manually. 
+#
+# variable __IP already defined with the ip-address to use for update
+#
+
+# check parameters
+[ -z "$CURL" ] && [ -z "$CURL_SSL" ] && write_log 14 "Cloudflare communication require cURL with SSL support. Please install"
+[ -z "$username" ] && write_log 14 "Service section not configured correctly! Missing key as 'username'"
+[ -z "$password" ] && write_log 14 "Service section not configured correctly! Missing secret as 'password'"
+[ $use_https -eq 0 ] && use_https=1	# force HTTPS
+
+# used variables
+local __HOST __DOMAIN __TYPE __URLBASE __PRGBASE __RUNPROG __DATA __IPV6 __ZONEID __RECID __PROXIED
+local __URLBASE="https://api.cloudflare.com/client/v4"
+local __TTL=120
+
+# split __HOST __DOMAIN from $domain
+# given data:
+# @example.com for "domain record"
+# host.sub@example.com for a "host record"
+__HOST=$(printf %s "$domain" | cut -d@ -f1)
+__DOMAIN=$(printf %s "$domain" | cut -d@ -f2)
+
+# Cloudflare v4 needs:
+# __DOMAIN = the base domain i.e. example.com
+# __HOST   = the FQDN of record to modify
+# i.e. example.com for the "domain record" or host.sub.example.com for "host record"
+
+# handling domain record then set __HOST = __DOMAIN
+[ -z "$__HOST" ] && __HOST=$__DOMAIN
+# handling host record then rebuild fqdn host@domain.tld => host.domain.tld
+[ "$__HOST" != "$__DOMAIN" ] && __HOST="${__HOST}.${__DOMAIN}"
+
+# set record type
+[ $use_ipv6 -eq 0 ] && __TYPE="A" || __TYPE="AAAA"
+
+# transfer function to use for godaddy
+# all needed variables are set global here
+# so we can use them directly
+cloudflare_transfer() {
+	local __CNT=0
+	local __ERR
+	while : ; do
+		write_log 7 "#> $__RUNPROG"
+		eval "$__RUNPROG"
+		__ERR=$?			# save communication error
+		[ $__ERR -eq 0 ] && break	# no error break while
+
+		write_log 3 "cURL Error: '$__ERR'"
+		write_log 7 "$(cat $ERRFILE)"		# report error
+
+		[ $VERBOSE_MODE -gt 1 ] && {
+			# VERBOSE_MODE > 1 then NO retry
+			write_log 4 "Transfer failed - Verbose Mode: $VERBOSE_MODE - NO retry on error"
+			break
+		}
+
+		__CNT=$(( $__CNT + 1 ))	# increment error counter
+		# if error count > retry_count leave here
+		[ $retry_count -gt 0 -a $__CNT -gt $retry_count ] && \
+			write_log 14 "Transfer failed after $retry_count retries"
+
+		write_log 4 "Transfer failed - retry $__CNT/$retry_count in $RETRY_SECONDS seconds"
+		sleep $RETRY_SECONDS &
+		PID_SLEEP=$!
+		wait $PID_SLEEP	# enable trap-handler
+		PID_SLEEP=0
+	done
+
+	# check for error
+	grep -q '"success":\s*true' $DATFILE || {
+		write_log 4 "CloudFlare reported an error:"
+		write_log 7 "$(cat $DATFILE)"		# report error
+		return 1	# HTTP-Fehler
+	}
+}
+
+# Build base command to use
+__PRGBASE="$CURL -RsS -o $DATFILE --stderr $ERRFILE"
+# force network/interface-device to use for communication
+if [ -n "$bind_network" ]; then
+	local __DEVICE
+	network_get_physdev __DEVICE $bind_network || \
+		write_log 13 "Can not detect local device using 'network_get_physdev $bind_network' - Error: '$?'"
+	write_log 7 "Force communication via device '$__DEVICE'"
+	__PRGBASE="$__PRGBASE --interface $__DEVICE"
+fi
+# force ip version to use
+if [ $force_ipversion -eq 1 ]; then
+	[ $use_ipv6 -eq 0 ] && __PRGBASE="$__PRGBASE -4" || __PRGBASE="$__PRGBASE -6"	# force IPv4/IPv6
+fi
+# set certificate parameters
+if [ "$cacert" = "IGNORE" ]; then	# idea from Ticket #15327 to ignore server cert
+	__PRGBASE="$__PRGBASE --insecure"	# but not empty better to use "IGNORE"
+elif [ -f "$cacert" ]; then
+	__PRGBASE="$__PRGBASE --cacert $cacert"
+elif [ -d "$cacert" ]; then
+	__PRGBASE="$__PRGBASE --capath $cacert"
+elif [ -n "$cacert" ]; then		# it's not a file and not a directory but given
+	write_log 14 "No valid certificate(s) found at '$cacert' for HTTPS communication"
+fi
+# disable proxy if not set (there might be .wgetrc or .curlrc or wrong environment set)
+# or check if libcurl compiled with proxy support
+if [ -z "$proxy" ]; then
+	__PRGBASE="$__PRGBASE --noproxy '*'"
+elif [ -z "$CURL_PROXY" ]; then
+	# if libcurl has no proxy support and proxy should be used then force ERROR
+	write_log 13 "cURL: libcurl compiled without Proxy support"
+fi
+# set headers
+if [ "$username" = "Bearer" ]; then
+  write_log 7 "Found Username 'Bearer' using Password as Bearer Authorization Token"
+  __PRGBASE="$__PRGBASE --header 'Authorization: Bearer $password' "
+else
+  __PRGBASE="$__PRGBASE --header 'X-Auth-Email: $username' "
+  __PRGBASE="$__PRGBASE --header 'X-Auth-Key: $password' "
+fi
+__PRGBASE="$__PRGBASE --header 'Content-Type: application/json' "
+
+# read zone id for registered domain.TLD
+__RUNPROG="$__PRGBASE --request GET '$__URLBASE/zones?name=$__DOMAIN'"
+cloudflare_transfer || return 1
+# extract zone id
+__ZONEID=$(grep -o '"id":\s*"[^"]*' $DATFILE | grep -o '[^"]*$' | head -1)
+[ -z "$__ZONEID" ] && {
+	write_log 4 "Could not detect 'zone id' for domain.tld: '$__DOMAIN'"
+	return 127
+}
+
+# read record id for A or AAAA record of host.domain.TLD
+__RUNPROG="$__PRGBASE --request GET '$__URLBASE/zones/$__ZONEID/dns_records?name=$__HOST&type=$__TYPE'"
+cloudflare_transfer || return 1
+# extract record id
+__RECID=$(grep -o '"id":\s*"[^"]*' $DATFILE | grep -o '[^"]*$' | head -1)
+[ -z "$__RECID" ] && {
+	write_log 4 "Could not detect 'record id' for host.domain.tld: '$__HOST'"
+	return 127
+}
+
+# extract current stored IP
+__DATA=$(grep -o '"content":\s*"[^"]*' $DATFILE | grep -o '[^"]*$' | head -1)
+
+# check data
+[ $use_ipv6 -eq 0 ] \
+	&& __DATA=$(printf "%s" "$__DATA" | grep -m 1 -o "$IPV4_REGEX") \
+	|| __DATA=$(printf "%s" "$__DATA" | grep -m 1 -o "$IPV6_REGEX")
+
+# we got data so verify
+[ -n "$__DATA" ] && {
+	# expand IPv6 for compare
+	if [ $use_ipv6 -eq 1 ]; then
+		expand_ipv6 $__IP __IPV6
+		expand_ipv6 $__DATA __DATA
+		[ "$__DATA" = "$__IPV6" ] && {		# IPv6 no update needed
+			write_log 7 "IPv6 at CloudFlare.com already up to date"
+			return 0
+		}
+	else
+		[ "$__DATA" = "$__IP" ] && {		# IPv4 no update needed
+			write_log 7 "IPv4 at CloudFlare.com already up to date"
+			return 0
+		}
+	fi
+}
+
+# update is needed
+# let's build data to send
+# set proxied parameter
+__PROXIED=$(grep -o '"proxied":\s*[^",]*' $DATFILE | grep -o '[^:]*$')
+
+# use file to work around " needed for json
+cat > $DATFILE << EOF
+{"id":"$__ZONEID","type":"$__TYPE","name":"$__HOST","content":"$__IP","ttl":$__TTL,"proxied":$__PROXIED}
+EOF
+
+# let's complete transfer command
+__RUNPROG="$__PRGBASE --request PUT --data @$DATFILE '$__URLBASE/zones/$__ZONEID/dns_records/$__RECID'"
+cloudflare_transfer || return 1
+
+return 0
+
diff --git a/external/subpack/net/ddns-scripts/files/usr/lib/ddns/update_cnkuai_cn.sh b/external/subpack/net/ddns-scripts/files/usr/lib/ddns/update_cnkuai_cn.sh
new file mode 100644
index 0000000..a2b7863
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/lib/ddns/update_cnkuai_cn.sh
@@ -0,0 +1,86 @@
+# inside url we need domain, username and password
+[ -z "$domain" ]   && write_log 14 "Service section not configured correctly! Missing 'domain'"
+[ -z "$username" ] && write_log 14 "Service section not configured correctly! Missing 'username'"
+[ -z "$password" ] && write_log 14 "Service section not configured correctly! Missing 'password'"
+
+local urlCp='http://cp.cnkuai.cn/'
+local urlLogin='http://cp.cnkuai.cn/userlogin.asp'
+local urlCaptcha='http://cp.cnkuai.cn/inc/image.asp'
+local urlDnsA='http://cp.cnkuai.cn/dns_a.asp'
+local urlDnsAAAA='http://cp.cnkuai.cn/dns_ipv6.asp'
+local urlDnsSave='http://cp.cnkuai.cn/dns_save.asp'
+
+getPixel(){
+  local filename=$1
+  local x=$(($2*3))
+  local y=$(($3*3))
+  local width=48
+
+  hexdump -s "$((x+width*y))" -n 3 -e '3/1 "%02X"' "$filename"
+}
+
+captchaChar(){
+  local filename=$1
+  local xoffset=$2
+
+  if [ "$(getPixel "$filename" $((xoffset+2)) 5)" = '000000' ]; then
+    echo '1'
+  elif [ "$(getPixel "$filename" $((xoffset+5)) 7)" = '000000' ]; then
+    echo '2'
+  elif [ "$(getPixel "$filename" $((xoffset+4)) 3)" = '000000' ]; then
+    echo '4'
+  elif [ "$(getPixel "$filename" $((xoffset+6)) 4)" = '000000' ]; then
+    echo '7'
+  elif [ "$(getPixel "$filename" $((xoffset+5)) 8)" = '000000' ]; then
+    echo '8'
+  elif [ "$(getPixel "$filename" $((xoffset+6)) 8)" = '000000' ]; then
+    echo '9'
+  elif [ "$(getPixel "$filename" $((xoffset+5)) 6)" = '000000' ]; then
+    echo '3'
+  elif [ "$(getPixel "$filename" $((xoffset+0)) 4)" = '000000' ]; then
+    echo '5'
+  elif [ "$(getPixel "$filename" $((xoffset+1)) 5)" = '000000' ]; then
+    echo '6'
+  else
+    echo '0'
+  fi
+}
+
+captcha(){
+  local str
+  str=$(captchaChar "$1" 9)
+  str=$str$(captchaChar "$1" 18)
+  str=$str$(captchaChar "$1" 26)
+  str=$str$(captchaChar "$1" 35)
+  echo "$str"
+}
+
+#clean
+rm /tmp/cnkuai.*
+#login to cnkuai dns cp
+curl -c '/tmp/cnkuai.cookiejar' "$urlCaptcha" | gif2rgb > /tmp/cnkuai.rgb || return 1
+yzm=$(captcha "/tmp/cnkuai.rgb")
+curl -b '/tmp/cnkuai.cookiejar' -c '/tmp/cnkuai.cookiejar' -H "Content-Type: application/x-www-form-urlencoded" -H "Referer: $urlCp" -d "userid=$URL_USER&password=$URL_PASS&yzm=$yzm&B1=%C8%B7%C8%CF%B5%C7%C2%BD&lx=0&userlx=3" -X POST "$urlLogin" > /dev/null || return 1
+
+if [ "$use_ipv6" -eq 0 ]; then
+  curl -b '/tmp/cnkuai.cookiejar' -c '/tmp/cnkuai.cookiejar' "$urlDnsA" > /tmp/cnkuai.html || return 1
+else
+  curl -b '/tmp/cnkuai.cookiejar' -c '/tmp/cnkuai.cookiejar' "$urlDnsAAAA" > /tmp/cnkuai.html || return 1
+fi
+local domainline
+domainline=$(awk "/<td>$domain<\/td>/{ print NR; exit }" /tmp/cnkuai.html)
+local domainid
+domainid=$(awk "NR==$((domainline+3))" /tmp/cnkuai.html | sed 's/^.*name=\x27domainid\x27 value="//g' | sed 's/".*$//g')
+local dnslistid
+dnslistid=$(awk "NR==$((domainline+3))" /tmp/cnkuai.html | sed 's/^.*name=\x27dnslistid\x27 value="//g' | sed 's/".*$//g')
+
+local data
+
+if [ "$use_ipv6" -eq 0 ]; then
+  data="T2=$__IP&T3=120&act=dns_a_edit&domainid=$domainid&dnslistid=$dnslistid&B1=%D0%DE%B8%C4"
+else
+  data="T2=$__IP&T3=120&act=dns_ipv6_edit&domainid=$domainid&dnslistid=$dnslistid&B1=%D0%DE%B8%C4"
+fi
+curl -b '/tmp/cnkuai.cookiejar' -c '/tmp/cnkuai.cookiejar' -H "Content-Type: application/x-www-form-urlencoded" -H "Referer: $urlDnsA" -d "$data" -X POST "$urlDnsSave" > /dev/null || return 1
+
+return 0
diff --git a/external/subpack/net/ddns-scripts/files/usr/lib/ddns/update_digitalocean_com_v2.sh b/external/subpack/net/ddns-scripts/files/usr/lib/ddns/update_digitalocean_com_v2.sh
new file mode 100644
index 0000000..0770ab2
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/lib/ddns/update_digitalocean_com_v2.sh
@@ -0,0 +1,51 @@
+# Script for sending user defined updates using DO API
+# 2015 Artem Yakimenko <code at temik dot me>
+#
+# activated inside /etc/config/ddns by setting
+#
+# option update_script '/usr/lib/ddns/update_do.sh'
+#
+# the script is parsed (not executed) inside send_update() function
+# of /usr/lib/ddns/dynamic_dns_functions.sh
+# so you can use all available functions and global variables inside this script
+# already defined in dynamic_dns_updater.sh and dynamic_dns_functions.sh
+#
+# It make sence to define the update url ONLY inside this script
+# because it's anyway unique to the update script
+# otherwise it should work with the default scripts
+#
+# Options are passed from /etc/config/ddns:
+
+# Username - the record name DO Zone
+# Password - API Token
+# Domain - the domain managed by DO
+# Parm_opt - The Record ID in the DO API structure
+
+local __URL="https://api.digitalocean.com/v2/domains/[DOMAIN]/records/[RECORD_ID]"
+local __HEADER="Authorization: Bearer [PASSWORD]"
+local __HEADER_CONTENT="Content-Type: application/json"
+local __BODY='{"name":"[NAME]","data": "[IP]"}'
+# inside url we need username and password
+
+[ -z "$domain" ] && write_log 14 "Service section not configured correctly! Missing 'domain'"
+[ -z "$username" ] && write_log 14 "Service section not configured correctly! Missing 'Zone name in Username'"
+[ -z "$password" ] && write_log 14 "Service section not configured correctly! Missing 'password'"
+[ -z "$param_opt" ] && write_log 14 "Service section not configured correctly! Missing 'Zone ID in Optional Parameter'"
+
+# do replaces in URL, header and body:
+__URL=$(echo $__URL | sed -e "s#\[RECORD_ID\]#$param_opt#g"  \
+                               -e "s#\[DOMAIN\]#$domain#g")
+__HEADER=$(echo $__HEADER| sed -e "s#\[PASSWORD\]#$password#g")
+__HEADER_CONTENT=$(echo $__HEADER_CONTENT)
+__BODY=$(echo $__BODY | sed -e "s#\[NAME\]#$username#g" -e "s#\[IP\]#$__IP#g")
+
+#Send PUT request
+
+curl -X PUT -H "$__HEADER_CONTENT" -H "$__HEADER" -d "$__BODY" "$__URL"
+
+write_log 7 "DDNS Provider answered:\n$(cat $DATFILE)"
+
+# analyse provider answers
+# If IP is contained in the returned datastructure - API call was sucessful
+grep -E "$__IP" $DATFILE >/dev/null 2>&1
+return $?      # "0" if IP has been changed or no change is needed
diff --git a/external/subpack/net/ddns-scripts/files/usr/lib/ddns/update_freedns_42_pl.sh b/external/subpack/net/ddns-scripts/files/usr/lib/ddns/update_freedns_42_pl.sh
new file mode 100644
index 0000000..f0e9197
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/lib/ddns/update_freedns_42_pl.sh
@@ -0,0 +1,17 @@
+#.Distributed under the terms of the GNU General Public License (GPL) version 2.0
+#.2018 Michal Lipka <michal at sysadmin dot care>
+local __DUMMY
+local __URL="https://freedns.42.pl/xmlrpc.php"
+[ -z "$username" ] && write_log 14 "Service section not configured correctly! Missing 'username'"
+[ -z "$password" ] && write_log 14 "Service section not configured correctly! Missing 'password'"
+[ $ip_dynamic -eq 1 ] && __IP='\&lt;dynamic\&gt;'
+PROG="$(command -v curl) -sk"
+write_log 7 "sending update to freedns.42.pl with ip $__IP"
+XMLDATA="<?xml version='1.0'?><methodCall><methodName>xname.updateArecord</methodName><params><param><value><struct><member><name>name</name><value><string>[RECORDNAME]</string></value></member><member><name>zone</name><value><string>[ZONENAME]</string></value></member><member><name>oldaddress</name><value><string>*</string></value></member><member><name>updatereverse</name><value><string>0</string></value></member><member><name>user</name><value><string>[USERNAME]</string></value></member><member><name>ttl</name><value><string>600</string></value></member><member><name>newaddress</name><value><string>[IP]</string></value></member><member><name>password</name><value><string>[PASSWORD]</string></value></member></struct></value></param></params></methodCall>"
+XMLDATA=$(echo $XMLDATA | sed -e "s#\[USERNAME\]#$URL_USER#g" -e "s#\[PASSWORD\]#$URL_PASS#g" \
+-e "s#\[ZONENAME\]#$zone#g" -e "s#\[RECORDNAME\]#$record#g" -e "s#\[IP\]#$__IP#g")
+$PROG -d "$XMLDATA" -o $DATFILE $__URL || return 1
+write_log 7 "'freedns.42.pl' answered:${N}$(cat $DATFILE)"
+grep "<fault>" $DATFILE > /dev/null 2>&1 && return 1
+grep '<name>serial</name>' $DATFILE >/dev/null 2>&1
+return $?
diff --git a/external/subpack/net/ddns-scripts/files/usr/lib/ddns/update_gandi_net.sh b/external/subpack/net/ddns-scripts/files/usr/lib/ddns/update_gandi_net.sh
new file mode 100644
index 0000000..553e7e7
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/lib/ddns/update_gandi_net.sh
@@ -0,0 +1,20 @@
+#!/bin/sh
+# Thanks goes to Alex Griffin who provided this script.
+
+local __TTL=600
+local __RRTYPE
+local __ENDPOINT="https://dns.api.gandi.net/api/v5"
+
+[ -z "$username" ] && write_log 14 "Service section not configured correctly! Missing subdomain as 'username'"
+[ -z "$password" ] && write_log 14 "Service section not configured correctly! Missing API Key as 'password'"
+
+[ $use_ipv6 -ne 0 ] && __RRTYPE="AAAA" || __RRTYPE="A"
+
+curl -s -X PUT "$__ENDPOINT/domains/$domain/records/$username/$__RRTYPE" \
+	-H "X-Api-Key: $password" \
+	-H "Content-Type: application/json" \
+	-d "{\"rrset_ttl\": $__TTL, \"rrset_values\": [\"$__IP\"]}" >$DATFILE
+
+write_log 7 "gandi.net answered: $(cat $DATFILE)"
+
+return 0
diff --git a/external/subpack/net/ddns-scripts/files/usr/lib/ddns/update_godaddy_com_v1.sh b/external/subpack/net/ddns-scripts/files/usr/lib/ddns/update_godaddy_com_v1.sh
new file mode 100644
index 0000000..b8d527c
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/lib/ddns/update_godaddy_com_v1.sh
@@ -0,0 +1,172 @@
+#!/bin/sh
+#
+#.Distributed under the terms of the GNU General Public License (GPL) version 2.0
+#
+# script for sending updates to godaddy.com
+#.based on GoDaddy.sh v1.0 by Nazar78 @ TeaNazaR.com
+#.2017-2018 Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
+# GoDaddy Documentation at https://developer.godaddy.com/doc
+#
+# This script is parsed by dynamic_dns_functions.sh inside send_update() function
+#
+# using following options from /etc/config/ddns
+# option username - "key" as generated at https://developer.godaddy.com/keys/
+# option password - "secret" as generated at https://developer.godaddy.com/keys/
+# option domain   - "yourdomain.TLD" to update or "hostname@yourdomain.TLD"
+#
+# variable __IP already defined with the ip-address to use for update
+#
+
+# check parameters
+[ -z "$CURL" ] && [ -z "$CURL_SSL" ] && write_log 14 "GoDaddy communication require cURL with SSL support. Please install"
+[ -z "$username" ] && write_log 14 "Service section not configured correctly! Missing key as 'username'"
+[ -z "$password" ] && write_log 14 "Service section not configured correctly! Missing secret as 'password'"
+[ $use_https -eq 0 ] && use_https=1	# force HTTPS
+
+# used variables
+local __HOST __DOMAIN __TYPE __URL __PRGBASE __RUNPROG __DATA __IPV6
+
+# split __HOST __DOMAIN from $domain
+# given data:
+# @example.com for "domain record"
+# host.sub@example.com for a "host record"
+__HOST=$(printf %s "$domain" | cut -d@ -f1)
+__DOMAIN=$(printf %s "$domain" | cut -d@ -f2)
+
+# GoDaddy needs:
+# __DOMAIN = the base domain i.e. example.com
+# __HOST   = host.sub if updating a host record or
+# __HOST   = "@" urlencoded "%40" for a domain record
+[ -z "$__HOST" -o "$__HOST" = "$__DOMAIN" ] && __HOST="%40"
+
+# set record type
+[ $use_ipv6 -eq 0 ] && __TYPE="A" || __TYPE="AAAA"
+
+# now we know the url to use
+# __URL="https://api.ote-godaddy.com/v1/domains/$__DOMAIN/records/$__TYPE/$__HOST"	# api test server
+__URL="https://api.godaddy.com/v1/domains/$__DOMAIN/records/$__TYPE/$__HOST"		# production server
+
+# transfer function to use for godaddy
+# all needed variables are set global here
+# so we can use them directly
+godaddy_transfer() {
+	local __CNT=0
+	local __STATUS __ERR __DEVICE
+	while : ; do
+		write_log 7 "#> $__RUNPROG"
+		__STATUS=$(eval "$__RUNPROG")
+		__ERR=$?			# save communication error
+		[ $__ERR -eq 0 ] && break	# no error break while
+
+		write_log 4 "cURL error: '$__ERR'"
+		write_log 7 "$(cat $ERRFILE)"		# report error
+
+		[ $VERBOSE_MODE -gt 1 ] && {
+			# VERBOSE_MODE > 1 then NO retry
+			write_log 4 "Transfer failed - Verbose Mode: $VERBOSE_MODE - NO retry on error"
+			break
+		}
+
+		__CNT=$(( $__CNT + 1 ))	# increment error counter
+		# if error count > retry_count leave here
+		[ $retry_count -gt 0 -a $__CNT -gt $retry_count ] && \
+			write_log 14 "Transfer failed after $retry_count retries"
+
+		write_log 4 "Transfer failed - retry $__CNT/$retry_count in $RETRY_SECONDS seconds"
+		sleep $RETRY_SECONDS &
+		PID_SLEEP=$!
+		wait $PID_SLEEP	# enable trap-handler
+		PID_SLEEP=0
+	done
+
+	# handle HTTP error
+	[ $__STATUS -ne 200 ] && {
+		write_log 4 "GoDaddy reported an error:"
+		write_log 7 "$(cat $DATFILE)"
+		return 1
+	}
+	return 0
+}
+
+# Build base command to use
+__PRGBASE="$CURL -RsS -w '%{http_code}' -o $DATFILE --stderr $ERRFILE"
+# force network/interface-device to use for communication
+if [ -n "$bind_network" ]; then
+	local __DEVICE
+	network_get_physdev __DEVICE $bind_network || \
+		write_log 13 "Can not detect local device using 'network_get_physdev $bind_network' - Error: '$?'"
+	write_log 7 "Force communication via device '$__DEVICE'"
+	__PRGBASE="$__PRGBASE --interface $__DEVICE"
+fi
+# force ip version to use
+if [ $force_ipversion -eq 1 ]; then
+	[ $use_ipv6 -eq 0 ] && __PRGBASE="$__PRGBASE -4" || __PRGBASE="$__PRGBASE -6"	# force IPv4/IPv6
+fi
+# set certificate parameters
+if [ "$cacert" = "IGNORE" ]; then	# idea from Ticket #15327 to ignore server cert
+	__PRGBASE="$__PRGBASE --insecure"	# but not empty better to use "IGNORE"
+elif [ -f "$cacert" ]; then
+	__PRGBASE="$__PRGBASE --cacert $cacert"
+elif [ -d "$cacert" ]; then
+	__PRGBASE="$__PRGBASE --capath $cacert"
+elif [ -n "$cacert" ]; then		# it's not a file and not a directory but given
+	write_log 14 "No valid certificate(s) found at '$cacert' for HTTPS communication"
+fi
+# disable proxy if no set (there might be .wgetrc or .curlrc or wrong environment set)
+# or check if libcurl compiled with proxy support
+if [ -z "$proxy" ]; then
+	__PRGBASE="$__PRGBASE --noproxy '*'"
+elif [ -z "$CURL_PROXY" ]; then
+	# if libcurl has no proxy support and proxy should be used then force ERROR
+	write_log 13 "cURL: libcurl compiled without Proxy support"
+fi
+# set headers
+__PRGBASE="$__PRGBASE --header 'Authorization: sso-key $username:$password' "
+__PRGBASE="$__PRGBASE --header 'Accept: application/json' "
+__PRGBASE="$__PRGBASE --header 'Content-Type: application/json; charset=utf-8' "
+
+# read data from godaddy.com
+__RUNPROG="$__PRGBASE --request GET $__URL"
+godaddy_transfer || return 1
+
+# HTTP 200 OK, now analyse data and check if update needed
+__DATA=$(sed -r 's/.+data":"(.+)","t.+/\1/g' $DATFILE)
+
+# check data
+[ $use_ipv6 -eq 0 ] \
+	&& __DATA=$(printf "%s" "$__DATA" | grep -m 1 -o "$IPV4_REGEX") \
+	|| __DATA=$(printf "%s" "$__DATA" | grep -m 1 -o "$IPV6_REGEX")
+
+# we got data so verify
+[ -n "$__DATA" ] && {
+	# expand IPv6 for compare
+	if [ $use_ipv6 -eq 1 ]; then
+		expand_ipv6 $__IP __IPV6
+		expand_ipv6 $__DATA __DATA
+		[ "$__DATA" = "$__IPV6" ] && {		# IPv6 no update needed
+			write_log 7 "IPv6 at GoDaddy.com already up to date"
+			return 0
+		}
+	else
+		[ "$__DATA" = "$__IP" ] && {		# IPv4 no update needed
+			write_log 7 "IPv4 at GoDaddy.com already up to date"
+			return 0
+		}
+	fi
+}
+
+# update is needed
+# let's build data to send,
+# use file to work around double quotes '"' needed for json
+cat > $DATFILE << EOF
+[{"data":"$__IP"}]
+EOF
+
+# let's complete transfer command
+__RUNPROG="$__PRGBASE --request PUT --data @$DATFILE $__URL"
+
+godaddy_transfer || return 1
+
+# HTTP 200 OK
+return 0
+
diff --git a/external/subpack/net/ddns-scripts/files/usr/lib/ddns/update_no-ip_com.sh b/external/subpack/net/ddns-scripts/files/usr/lib/ddns/update_no-ip_com.sh
new file mode 100644
index 0000000..e13058b
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/lib/ddns/update_no-ip_com.sh
@@ -0,0 +1,54 @@
+#
+#.Distributed under the terms of the GNU General Public License (GPL) version 2.0
+#
+# script for sending updates to no-ip.com / noip.com
+#.2014-2015 Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
+#
+# This script is parsed by dynamic_dns_functions.sh inside send_update() function
+#
+# provider did not reactivate records, if no IP change was recognized
+# so we send a dummy (localhost) and a seconds later we send the correct IP addr
+#
+local __DUMMY
+local __UPDURL6="http://[USERNAME]:[PASSWORD]@dynupdate6.noip.com/nic/update?hostname=[DOMAIN]&myip=[IP]"
+local __UPDURL="http://[USERNAME]:[PASSWORD]@dynupdate.noip.com/nic/update?hostname=[DOMAIN]&myip=[IP]"
+# inside url we need username and password
+[ -z "$username" ] && write_log 14 "Service section not configured correctly! Missing 'username'"
+[ -z "$password" ] && write_log 14 "Service section not configured correctly! Missing 'password'"
+
+# set IP version dependend dummy (localhost)
+[ $use_ipv6 -eq 0 ] && __DUMMY="127.0.0.1" || __DUMMY="::1"
+[ $use_ipv6 -eq 0 ] && __UPDURL=$__UPDURL || __UPDURL=$__UPDURL6
+
+# lets do DUMMY transfer
+write_log 7 "sending dummy IP to 'no-ip.com'"
+__URL=$(echo $__UPDURL | sed -e "s#\[USERNAME\]#$URL_USER#g" -e "s#\[PASSWORD\]#$URL_PASS#g" \
+			       -e "s#\[DOMAIN\]#$domain#g" -e "s#\[IP\]#$__DUMMY#g")
+[ $use_https -ne 0 ] && __URL=$(echo $__URL | sed -e 's#^http:#https:#')
+
+do_transfer "$__URL" || return 1
+
+write_log 7 "'no-ip.com' answered:${N}$(cat $DATFILE)"
+# analyse provider answers
+# "good [IP_ADR]"	= successful
+# "nochg [IP_ADR]"	= no change but OK
+grep -E "good|nochg" $DATFILE >/dev/null 2>&1 || return 1
+
+# lets wait a seconds
+sleep 1
+
+# now send the correct data
+write_log 7 "sending real IP to 'no-ip.com'"
+__URL=$(echo $__UPDURL | sed -e "s#\[USERNAME\]#$URL_USER#g" -e "s#\[PASSWORD\]#$URL_PASS#g" \
+			       -e "s#\[DOMAIN\]#$domain#g" -e "s#\[IP\]#$__IP#g")
+[ $use_https -ne 0 ] && __URL=$(echo $__URL | sed -e 's#^http:#https:#')
+
+do_transfer "$__URL" || return 1
+
+write_log 7 "'no-ip.com' answered:${N}$(cat $DATFILE)"
+# analyse provider answers
+# "good [IP_ADR]"	= successful
+# "nochg [IP_ADR]"	= no change but OK
+grep -E "good|nochg" $DATFILE >/dev/null 2>&1
+return $?	# "0" if "good" or "nochg" found
+
diff --git a/external/subpack/net/ddns-scripts/files/usr/lib/ddns/update_nsupdate.sh b/external/subpack/net/ddns-scripts/files/usr/lib/ddns/update_nsupdate.sh
new file mode 100644
index 0000000..039196f
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/lib/ddns/update_nsupdate.sh
@@ -0,0 +1,48 @@
+#
+#.Distributed under the terms of the GNU General Public License (GPL) version 2.0
+#
+# The script directly updates a PowerDNS (or maybe bind server) via nsupdate from bind-client package.
+#.based on github request #957 by Jan Riechers <de at r-jan dot de>
+#.2015 Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
+#
+# This script is parsed by dynamic_dns_functions.sh inside send_update() function
+#
+# using following options from /etc/config/ddns
+# option username   - keyname 
+# option password   - shared secret (base64 encoded)
+# option domain     - full qualified domain to update
+# option dns_server - DNS server to update
+#
+# variable __IP already defined with the ip-address to use for update
+#
+local __TTL=600		#.preset DNS TTL (in seconds)
+local __RRTYPE __PW __TCP
+local __PROG=$(command -v nsupdate)			# BIND nsupdate ?
+[ -z "$__PROG" ] && __PROG=$(command -v knsupdate)	# Knot nsupdate ?
+
+[ -z "$__PROG" ]     && write_log 14 "'nsupdate' or 'knsupdate' not installed !"
+[ -z "$username" ]   && write_log 14 "Service section not configured correctly! Missing 'username'"
+[ -z "$password" ]   && write_log 14 "Service section not configured correctly! Missing 'password'"
+[ -z "$dns_server" ] && write_log 14 "Service section not configured correctly! Missing 'dns_server'"
+
+[ $use_ipv6 -ne 0 ] && __RRTYPE="AAAA" || __RRTYPE="A"
+[ $force_dnstcp -ne 0 ] && __TCP="-v" || __TCP=""
+
+# create command file
+cat >$DATFILE <<-EOF
+server $dns_server
+key $username $password
+update del $domain $__RRTYPE
+update add $domain $__TTL $__RRTYPE $__IP
+show
+send
+answer
+quit
+EOF
+
+$__PROG -d $__TCP $DATFILE >$ERRFILE 2>&1
+
+# nsupdate always return success
+write_log 7 "(k)nsupdate reports:${N}$(cat $ERRFILE)"
+
+return 0
diff --git a/external/subpack/net/ddns-scripts/files/usr/lib/ddns/update_route53_v1.sh b/external/subpack/net/ddns-scripts/files/usr/lib/ddns/update_route53_v1.sh
new file mode 100644
index 0000000..6d752ba
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/lib/ddns/update_route53_v1.sh
@@ -0,0 +1,95 @@
+#!/bin/sh
+# Distributed under the terms of the GNU General Public License (GPL) version 2.0
+# based on Yuval Adam's route53.sh found at https://github.com/yuvadm/route53-ddns/blob/master/route53.sh
+# 2017 Max Berger <max at berger dot name>
+
+[ -z "${CURL_SSL}" ] && write_log 14 "Amazon AWS Route53 communication require cURL with SSL support. Please install"
+[ -z "{$username}" ] && write_log 14 "Service section not configured correctly! Missing key as 'username'"
+[ -z "${password}" ] && write_log 14 "Service section not configured correctly! Missing secret as 'password'"
+[ -z "${domain}" ] && write_log 14 "Service section not configured correctly! Missing zone id as 'domain'"
+
+ENDPOINT="route53.amazonaws.com"
+RECORD_TTL=300
+RECORD_NAME="${lookup_host}."
+[ ${use_ipv6} -eq 0 ] && RECORD_TYPE="A"
+[ ${use_ipv6} -eq 1 ] && RECORD_TYPE="AAAA"
+RECORD_VALUE="${LOCAL_IP}"
+HOSTED_ZONE_ID="${domain}"
+API_PATH="/2013-04-01/hostedzone/${HOSTED_ZONE_ID}/rrset/"
+
+AWS_ACCESS_KEY_ID="${username}"
+AWS_SECRET_ACCESS_KEY="${password}"
+AWS_REGION='us-east-1'
+AWS_SERVICE='route53'
+
+hash() {
+    msg="$1"
+    echo -en "${msg}" | openssl dgst -sha256 | sed 's/^.* //'
+}
+
+sign_plain() {
+    # Sign message using a plaintext key
+    key="$1"
+    msg="$2"
+    echo -en "${msg}" | openssl dgst -hex -sha256 -hmac "${key}" | sed 's/^.* //'
+}
+
+sign() {
+    # Sign message using a hex formatted key
+    key="$1"
+    msg="$2"
+    echo -en "${msg}" | openssl dgst -hex -sha256 -mac HMAC -macopt "hexkey:${key}" | sed 's/^.* //'
+}
+
+request_body="<?xml version=\"1.0\" encoding=\"UTF-8\"?> \
+<ChangeResourceRecordSetsRequest xmlns=\"https://route53.amazonaws.com/doc/2013-04-01/\"> \
+<ChangeBatch> \
+   <Changes> \
+      <Change> \
+         <Action>UPSERT</Action> \
+         <ResourceRecordSet> \
+            <Name>${RECORD_NAME}</Name> \
+            <Type>${RECORD_TYPE}</Type> \
+            <TTL>${RECORD_TTL}</TTL> \
+            <ResourceRecords> \
+               <ResourceRecord> \
+                  <Value>${RECORD_VALUE}</Value> \
+               </ResourceRecord> \
+            </ResourceRecords> \
+         </ResourceRecordSet> \
+      </Change> \
+   </Changes> \
+</ChangeBatch> \
+</ChangeResourceRecordSetsRequest>"
+
+fulldate="$(date --utc +%Y%m%dT%H%M%SZ)"
+shortdate="$(date --utc +%Y%m%d)"
+signed_headers="host;x-amz-date"
+request_hash="$(hash "${request_body}")"
+canonical_request="POST\n${API_PATH}\n\nhost:route53.amazonaws.com\nx-amz-date:${fulldate}\n\n${signed_headers}\n${request_hash}"
+
+date_key="$(sign_plain "AWS4${AWS_SECRET_ACCESS_KEY}" "${shortdate}")"
+region_key="$(sign "${date_key}" ${AWS_REGION})"
+service_key="$(sign "${region_key}" ${AWS_SERVICE})"
+signing_key="$(sign "${service_key}" aws4_request)"
+
+credential="${shortdate}/${AWS_REGION}/${AWS_SERVICE}/aws4_request"
+sigmsg="AWS4-HMAC-SHA256\n${fulldate}\n${credential}\n$(hash "${canonical_request}")"
+
+signature="$(sign "${signing_key}" "${sigmsg}")"
+
+authorization="AWS4-HMAC-SHA256 Credential=${AWS_ACCESS_KEY_ID}/${credential}, SignedHeaders=${signed_headers}, Signature=${signature}"
+
+ANSWER="$(flock /tmp/$(basename -s .sh "$0").lock curl \
+    -X "POST" \
+    -H "Host: route53.amazonaws.com" \
+    -H "X-Amz-Date: ${fulldate}" \
+    -H "Authorization: ${authorization}" \
+    -H "Content-Type: text/xml" \
+    -d "$request_body" \
+    "https://${ENDPOINT}${API_PATH}")"
+write_log 7 "${ANSWER}"
+
+echo "${ANSWER}" | grep -F "Error" >/dev/null && return 1
+echo "${ANSWER}" | grep -F "ChangeInfo" >/dev/null && return 0
+return 2
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/3322.org.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/3322.org.json
new file mode 100644
index 0000000..d166dc4
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/3322.org.json
@@ -0,0 +1,6 @@
+{
+	"name": "3322.org",
+	"ipv4": {
+		"url": "http://[USERNAME]:[PASSWORD]@members.3322.org/dyndns/update?system=dyndns&hostname=[DOMAIN]&myip=[IP]"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/able.or.kr.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/able.or.kr.json
new file mode 100644
index 0000000..f4f7c08
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/able.or.kr.json
@@ -0,0 +1,6 @@
+{
+	"name": "able.or.kr",
+	"ipv4": {
+		"url": "http://able.or.kr/ddns/src/update.php?hostname=[DOMAIN]&myip=[IP]&ddnsuser=[USERNAME]&pwd=[PASSWORD]"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/afraid.org-basicauth.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/afraid.org-basicauth.json
new file mode 100644
index 0000000..b4f73fa
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/afraid.org-basicauth.json
@@ -0,0 +1,9 @@
+{
+	"name": "afraid.org-basicauth",
+	"ipv4": {
+		"url": "https://[USERNAME]:[PASSWORD]@freedns.afraid.org/nic/update?hostname=[DOMAIN]&myip=[IP]"
+	},
+	"ipv6": {
+		"url": "https://[USERNAME]:[PASSWORD]@freedns.afraid.org/nic/update?hostname=[DOMAIN]&myip=[IP]"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/afraid.org-keyauth.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/afraid.org-keyauth.json
new file mode 100644
index 0000000..166b004
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/afraid.org-keyauth.json
@@ -0,0 +1,9 @@
+{
+	"name": "afraid.org-keyauth",
+	"ipv4": {
+		"url": "https://freedns.afraid.org/dynamic/update.php?[PASSWORD]&address=[IP]"
+	},
+	"ipv6": {
+		"url": "https://freedns.afraid.org/dynamic/update.php?[PASSWORD]&address=[IP]"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/afraid.org-v2-basic.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/afraid.org-v2-basic.json
new file mode 100644
index 0000000..436caf4
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/afraid.org-v2-basic.json
@@ -0,0 +1,9 @@
+{
+	"name": "afraid.org-v2-basic",
+	"ipv4": {
+		"url": "https://[USERNAME]:[PASSWORD]@sync.afraid.org/u/?h=[DOMAIN]&ip=[IP]"
+	},
+	"ipv6": {
+		"url": "https://[USERNAME]:[PASSWORD]@v6.sync.afraid.org/u/?h=[DOMAIN]&ip=[IP]"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/afraid.org-v2-token.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/afraid.org-v2-token.json
new file mode 100644
index 0000000..0786dd8
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/afraid.org-v2-token.json
@@ -0,0 +1,9 @@
+{
+	"name": "afraid.org-v2-token",
+	"ipv4": {
+		"url": "https://sync.afraid.org/u/[PASSWORD]/?address=[IP]"
+	},
+	"ipv6": {
+		"url": "https://v6.sync.afraid.org/u/[PASSWORD]/?address=[IP]"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/all-inkl.com.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/all-inkl.com.json
new file mode 100644
index 0000000..d0f5b73
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/all-inkl.com.json
@@ -0,0 +1,9 @@
+{
+	"name": "all-inkl.com",
+	"ipv4": {
+		"url": "http://[USERNAME]:[PASSWORD]@dyndns.kasserver.com/?myip=[IP]"
+	},
+	"ipv6": {
+		"url": "http://[USERNAME]:[PASSWORD]@dyndns.kasserver.com/?myip=[IP]"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/bind-nsupdate.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/bind-nsupdate.json
new file mode 100644
index 0000000..f91806a
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/bind-nsupdate.json
@@ -0,0 +1,9 @@
+{
+	"name": "bind-nsupdate",
+	"ipv4": {
+		"url": "update_nsupdate.sh"
+	},
+	"ipv6": {
+		"url": "update_nsupdate.sh"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/changeip.com.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/changeip.com.json
new file mode 100644
index 0000000..3472f0b
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/changeip.com.json
@@ -0,0 +1,7 @@
+{
+	"name": "changeip.com",
+	"ipv4": {
+		"url": "http://[USERNAME]:[PASSWORD]@nic.changeip.com/nic/update?u=[USERNAME]&p=[PASSWORD]&cmd=update&hostname=[DOMAIN]&ip=[IP]",
+		"answer": "Successful"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/cloudflare.com-v4.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/cloudflare.com-v4.json
new file mode 100644
index 0000000..66a1d11
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/cloudflare.com-v4.json
@@ -0,0 +1,9 @@
+{
+	"name": "cloudflare.com-v4",
+	"ipv4": {
+		"url": "update_cloudflare_com_v4.sh"
+	},
+	"ipv6": {
+		"url": "update_cloudflare_com_v4.sh"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/cnkuai.cn.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/cnkuai.cn.json
new file mode 100644
index 0000000..1e9bebf
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/cnkuai.cn.json
@@ -0,0 +1,9 @@
+{
+	"name": "cnkuai.cn",
+	"ipv4": {
+		"url": "update_cnkuai_cn.sh"
+	},
+	"ipv6": {
+		"url": "update_cnkuai_cn.sh"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/core-networks.de.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/core-networks.de.json
new file mode 100644
index 0000000..c334d77
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/core-networks.de.json
@@ -0,0 +1,11 @@
+{
+	"name": "core-networks.de",
+	"ipv4": {
+		"url": "http://[USERNAME]:[PASSWORD]@dyndns.core-networks.de/?hostname=[DOMAIN]&myip=[IP]&keepipv6=1",
+		"answer": "good"
+	},
+	"ipv6": {
+		"url": "http://[USERNAME]:[PASSWORD]@dyndns.core-networks.de/?hostname=[DOMAIN]&myip=[IP]&keepipv4=1",
+		"answer": "good"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/ddnss.de.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/ddnss.de.json
new file mode 100644
index 0000000..17cdf0e
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/ddnss.de.json
@@ -0,0 +1,7 @@
+{
+	"name": "ddnss.de",
+	"ipv4": {
+		"url": "http://ip4.ddnss.de/upd.php?user=[USERNAME]&pwd=[PASSWORD]&host=[DOMAIN]&ip=[IP]",
+		"answer": "Updated|No change"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/ddo.jp.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/ddo.jp.json
new file mode 100644
index 0000000..1cf53b5
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/ddo.jp.json
@@ -0,0 +1,6 @@
+{
+	"name": "ddo.jp",
+	"ipv4": {
+		"url": "http://free.ddo.jp/dnsupdate.php?dn=[DOMAIN]&pw=[PASSWORD]&ip=[IP]"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/desec.io.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/desec.io.json
new file mode 100644
index 0000000..227762e
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/desec.io.json
@@ -0,0 +1,11 @@
+{
+	"name": "desec.io",
+	"ipv4": {
+		"url": "http://update.dedyn.io/update?username=[USERNAME]&password=[PASSWORD]&hostname=[DOMAIN]&myipv4=[IP]",
+		"answer": "good|nochg"
+	},
+	"ipv6": {
+		"url": "http://update.dedyn.io/update?username=[USERNAME]&password=[PASSWORD]&hostname=[DOMAIN]&myipv6=[IP]",
+		"answer": "good|nochg"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dhis.org.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dhis.org.json
new file mode 100644
index 0000000..cc2ce3e
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dhis.org.json
@@ -0,0 +1,9 @@
+{
+	"name": "dhis.org",
+	"ipv4": {
+		"url": "http://[USERNAME]:[PASSWORD]@is.dhis.org/"
+	},
+	"ipv6": {
+		"url": "http://[USERNAME]:[PASSWORD]@is.dhis.org/"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/digitalocean.com-v2.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/digitalocean.com-v2.json
new file mode 100644
index 0000000..abeac56
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/digitalocean.com-v2.json
@@ -0,0 +1,9 @@
+{
+	"name": "digitalocean.com-v2",
+	"ipv4": {
+		"url": "update_digitalocean_com_v2.sh"
+	},
+	"ipv6": {
+		"url": "update_digitalocean_com_v2.sh"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dnsdynamic.org.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dnsdynamic.org.json
new file mode 100644
index 0000000..f1fd181
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dnsdynamic.org.json
@@ -0,0 +1,7 @@
+{
+	"name": "dnsdynamic.org",
+	"ipv4": {
+		"url": "http://[USERNAME]:[PASSWORD]@www.dnsdynamic.org/api/?hostname=[DOMAIN]&myip=[IP]",
+		"answer": "good|nochg"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dnsever.com.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dnsever.com.json
new file mode 100644
index 0000000..23f9ac9
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dnsever.com.json
@@ -0,0 +1,6 @@
+{
+	"name": "dnsever.com",
+	"ipv4": {
+		"url": "http://[USERNAME]:[PASSWORD]@dyna.dnsever.com/update.php?host[[DOMAIN]]"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dnsexit.com.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dnsexit.com.json
new file mode 100644
index 0000000..89d7a81
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dnsexit.com.json
@@ -0,0 +1,6 @@
+{
+	"name": "dnsexit.com",
+	"ipv4": {
+		"url": "http://update.dnsexit.com/RemoteUpdate.sv?login=[USERNAME]&password=[PASSWORD]&host=[DOMAIN]&myip=[IP]"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dnshome.de.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dnshome.de.json
new file mode 100644
index 0000000..f767de2
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dnshome.de.json
@@ -0,0 +1,9 @@
+{
+	"name": "dnshome.de",
+	"ipv4": {
+		"url": "http://[USERNAME]:[PASSWORD]@www.dnshome.de/dyndns.php?hostname=[DOMAIN]&ip=[IP]"
+	},
+	"ipv6": {
+		"url": "http://[USERNAME]:[PASSWORD]@www.dnshome.de/dyndns.php?hostname=[DOMAIN]&ip6=[IP]"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dnsmadeeasy.com.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dnsmadeeasy.com.json
new file mode 100644
index 0000000..744301a
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dnsmadeeasy.com.json
@@ -0,0 +1,7 @@
+{
+	"name": "dnsmadeeasy.com",
+	"ipv4": {
+		"url": "http://cp.dnsmadeeasy.com/servlet/updateip?username=[USERNAME]&password=[PASSWORD]&id=[DOMAIN]&ip=[IP]",
+		"answer": "success|ip-same"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dnsmax.com.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dnsmax.com.json
new file mode 100644
index 0000000..e84667a
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dnsmax.com.json
@@ -0,0 +1,6 @@
+{
+	"name": "dnsmax.com",
+	"ipv4": {
+		"url": "http://update.dnsmax.com/update/?username=[USERNAME]&password=[PASSWORD]&resellerid=1&clientname=openwrt&clientversion=8.09&protocolversion=2.0&updatehostname=[DOMAIN]&ip=[IP]"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dnsomatic.com.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dnsomatic.com.json
new file mode 100644
index 0000000..09df1eb
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dnsomatic.com.json
@@ -0,0 +1,7 @@
+{
+	"name": "dnsomatic.com",
+	"ipv4": {
+		"url": "http://[USERNAME]:[PASSWORD]@updates.dnsomatic.com/nic/update?hostname=[DOMAIN]&myip=[IP]",
+		"answer": "good|nochg"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dnspark.com.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dnspark.com.json
new file mode 100644
index 0000000..f10e1f2
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dnspark.com.json
@@ -0,0 +1,7 @@
+{
+	"name": "dnspark.com",
+	"ipv4": {
+		"url": "http://[USERNAME]:[PASSWORD]@control.dnspark.com/api/dynamic/update.php?hostname=[DOMAIN]&ip=[IP]",
+		"answer": "ok|nochange"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/do.de.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/do.de.json
new file mode 100644
index 0000000..3884a01
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/do.de.json
@@ -0,0 +1,11 @@
+{
+	"name": "do.de",
+	"ipv4": {
+		"url": "http://ddns.do.de/?myip=[IP]&hostname=[DOMAIN]&username=[USERNAME]&password=[PASSWORD]",
+		"answer": "good|nochg"
+	},
+	"ipv6": {
+		"url": "http://ddns.do.de/?myip=[IP]&hostname=[DOMAIN]&username=[USERNAME]&password=[PASSWORD]",
+		"answer": "good|nochg"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/domopoli.de.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/domopoli.de.json
new file mode 100644
index 0000000..517751c
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/domopoli.de.json
@@ -0,0 +1,7 @@
+{
+	"name": "domopoli.de",
+	"ipv4": {
+		"url": "http://[USERNAME]:[PASSWORD]@http://dyndns.domopoli.de/nic/update?hostname=[DOMAIN]&myip=[IP]",
+		"answer": "good|nochg"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dtdns.com.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dtdns.com.json
new file mode 100644
index 0000000..14941c0
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dtdns.com.json
@@ -0,0 +1,6 @@
+{
+	"name": "dtdns.com",
+	"ipv4": {
+		"url": "http://www.dtdns.com/api/autodns.cfm?id=[DOMAIN]&pw=[PASSWORD]&ip=[IP]"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/duckdns.org.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/duckdns.org.json
new file mode 100644
index 0000000..625c9f9
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/duckdns.org.json
@@ -0,0 +1,11 @@
+{
+	"name": "duckdns.org",
+	"ipv4": {
+		"url": "http://www.duckdns.org/update?domains=[DOMAIN]&token=[PASSWORD]&ip=[IP]",
+		"answer": "OK"
+	},
+	"ipv6": {
+		"url": "http://www.duckdns.org/update?domains=[DOMAIN]&token=[PASSWORD]&ipv6=[IP]",
+		"answer": "OK"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/duiadns.net.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/duiadns.net.json
new file mode 100644
index 0000000..bbf9998
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/duiadns.net.json
@@ -0,0 +1,9 @@
+{
+	"name": "duiadns.net",
+	"ipv4": {
+		"url": "http://ip.duiadns.net/dynamic.duia?host=[DOMAIN]&password=[PASSWORD]&ip4=[IP]"
+	},
+	"ipv6": {
+		"url": "http://ip.duiadns.net/dynamic.duia?host=[DOMAIN]&password=[PASSWORD]&ip6=[IP]"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dy.fi.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dy.fi.json
new file mode 100644
index 0000000..ce9e4fd
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dy.fi.json
@@ -0,0 +1,7 @@
+{
+	"name": "dy.fi",
+	"ipv4": {
+		"url": "http://[USERNAME]:[PASSWORD]@www.dy.fi/nic/update?hostname=[DOMAIN]",
+		"answer": "good|nochg"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dyn.com.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dyn.com.json
new file mode 100644
index 0000000..0ac779b
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dyn.com.json
@@ -0,0 +1,11 @@
+{
+	"name": "dyn.com",
+	"ipv4": {
+		"url": "http://[USERNAME]:[PASSWORD]@members.dyndns.org/v3/update?hostname=[DOMAIN]&myip=[IP]",
+		"answer": "good|nochg"
+	},
+	"ipv6": {
+		"url": "http://[USERNAME]:[PASSWORD]@members.dyndns.org/v3/update?hostname=[DOMAIN]&myip=[IP]",
+		"answer": "good|nochg"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dyndns.it.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dyndns.it.json
new file mode 100644
index 0000000..2cffb34
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dyndns.it.json
@@ -0,0 +1,7 @@
+{
+	"name": "dyndns.it",
+	"ipv4": {
+		"url": "http://[USERNAME]:[PASSWORD]@update.dyndns.it/nic/update?system=dyndns&hostname=[DOMAIN]&myip=[IP]",
+		"answer": "good|nochg"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dyndns.org.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dyndns.org.json
new file mode 100644
index 0000000..a0c064f
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dyndns.org.json
@@ -0,0 +1,11 @@
+{
+	"name": "dyndns.org",
+	"ipv4": {
+		"url": "http://[USERNAME]:[PASSWORD]@members.dyndns.org/v3/update?hostname=[DOMAIN]&myip=[IP]",
+		"answer": "good|nochg"
+	},
+	"ipv6": {
+		"url": "http://[USERNAME]:[PASSWORD]@members.dyndns.org/v3/update?hostname=[DOMAIN]&myip=[IP]",
+		"answer": "good|nochg"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dyndnss.net.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dyndnss.net.json
new file mode 100644
index 0000000..65b3351
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dyndnss.net.json
@@ -0,0 +1,6 @@
+{
+	"name": "dyndnss.net",
+	"ipv4": {
+		"url": "http://www.dyndnss.net/?user=[USERNAME]&pass=[PASSWORD]&domain=[DOMAIN]&updater=other"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dynsip.org.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dynsip.org.json
new file mode 100644
index 0000000..ceb2e15
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dynsip.org.json
@@ -0,0 +1,6 @@
+{
+	"name": "dynsip.org",
+	"ipv4": {
+		"url": "http://[USERNAME]:[PASSWORD]@dynsip.org/nic/update?hostname=[DOMAIN]&myip=[IP]"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dynu.com.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dynu.com.json
new file mode 100644
index 0000000..2c25ea9
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dynu.com.json
@@ -0,0 +1,9 @@
+{
+	"name": "dynu.com",
+	"ipv4": {
+		"url": "http://api.dynu.com/nic/update?hostname=[DOMAIN]&myip=[IP]&username=[USERNAME]&password=[PASSWORD]"
+	},
+	"ipv6": {
+		"url": "http://api.dynu.com/nic/update?hostname=[DOMAIN]&myipv6=[IP]&username=[USERNAME]&password=[PASSWORD]"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dynv6.com.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dynv6.com.json
new file mode 100644
index 0000000..66c62aa
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/dynv6.com.json
@@ -0,0 +1,11 @@
+{
+	"name": "dynv6.com",
+	"ipv4": {
+		"url": "http://dynv6.com/api/update?hostname=[DOMAIN]&token=[PASSWORD]&ipv4=[IP]",
+		"answer": "updated|unchanged"
+	},
+	"ipv6": {
+		"url": "http://dynv6.com/api/update?hostname=[DOMAIN]&token=[PASSWORD]&ipv6=[IP]",
+		"answer": "updated|unchanged"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/easydns.com.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/easydns.com.json
new file mode 100644
index 0000000..6f6855d
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/easydns.com.json
@@ -0,0 +1,7 @@
+{
+	"name": "easydns.com",
+	"ipv4": {
+		"url": "http://[USERNAME]:[PASSWORD]@api.cp.easydns.com/dyn/generic.php?hostname=[DOMAIN]&myip=[IP]",
+		"answer": "OK|NOERROR"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/editdns.net.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/editdns.net.json
new file mode 100644
index 0000000..deb60fc
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/editdns.net.json
@@ -0,0 +1,6 @@
+{
+	"name": "editdns.net",
+	"ipv4": {
+		"url": "http://dyndns-free.editdns.net/api/dynLinux.php?p=[PASSWORD]&r=[DOMAIN]"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/freedns.42.pl.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/freedns.42.pl.json
new file mode 100644
index 0000000..c04dc1d
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/freedns.42.pl.json
@@ -0,0 +1,6 @@
+{
+	"name": "freedns.42.pl",
+	"ipv4": {
+		"url": "update_freedns_42_pl.sh"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/gandi.net.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/gandi.net.json
new file mode 100644
index 0000000..de54a16
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/gandi.net.json
@@ -0,0 +1,9 @@
+{
+	"name": "gandi.net",
+	"ipv4": {
+		"url": "update_gandi_net.sh"
+	},
+	"ipv6": {
+		"url": "update_gandi_net.sh"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/godaddy.com-v1.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/godaddy.com-v1.json
new file mode 100644
index 0000000..211e0e5
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/godaddy.com-v1.json
@@ -0,0 +1,9 @@
+{
+	"name": "godaddy.com-v1",
+	"ipv4": {
+		"url": "update_godaddy_com_v1.sh"
+	},
+	"ipv6": {
+		"url": "update_godaddy_com_v1.sh"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/goip.de.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/goip.de.json
new file mode 100644
index 0000000..5aaf3ba
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/goip.de.json
@@ -0,0 +1,9 @@
+{
+	"name": "goip.de",
+	"ipv4": {
+		"url": "http://www.goip.de/setip?username=[USERNAME]&password=[PASSWORD]&subdomain=[DOMAIN]&ip=[IP]"
+	},
+	"ipv6": {
+		"url": "http://www.goip.de/setip?username=[USERNAME]&password=[PASSWORD]&subdomain=[DOMAIN]&ip6=[IP]"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/google.com.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/google.com.json
new file mode 100644
index 0000000..edfe461
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/google.com.json
@@ -0,0 +1,11 @@
+{
+	"name": "google.com",
+	"ipv4": {
+		"url": "https://[USERNAME]:[PASSWORD]@domains.google.com/nic/update?hostname=[DOMAIN]&myip=[IP]",
+		"answer": "good|nochg"
+	},
+	"ipv6": {
+		"url": "https://[USERNAME]:[PASSWORD]@domains.google.com/nic/update?hostname=[DOMAIN]&myip=[IP]",
+		"answer": "good|nochg"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/he.net.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/he.net.json
new file mode 100644
index 0000000..7043efe
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/he.net.json
@@ -0,0 +1,11 @@
+{
+	"name": "he.net",
+	"ipv4": {
+		"url": "http://[DOMAIN]:[PASSWORD]@dyn.dns.he.net/nic/update?hostname=[DOMAIN]&myip=[IP]",
+		"answer": "good|nochg"
+	},
+	"ipv6": {
+		"url": "http://[DOMAIN]:[PASSWORD]@dyn.dns.he.net/nic/update?hostname=[DOMAIN]&myip=[IP]",
+		"answer": "good|nochg"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/inwx.de.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/inwx.de.json
new file mode 100644
index 0000000..10b16a9
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/inwx.de.json
@@ -0,0 +1,11 @@
+{
+	"name": "inwx.de",
+	"ipv4": {
+		"url": "http://[USERNAME]:[PASSWORD]@dyndns.inwx.com/nic/update?myip=[IP]",
+		"answer": "good|nochg"
+	},
+	"ipv6": {
+		"url": "http://[USERNAME]:[PASSWORD]@dyndns.inwx.com/nic/update?myipv6=[IP]",
+		"answer": "good|nochg"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/joker.com.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/joker.com.json
new file mode 100644
index 0000000..af897f1
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/joker.com.json
@@ -0,0 +1,7 @@
+{
+	"name": "joker.com",
+	"ipv4": {
+		"url": "http://svc.joker.com/nic/update?username=[USERNAME]&password=[PASSWORD]&myip=[IP]&hostname=[DOMAIN]",
+		"answer": "good|nochg"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/loopia.se.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/loopia.se.json
new file mode 100644
index 0000000..f1c3fc2
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/loopia.se.json
@@ -0,0 +1,11 @@
+{
+	"name": "loopia.se",
+	"ipv4": {
+		"url": "http://[USERNAME]:[PASSWORD]@dns.loopia.se/XDynDNSServer/XDynDNS.php?system=custom&hostname=[DOMAIN]&myip=[IP]",
+		"answer": "good|nochg"
+	},
+	"ipv6": {
+		"url": "http://[USERNAME]:[PASSWORD]@dns.loopia.se/XDynDNSServer/XDynDNS.php?system=custom&hostname=[DOMAIN]&myip=[IP]",
+		"answer": "good|nochg"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/moniker.com.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/moniker.com.json
new file mode 100644
index 0000000..c5b7aa9
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/moniker.com.json
@@ -0,0 +1,7 @@
+{
+	"name": "moniker.com",
+	"ipv4": {
+		"url": "https://dynamicdns.key-systems.net/update.php?hostname=[DOMAIN]&password=[PASSWORD]&ip=[IP]",
+		"answer": "success"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/mydns.ip.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/mydns.ip.json
new file mode 100644
index 0000000..11e9887
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/mydns.ip.json
@@ -0,0 +1,9 @@
+{
+	"name": "mydns.jp",
+	"ipv4": {
+		"url": "http://www.mydns.jp/directip.html?MID=[USERNAME]&PWD=[PASSWORD]&IPV4ADDR=[IP]"
+	},
+	"ipv6": {
+		"url": "http://www.mydns.jp/directip.html?MID=[USERNAME]&PWD=[PASSWORD]&IPV6ADDR=[IP]"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/myip.co.ua.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/myip.co.ua.json
new file mode 100644
index 0000000..bf3609d
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/myip.co.ua.json
@@ -0,0 +1,7 @@
+{
+	"name": "myip.co.ua",
+	"ipv4": {
+		"url": "http://[USERNAME]:[PASSWORD]@myip.co.ua/update?hostname=[DOMAIN]&myip=[IP]",
+		"answer": "good"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/myonlineportal.net.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/myonlineportal.net.json
new file mode 100644
index 0000000..b3196d6
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/myonlineportal.net.json
@@ -0,0 +1,11 @@
+{
+	"name": "myonlineportal.net",
+	"ipv4": {
+		"url": "http://myonlineportal.net/updateddns?hostname=[DOMAIN]&ip=[IP]&username=[USERNAME]&password=[PASSWORD]",
+		"answer": "good|nochg"
+	},
+	"ipv6": {
+		"url": "http://myonlineportal.net/updateddns?hostname=[DOMAIN]&ip6=[IP]&username=[USERNAME]&password=[PASSWORD]",
+		"answer": "good|nochg"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/mythic-beasts.com.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/mythic-beasts.com.json
new file mode 100644
index 0000000..9b2556b
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/mythic-beasts.com.json
@@ -0,0 +1,9 @@
+{
+	"name": "mythic-beasts.com",
+	"ipv4": {
+		"url": "http://dnsapi4.mythic-beasts.com/?domain=[USERNAME]&password=[PASSWORD]&command=REPLACE%20[DOMAIN]%2060%20A%20DYNAMIC_IP&origin=."
+	},
+	"ipv6": {
+		"url": "http://dnsapi6.mythic-beasts.com/?domain=[USERNAME]&password=[PASSWORD]&command=REPLACE%20[DOMAIN]%2060%20AAAA%20DYNAMIC_IP&origin=."
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/namecheap.com.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/namecheap.com.json
new file mode 100644
index 0000000..bbb0c1f
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/namecheap.com.json
@@ -0,0 +1,6 @@
+{
+	"name": "namecheap.com",
+	"ipv4": {
+		"url": "http://dynamicdns.park-your-domain.com/update?host=[USERNAME]&domain=[DOMAIN]&password=[PASSWORD]&ip=[IP]"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/nettica.com.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/nettica.com.json
new file mode 100644
index 0000000..e0768ec
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/nettica.com.json
@@ -0,0 +1,6 @@
+{
+	"name": "nettica.com",
+	"ipv4": {
+		"url": "http://www.nettica.com/Domain/Update.aspx?U=[USERNAME]&PC=[PASSWORD]&FQDN=[DOMAIN]&N=[IP]"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/no-ip.com.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/no-ip.com.json
new file mode 100644
index 0000000..e0f8ccb
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/no-ip.com.json
@@ -0,0 +1,10 @@
+{
+	"name": "no-ip.com",
+	"ipv4": {
+		"url": "update_no-ip_com.sh"
+	},
+	"ipv6": {
+		"url": "update_no-ip_com.sh"
+	}
+}
+
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/no-ip.pl.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/no-ip.pl.json
new file mode 100644
index 0000000..323a415
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/no-ip.pl.json
@@ -0,0 +1,9 @@
+{
+	"name": "no-ip.pl",
+	"ipv4": {
+		"url": "http://[USERNAME]:[PASSWORD]@update.no-ip.pl/?hostname=[DOMAIN]"
+	},
+	"ipv6": {
+		"url": "http://[USERNAME]:[PASSWORD]@update.no-ip.pl/?hostname=[DOMAIN]"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/now-dns.com.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/now-dns.com.json
new file mode 100644
index 0000000..8c4a220
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/now-dns.com.json
@@ -0,0 +1,11 @@
+{
+	"name": "now-dns.com",
+	"ipv4": {
+		"url": "https://[USERNAME]:[PASSWORD]@now-dns.com/update?hostname=[DOMAIN]",
+		"answer": "good|nochg"
+	},
+	"ipv6": {
+		"url": "https://[USERNAME]:[PASSWORD]@now-dns.com/update?hostname=[DOMAIN]",
+		"answer": "good|nochg"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/nsupdate.info.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/nsupdate.info.json
new file mode 100644
index 0000000..435e41d
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/nsupdate.info.json
@@ -0,0 +1,11 @@
+{
+	"name": "nsupdate.info",
+	"ipv4": {
+		"url": "http://[USERNAME]:[PASSWORD]@ipv4.nsupdate.info/nic/update?hostname=[DOMAIN]&myip=[IP]",
+		"answer": "good|nochg"
+	},
+	"ipv6": {
+		"url": "http://[USERNAME]:[PASSWORD]@ipv6.nsupdate.info/nic/update?hostname=[DOMAIN]&myip=[IP]",
+		"answer": "good|nochg"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/opendns.com.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/opendns.com.json
new file mode 100644
index 0000000..35d4953
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/opendns.com.json
@@ -0,0 +1,7 @@
+{
+	"name":"opendns.com",
+	"ipv4": {
+		"url": "http://[USERNAME]:[PASSWORD]@updates.opendns.com/nic/update?hostname=[DOMAIN]&myip=[IP]",
+		"answer": "good|nochg"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/oray.com.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/oray.com.json
new file mode 100644
index 0000000..3172805
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/oray.com.json
@@ -0,0 +1,6 @@
+{
+	"name": "oray.com",
+	"ipv4": {
+		"url": "http://[USERNAME]:[PASSWORD]@ddns.oray.com/ph/update?hostname=[DOMAIN]&myip=[IP]"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/ovh.com.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/ovh.com.json
new file mode 100644
index 0000000..92f2066
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/ovh.com.json
@@ -0,0 +1,7 @@
+{
+	"name": "ovh.com",
+	"ipv4": {
+		"url": "http://[USERNAME]:[PASSWORD]@www.ovh.com/nic/update?system=dyndns&hostname=[DOMAIN]&myip=[IP]",
+		"answer": "good|nochg"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/regfish.de.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/regfish.de.json
new file mode 100644
index 0000000..9b17995
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/regfish.de.json
@@ -0,0 +1,11 @@
+{
+	"name": "regfish.de",
+	"ipv4": {
+		"url": "http://dyndns.regfish.de/?fqdn=[DOMAIN]&forcehost=1&authtype=secure&token=[PASSWORD]&ipv4=[IP]",
+		"answer": "success|100|101"
+	},
+	"ipv6": {
+		"url": "http://dyndns.regfish.de/?fqdn=[DOMAIN]&forcehost=1&authtype=secure&token=[PASSWORD]&ipv6=[IP]",
+		"answer": "success|100|101"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/route53-v1.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/route53-v1.json
new file mode 100644
index 0000000..bf5d8d3
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/route53-v1.json
@@ -0,0 +1,9 @@
+{
+	"name": "route53-v1",
+	"ipv4": {
+		"url": "update_route53_v1.sh"
+	},
+	"ipv6": {
+		"url": "update_route53_v1.sh"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/schokokeks.org.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/schokokeks.org.json
new file mode 100644
index 0000000..480c069
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/schokokeks.org.json
@@ -0,0 +1,7 @@
+{
+	"name": "schokokeks.org",
+	"ipv4": {
+		"url": "http://[USERNAME]:[PASSWORD]@dyndns.schokokeks.org/nic/update?myip=[IP]",
+		"answer": "good|nochg"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/selfhost.de.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/selfhost.de.json
new file mode 100644
index 0000000..0db3895
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/selfhost.de.json
@@ -0,0 +1,7 @@
+{
+	"name": "selfhost.de",
+	"ipv4": {
+		"url": "http://carol.selfhost.de/update?username=[USERNAME]&password=[PASSWORD]&myip=[IP]&hostname=1",
+		"answer": "good|nochg|200|204"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/sitelutions.com.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/sitelutions.com.json
new file mode 100644
index 0000000..a9fec1f
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/sitelutions.com.json
@@ -0,0 +1,7 @@
+{
+	"name": "sitelutions.com",
+	"ipv4": {
+		"url": "https://dnsup.sitelutions.com/dnsup?user=[USERNAME]&pass=[PASSWORD]&id=[DOMAIN]&ip=[IP]",
+		"answer": "success"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/spdyn.de.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/spdyn.de.json
new file mode 100644
index 0000000..a9352ef
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/spdyn.de.json
@@ -0,0 +1,11 @@
+{
+	"name": "spdyn.de",
+	"ipv4": {
+		"url": "https://update.spdyn.de/nic/update?hostname=[DOMAIN]&myip=[IP]&user=[USERNAME]&pass=[PASSWORD]",
+		"answer": "good|nochg"
+	},
+	"ipv6": {
+		"url": "https://update.spdyn.de/nic/update?hostname=[DOMAIN]&myip=[IP]&user=[USERNAME]&pass=[PASSWORD]",
+		"answer": "good|nochg"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/strato.com.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/strato.com.json
new file mode 100644
index 0000000..a81c015
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/strato.com.json
@@ -0,0 +1,7 @@
+{
+	"name": "strato.com",
+	"ipv4": {
+		"url": "http://[USERNAME]:[PASSWORD]@dyndns.strato.com/nic/update?hostname=[DOMAIN]&myip=[IP]",
+		"answer": "good|nochg"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/system-ns.com.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/system-ns.com.json
new file mode 100644
index 0000000..4c4ca7f
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/system-ns.com.json
@@ -0,0 +1,8 @@
+{
+	"name": "system-ns.com",
+
+	"ipv4": {
+		"url": "http://system-ns.com/api?type=dynamic&command=set&domain=[DOMAIN]&token=[PASSWORD]&ip=[IP]",
+		"answer": "0"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/thatip.com.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/thatip.com.json
new file mode 100644
index 0000000..18e72b7
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/thatip.com.json
@@ -0,0 +1,6 @@
+{
+	"name": "thatip.com",
+	"ipv4": {
+		"url": "http://update.dnsmax.com/update/?username=[USERNAME]&password=[PASSWORD]&resellerid=2&clientname=openwrt&clientversion=8.09&protocolversion=2.0&updatehostname=[DOMAIN]&ip=[IP]"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/twodns.de.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/twodns.de.json
new file mode 100644
index 0000000..2d20e76
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/twodns.de.json
@@ -0,0 +1,6 @@
+{
+	"name": "twodns.de",
+	"ipv4": {
+		"url": "http://[USERNAME]:[PASSWORD]@update.twodns.de/update?hostname=[DOMAIN]&ip=[IP]"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/udmedia.de.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/udmedia.de.json
new file mode 100644
index 0000000..fa9ff4c
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/udmedia.de.json
@@ -0,0 +1,9 @@
+{
+	"name": "udmedia.de",
+	"ipv4": {
+		"url": "http://[USERNAME]:[PASSWORD]@www.udmedia.de/nic/update?myip=[IP]"
+	},
+	"ipv6": {
+		"url": "http://[USERNAME]:[PASSWORD]@www.udmedia.de/nic/update?myip=[IP]"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/variomedia.de.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/variomedia.de.json
new file mode 100644
index 0000000..fa86f4e
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/variomedia.de.json
@@ -0,0 +1,11 @@
+{
+	"name": "variomedia.de",
+	"ipv4": {
+		"url": "http://[USERNAME]:[PASSWORD]@dyndns.variomedia.de/nic/update?hostname=[DOMAIN]&myip=[IP]",
+		"answer": "good|nochg"
+	},
+	"ipv6": {
+		"url": "http://[USERNAME]:[PASSWORD]@dyndns.variomedia.de/nic/update?hostname=[DOMAIN]&myip=[IP]",
+		"answer": "good|nochg"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/xlhost.de.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/xlhost.de.json
new file mode 100644
index 0000000..302cdc6
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/xlhost.de.json
@@ -0,0 +1,7 @@
+{
+	"name": "xlhost.de",
+	"ipv4": {
+		"url": "http://[USERNAME]:[PASSWORD]@nsupdate.xlhost.de/nic/update?hostname=[DOMAIN]&myip=[IP]",
+		"answer": "good|nochg"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/zerigo.com.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/zerigo.com.json
new file mode 100644
index 0000000..0e07982
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/zerigo.com.json
@@ -0,0 +1,11 @@
+{
+	"name": "zerigo.com",
+	"ipv4": {
+		"url": "http://update.zerigo.com/dynamic?user=[USERNAME]&password=[PASSWORD]&host=[DOMAIN]&ip=[IP]",
+		"answer": "ok"
+	},
+	"ipv6": {
+		"url": "http://update.zerigo.com/dynamic?user=[USERNAME]&password=[PASSWORD]&host=[DOMAIN]&ip=[IP]",
+		"answer": "ok"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/zoneedit.com.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/zoneedit.com.json
new file mode 100644
index 0000000..dd3c226
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/zoneedit.com.json
@@ -0,0 +1,6 @@
+{
+	"name": "zoneedit.com",
+	"ipv4": {
+		"url": "http://[USERNAME]:[PASSWORD]@dynamic.zoneedit.com/auth/dynamic.html?host=[DOMAIN]&dnsto=[IP]"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/zzzz.io.json b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/zzzz.io.json
new file mode 100644
index 0000000..d3a9d20
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/default/zzzz.io.json
@@ -0,0 +1,11 @@
+{
+	"name": "zzzz.io",
+	"ipv4": {
+		"url": "http://zzzz.io/api/v1/update/[DOMAIN]/?token=[PASSWORD]&ip=[IP]",
+		"answer": "Updated|No change"
+	},
+	"ipv6": {
+		"url": "http://zzzz.io/api/v1/update/[DOMAIN]/?token=[PASSWORD]&type=aaaa&ip=[IP]",
+		"answer": "Updated|No change"
+	}
+}
diff --git a/external/subpack/net/ddns-scripts/files/usr/share/ddns/list b/external/subpack/net/ddns-scripts/files/usr/share/ddns/list
new file mode 100644
index 0000000..35b7aa7
--- /dev/null
+++ b/external/subpack/net/ddns-scripts/files/usr/share/ddns/list
@@ -0,0 +1,70 @@
+3322.org
+able.or.kr
+afraid.org-basicauth
+afraid.org-keyauth
+afraid.org-v2-basic
+afraid.org-v2-token
+all-inkl.com
+changeip.com
+core-networks.de
+ddnss.de
+ddo.jp
+desec.io
+dhis.org
+dnsdynamic.org
+dnsever.com
+dnsexit.com
+dnshome.de
+dnsmadeeasy.com
+dnsmax.com
+dnsomatic.com
+dnspark.com
+do.de
+domopoli.de
+dtdns.com
+duckdns.org
+duiadns.net
+dy.fi
+dyn.com
+dyndns.it
+dyndns.org
+dyndnss.net
+dynsip.org
+dynu.com
+dynv6.com
+easydns.com
+editdns.net
+goip.de
+google.com
+he.net
+inwx.de
+joker.com
+loopia.se
+moniker.com
+mydns.ip
+myip.co.ua
+myonlineportal.net
+mythic-beasts.com
+namecheap.com
+nettica.com
+no-ip.pl
+now-dns.com
+nsupdate.info
+opendns.com
+oray.com
+ovh.com
+regfish.de
+schokokeks.org
+selfhost.de
+sitelutions.com
+spdyn.de
+strato.com
+system-ns.com
+thatip.com
+twodns.de
+udmedia.de
+variomedia.de
+xlhost.de
+zerigo.com
+zoneedit.com
+zzzz.io
