ddns-scripts: make cloudflare v1 same "domain" parameter syntax
- cloudflare v1 change syntax of option domain to "host.sub@example.com" like already cloudflare v4 and godaddy to prepare logterm remove of public_suffix_list.dat from package - change Makefile to be backportable to CC15.05 and working on DD - change ddns.defaults to prepare future releases of ddns-scripts - minor fixes Signed-off-by: Christian Schoenebeck <christian.schoenebeck@gmail.com>
This commit is contained in:
parent
d13f3f2ab0
commit
2c7d476cd9
9 changed files with 414 additions and 256 deletions
|
@ -1,5 +1,5 @@
|
||||||
#
|
#
|
||||||
# Copyright (C) 2008-2016 OpenWrt.org
|
# Copyright (C) 2008-2017 OpenWrt.org
|
||||||
#
|
#
|
||||||
# This is free software, licensed under the GNU General Public License v2.
|
# This is free software, licensed under the GNU General Public License v2.
|
||||||
#
|
#
|
||||||
|
@ -12,7 +12,7 @@ PKG_NAME:=ddns-scripts
|
||||||
PKG_VERSION:=2.7.6
|
PKG_VERSION:=2.7.6
|
||||||
# Release == build
|
# Release == build
|
||||||
# increase on changes of services files or tld_names.dat
|
# increase on changes of services files or tld_names.dat
|
||||||
PKG_RELEASE:=9
|
PKG_RELEASE:=10
|
||||||
|
|
||||||
PKG_LICENSE:=GPL-2.0
|
PKG_LICENSE:=GPL-2.0
|
||||||
PKG_MAINTAINER:=Christian Schoenebeck <christian.schoenebeck@gmail.com>
|
PKG_MAINTAINER:=Christian Schoenebeck <christian.schoenebeck@gmail.com>
|
||||||
|
@ -139,8 +139,8 @@ endef
|
||||||
###### *************************************************************************
|
###### *************************************************************************
|
||||||
define Package/$(PKG_NAME)/preinst
|
define Package/$(PKG_NAME)/preinst
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# if NOT run buildroot and PKG_UPGRADE then stop service
|
# if NOT run buildroot then stop service
|
||||||
[ -z "$${IPKG_INSTROOT}" -a "$${PKG_UPGRADE}" = "1" ] && /etc/init.d/ddns stop >/dev/null 2>&1
|
[ -z "$${IPKG_INSTROOT}" ] && /etc/init.d/ddns stop >/dev/null 2>&1
|
||||||
exit 0 # suppress errors
|
exit 0 # suppress errors
|
||||||
endef
|
endef
|
||||||
define Package/$(PKG_NAME)/install
|
define Package/$(PKG_NAME)/install
|
||||||
|
@ -162,23 +162,24 @@ endef
|
||||||
define Package/$(PKG_NAME)/postinst
|
define Package/$(PKG_NAME)/postinst
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# if NOT run buildroot and PKG_UPGRADE then (re)start service if enabled
|
# if NOT run buildroot and PKG_UPGRADE then (re)start service if enabled
|
||||||
[ -z "$${IPKG_INSTROOT}" -a "$${PKG_UPGRADE}" = "1" ] \
|
[ -z "$${IPKG_INSTROOT}" -a "$${PKG_UPGRADE}" = "1" ] && {
|
||||||
&& /etc/init.d/ddns enabled \
|
[ -x /etc/uci-defaults/ddns ] && \
|
||||||
&& /etc/init.d/ddns start >/dev/null 2>&1
|
/etc/uci-defaults/ddns && \
|
||||||
|
rm -f /etc/uci-defaults/ddns >/dev/null 2>&1
|
||||||
|
/etc/init.d/ddns enabled && \
|
||||||
|
/etc/init.d/ddns start >/dev/null 2>&1
|
||||||
|
}
|
||||||
exit 0 # suppress errors
|
exit 0 # suppress errors
|
||||||
endef
|
endef
|
||||||
define Package/$(PKG_NAME)/prerm
|
define Package/$(PKG_NAME)/prerm
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# if run within buildroot exit
|
# if run within buildroot exit
|
||||||
[ -n "$${IPKG_INSTROOT}" ] && exit 0
|
[ -n "$${IPKG_INSTROOT}" ] && exit 0
|
||||||
|
|
||||||
# stop running scripts
|
# stop running scripts
|
||||||
/etc/init.d/ddns stop
|
/etc/init.d/ddns stop
|
||||||
/etc/init.d/ddns disable
|
/etc/init.d/ddns disable
|
||||||
|
|
||||||
# clear LuCI indexcache
|
# clear LuCI indexcache
|
||||||
rm -f /tmp/luci-indexcache >/dev/null 2>&1
|
rm -f /tmp/luci-indexcache >/dev/null 2>&1
|
||||||
|
|
||||||
exit 0 # suppress errors
|
exit 0 # suppress errors
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
@ -192,28 +193,34 @@ endef
|
||||||
define Package/$(PKG_NAME)_cloudflare/install
|
define Package/$(PKG_NAME)_cloudflare/install
|
||||||
$(INSTALL_DIR) $(1)/etc/uci-defaults
|
$(INSTALL_DIR) $(1)/etc/uci-defaults
|
||||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/files/ddns.defaults $(1)/etc/uci-defaults/ddns_cloudflare
|
$(INSTALL_BIN) $(PKG_BUILD_DIR)/files/ddns.defaults $(1)/etc/uci-defaults/ddns_cloudflare
|
||||||
$(INSTALL_DIR) $(1)/usr/lib/ddns
|
|
||||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/files/update_cloudflare_com_v1.sh $(1)/usr/lib/ddns
|
|
||||||
$(INSTALL_DIR) $(1)/usr/share
|
$(INSTALL_DIR) $(1)/usr/share
|
||||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/files/public_suffix_list.dat.gz $(1)/usr/share
|
$(INSTALL_DATA) $(PKG_BUILD_DIR)/files/public_suffix_list.dat.gz $(1)/usr/share
|
||||||
|
$(INSTALL_DIR) $(1)/usr/lib/ddns
|
||||||
|
$(INSTALL_BIN) $(PKG_BUILD_DIR)/files/update_cloudflare_com_v1.sh $(1)/usr/lib/ddns
|
||||||
endef
|
endef
|
||||||
define Package/$(PKG_NAME)_cloudflare/postinst
|
define Package/$(PKG_NAME)_cloudflare/postinst
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# if NOT upgrading add entries
|
# remove old services file entries
|
||||||
[ "$${PKG_UPGRADE}" = "1" ] || {
|
/bin/sed -i '/cloudflare\.com-v1/d' $${IPKG_INSTROOT}/etc/ddns/services >/dev/null 2>&1
|
||||||
printf "%s\\t%s\\n" '"cloudflare.com-v1"' '"update_cloudflare_com_v1.sh"' >> $${IPKG_INSTROOT}/etc/ddns/services
|
/bin/sed -i '/cloudflare\.com-v1/d' $${IPKG_INSTROOT}/etc/ddns/services_ipv6 >/dev/null 2>&1
|
||||||
printf "%s\\t%s\\n" '"cloudflare.com-v1"' '"update_cloudflare_com_v1.sh"' >> $${IPKG_INSTROOT}/etc/ddns/services_ipv6
|
# and create new
|
||||||
}
|
printf "%s\\t%s\\n" '"cloudflare.com-v1"' '"update_cloudflare_com_v1.sh"' >> $${IPKG_INSTROOT}/etc/ddns/services
|
||||||
|
printf "%s\\t%s\\n" '"cloudflare.com-v1"' '"update_cloudflare_com_v1.sh"' >> $${IPKG_INSTROOT}/etc/ddns/services_ipv6
|
||||||
# on real system restart service if enabled
|
# on real system restart service if enabled
|
||||||
[ -z "$${IPKG_INSTROOT}" ] \
|
[ -z "$${IPKG_INSTROOT}" ] && {
|
||||||
&& /etc/init.d/ddns enabled \
|
[ -x /etc/uci-defaults/ddns_cloudflare ] && \
|
||||||
&& /etc/init.d/ddns start >/dev/null 2>&1
|
/etc/uci-defaults/ddns_cloudflare && \
|
||||||
|
rm -f /etc/uci-defaults/ddns_cloudflare >/dev/null 2>&1
|
||||||
|
/etc/init.d/ddns enabled && \
|
||||||
|
/etc/init.d/ddns start >/dev/null 2>&1
|
||||||
|
}
|
||||||
exit 0 # suppress errors
|
exit 0 # suppress errors
|
||||||
endef
|
endef
|
||||||
define Package/$(PKG_NAME)_cloudflare/prerm
|
define Package/$(PKG_NAME)_cloudflare/prerm
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# if NOT run buildroot then stop service
|
# if NOT run buildroot then stop service
|
||||||
[ -z "$${IPKG_INSTROOT}" ] && /etc/init.d/ddns stop >/dev/null 2>&1
|
[ -z "$${IPKG_INSTROOT}" ] && /etc/init.d/ddns stop >/dev/null 2>&1
|
||||||
|
# remove services file entries
|
||||||
/bin/sed -i '/cloudflare\.com-v1/d' $${IPKG_INSTROOT}/etc/ddns/services >/dev/null 2>&1
|
/bin/sed -i '/cloudflare\.com-v1/d' $${IPKG_INSTROOT}/etc/ddns/services >/dev/null 2>&1
|
||||||
/bin/sed -i '/cloudflare\.com-v1/d' $${IPKG_INSTROOT}/etc/ddns/services_ipv6 >/dev/null 2>&1
|
/bin/sed -i '/cloudflare\.com-v1/d' $${IPKG_INSTROOT}/etc/ddns/services_ipv6 >/dev/null 2>&1
|
||||||
exit 0 # suppress errors
|
exit 0 # suppress errors
|
||||||
|
@ -234,20 +241,27 @@ define Package/$(PKG_NAME)_cloudflare.com-v4/install
|
||||||
endef
|
endef
|
||||||
define Package/$(PKG_NAME)_cloudflare.com-v4/postinst
|
define Package/$(PKG_NAME)_cloudflare.com-v4/postinst
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# if NOT upgrading add entries
|
# remove old services file entries
|
||||||
[ "$${PKG_UPGRADE}" = "1" ] || {
|
/bin/sed -i '/cloudflare\.com-v4/d' $${IPKG_INSTROOT}/etc/ddns/services >/dev/null 2>&1
|
||||||
printf "%s\\t%s\\n" '"cloudflare.com-v4"' '"update_cloudflare_com_v4.sh"' >> $${IPKG_INSTROOT}/etc/ddns/services
|
/bin/sed -i '/cloudflare\.com-v4/d' $${IPKG_INSTROOT}/etc/ddns/services_ipv6 >/dev/null 2>&1
|
||||||
printf "%s\\t%s\\n" '"cloudflare.com-v4"' '"update_cloudflare_com_v4.sh"' >> $${IPKG_INSTROOT}/etc/ddns/services_ipv6
|
# and create new
|
||||||
}
|
printf "%s\\t%s\\n" '"cloudflare.com-v4"' '"update_cloudflare_com_v4.sh"' >> $${IPKG_INSTROOT}/etc/ddns/services
|
||||||
|
printf "%s\\t%s\\n" '"cloudflare.com-v4"' '"update_cloudflare_com_v4.sh"' >> $${IPKG_INSTROOT}/etc/ddns/services_ipv6
|
||||||
# on real system restart service if enabled
|
# on real system restart service if enabled
|
||||||
[ -z "$${IPKG_INSTROOT}" ] \
|
[ -z "$${IPKG_INSTROOT}" ] && {
|
||||||
&& /etc/init.d/ddns enabled \
|
[ -x /etc/uci-defaults/ddns_cloudflare.com-v4 ] && \
|
||||||
&& /etc/init.d/ddns start >/dev/null 2>&1
|
/etc/uci-defaults/ddns_cloudflare.com-v4 && \
|
||||||
|
rm -f /etc/uci-defaults/ddns_cloudflare.com-v4 >/dev/null 2>&1
|
||||||
|
/etc/init.d/ddns enabled && \
|
||||||
|
/etc/init.d/ddns start >/dev/null 2>&1
|
||||||
|
}
|
||||||
exit 0 # suppress errors
|
exit 0 # suppress errors
|
||||||
endef
|
endef
|
||||||
define Package/$(PKG_NAME)_cloudflare.com-v4/prerm
|
define Package/$(PKG_NAME)_cloudflare.com-v4/prerm
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
# if NOT run buildroot then stop service
|
||||||
[ -z "$${IPKG_INSTROOT}" ] && /etc/init.d/ddns stop >/dev/null 2>&1
|
[ -z "$${IPKG_INSTROOT}" ] && /etc/init.d/ddns stop >/dev/null 2>&1
|
||||||
|
# remove services file entries
|
||||||
/bin/sed -i '/cloudflare\.com-v4/d' $${IPKG_INSTROOT}/etc/ddns/services >/dev/null 2>&1
|
/bin/sed -i '/cloudflare\.com-v4/d' $${IPKG_INSTROOT}/etc/ddns/services >/dev/null 2>&1
|
||||||
/bin/sed -i '/cloudflare\.com-v4/d' $${IPKG_INSTROOT}/etc/ddns/services_ipv6 >/dev/null 2>&1
|
/bin/sed -i '/cloudflare\.com-v4/d' $${IPKG_INSTROOT}/etc/ddns/services_ipv6 >/dev/null 2>&1
|
||||||
exit 0 # suppress errors
|
exit 0 # suppress errors
|
||||||
|
@ -268,20 +282,27 @@ define Package/$(PKG_NAME)_godaddy.com-v1/install
|
||||||
endef
|
endef
|
||||||
define Package/$(PKG_NAME)_godaddy.com-v1/postinst
|
define Package/$(PKG_NAME)_godaddy.com-v1/postinst
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# if NOT upgrading add entries
|
# remove old services file entries
|
||||||
[ "$${PKG_UPGRADE}" = "1" ] || {
|
/bin/sed -i '/godaddy\.com-v1/d' $${IPKG_INSTROOT}/etc/ddns/services >/dev/null 2>&1
|
||||||
printf "%s\\t%s\\n" '"godaddy.com-v1"' '"update_godaddy_com_v1.sh"' >> $${IPKG_INSTROOT}/etc/ddns/services
|
/bin/sed -i '/godaddy\.com-v1/d' $${IPKG_INSTROOT}/etc/ddns/services_ipv6 >/dev/null 2>&1
|
||||||
printf "%s\\t%s\\n" '"godaddy.com-v1"' '"update_godaddy_com_v1.sh"' >> $${IPKG_INSTROOT}/etc/ddns/services_ipv6
|
# and create new
|
||||||
}
|
printf "%s\\t%s\\n" '"godaddy.com-v1"' '"update_godaddy_com_v1.sh"' >> $${IPKG_INSTROOT}/etc/ddns/services
|
||||||
|
printf "%s\\t%s\\n" '"godaddy.com-v1"' '"update_godaddy_com_v1.sh"' >> $${IPKG_INSTROOT}/etc/ddns/services_ipv6
|
||||||
# on real system restart service if enabled
|
# on real system restart service if enabled
|
||||||
[ -z "$${IPKG_INSTROOT}" ] \
|
[ -z "$${IPKG_INSTROOT}" ] && {
|
||||||
&& /etc/init.d/ddns enabled \
|
[ -x /etc/uci-defaults/ddns_godaddy.com-v1 ] && \
|
||||||
&& /etc/init.d/ddns start >/dev/null 2>&1
|
/etc/uci-defaults/ddns_godaddy.com-v1 && \
|
||||||
|
rm -f /etc/uci-defaults/ddns_godaddy.com-v1 >/dev/null 2>&1
|
||||||
|
/etc/init.d/ddns enabled \
|
||||||
|
&& /etc/init.d/ddns start >/dev/null 2>&1
|
||||||
|
}
|
||||||
exit 0 # suppress errors
|
exit 0 # suppress errors
|
||||||
endef
|
endef
|
||||||
define Package/$(PKG_NAME)_godaddy.com-v1/prerm
|
define Package/$(PKG_NAME)_godaddy.com-v1/prerm
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
# if NOT run buildroot then stop service
|
||||||
[ -z "$${IPKG_INSTROOT}" ] && /etc/init.d/ddns stop >/dev/null 2>&1
|
[ -z "$${IPKG_INSTROOT}" ] && /etc/init.d/ddns stop >/dev/null 2>&1
|
||||||
|
# remove services file entries
|
||||||
/bin/sed -i '/godaddy\.com-v1/d' $${IPKG_INSTROOT}/etc/ddns/services >/dev/null 2>&1
|
/bin/sed -i '/godaddy\.com-v1/d' $${IPKG_INSTROOT}/etc/ddns/services >/dev/null 2>&1
|
||||||
/bin/sed -i '/godaddy\.com-v1/d' $${IPKG_INSTROOT}/etc/ddns/services_ipv6 >/dev/null 2>&1
|
/bin/sed -i '/godaddy\.com-v1/d' $${IPKG_INSTROOT}/etc/ddns/services_ipv6 >/dev/null 2>&1
|
||||||
exit 0 # suppress errors
|
exit 0 # suppress errors
|
||||||
|
@ -302,19 +323,25 @@ define Package/$(PKG_NAME)_no-ip_com/install
|
||||||
endef
|
endef
|
||||||
define Package/$(PKG_NAME)_no-ip_com/postinst
|
define Package/$(PKG_NAME)_no-ip_com/postinst
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# if NOT upgrading add entries
|
# remove old services file entries
|
||||||
[ "$${PKG_UPGRADE}" = "1" ] || {
|
/bin/sed -i '/no-ip\.com/d' $${IPKG_INSTROOT}/etc/ddns/services >/dev/null 2>&1
|
||||||
printf "%s\\t%s\\n" '"no-ip.com"' '"update_no-ip_com.sh"' >> $${IPKG_INSTROOT}/etc/ddns/services
|
# and create new
|
||||||
}
|
printf "%s\\t%s\\n" '"no-ip.com"' '"update_no-ip_com.sh"' >> $${IPKG_INSTROOT}/etc/ddns/services
|
||||||
# on real system restart service if enabled
|
# on real system restart service if enabled
|
||||||
[ -z "$${IPKG_INSTROOT}" ] \
|
[ -z "$${IPKG_INSTROOT}" ] && {
|
||||||
&& /etc/init.d/ddns enabled \
|
[ -x /etc/uci-defaults/ddns_no-ip_com ] && \
|
||||||
&& /etc/init.d/ddns start >/dev/null 2>&1
|
/etc/uci-defaults/ddns_no-ip_com && \
|
||||||
|
rm -f /etc/uci-defaults/ddns_no-ip_com >/dev/null 2>&1
|
||||||
|
/etc/init.d/ddns enabled && \
|
||||||
|
/etc/init.d/ddns start >/dev/null 2>&1
|
||||||
|
}
|
||||||
exit 0 # suppress errors
|
exit 0 # suppress errors
|
||||||
endef
|
endef
|
||||||
define Package/$(PKG_NAME)_no-ip_com/prerm
|
define Package/$(PKG_NAME)_no-ip_com/prerm
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
# if NOT run buildroot then stop service
|
||||||
[ -z "$${IPKG_INSTROOT}" ] && /etc/init.d/ddns stop >/dev/null 2>&1
|
[ -z "$${IPKG_INSTROOT}" ] && /etc/init.d/ddns stop >/dev/null 2>&1
|
||||||
|
# remove services file entries
|
||||||
/bin/sed -i '/no-ip\.com/d' $${IPKG_INSTROOT}/etc/ddns/services >/dev/null 2>&1
|
/bin/sed -i '/no-ip\.com/d' $${IPKG_INSTROOT}/etc/ddns/services >/dev/null 2>&1
|
||||||
exit 0 # suppress errors
|
exit 0 # suppress errors
|
||||||
endef
|
endef
|
||||||
|
@ -334,20 +361,27 @@ define Package/$(PKG_NAME)_nsupdate/install
|
||||||
endef
|
endef
|
||||||
define Package/$(PKG_NAME)_nsupdate/postinst
|
define Package/$(PKG_NAME)_nsupdate/postinst
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# if NOT upgrading add entries
|
# remove old services file entries
|
||||||
[ "$${PKG_UPGRADE}" = "1" ] || {
|
/bin/sed -i '/bind-nsupdate/d' $${IPKG_INSTROOT}/etc/ddns/services >/dev/null 2>&1
|
||||||
printf "%s\\t%s\\n" '"bind-nsupdate"' '"update_nsupdate.sh"' >> $${IPKG_INSTROOT}/etc/ddns/services
|
/bin/sed -i '/bind-nsupdate/d' $${IPKG_INSTROOT}/etc/ddns/services_ipv6 >/dev/null 2>&1
|
||||||
printf "%s\\t%s\\n" '"bind-nsupdate"' '"update_nsupdate.sh"' >> $${IPKG_INSTROOT}/etc/ddns/services_ipv6
|
# and create new
|
||||||
}
|
printf "%s\\t%s\\n" '"bind-nsupdate"' '"update_nsupdate.sh"' >> $${IPKG_INSTROOT}/etc/ddns/services
|
||||||
|
printf "%s\\t%s\\n" '"bind-nsupdate"' '"update_nsupdate.sh"' >> $${IPKG_INSTROOT}/etc/ddns/services_ipv6
|
||||||
# on real system restart service if enabled
|
# on real system restart service if enabled
|
||||||
[ -z "$${IPKG_INSTROOT}" ] \
|
[ -z "$${IPKG_INSTROOT}" ] && {
|
||||||
&& /etc/init.d/ddns enabled \
|
[ -x /etc/uci-defaults/ddns_nsupdate ] && \
|
||||||
&& /etc/init.d/ddns start >/dev/null 2>&1
|
/etc/uci-defaults/ddns_nsupdate && \
|
||||||
|
rm -f /etc/uci-defaults/ddns_nsupdate >/dev/null 2>&1
|
||||||
|
/etc/init.d/ddns enabled && \
|
||||||
|
/etc/init.d/ddns start >/dev/null 2>&1
|
||||||
|
}
|
||||||
exit 0 # suppress errors
|
exit 0 # suppress errors
|
||||||
endef
|
endef
|
||||||
define Package/$(PKG_NAME)_nsupdate/prerm
|
define Package/$(PKG_NAME)_nsupdate/prerm
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
# if NOT run buildroot then stop service
|
||||||
[ -z "$${IPKG_INSTROOT}" ] && /etc/init.d/ddns stop >/dev/null 2>&1
|
[ -z "$${IPKG_INSTROOT}" ] && /etc/init.d/ddns stop >/dev/null 2>&1
|
||||||
|
# remove services file entries
|
||||||
/bin/sed -i '/bind-nsupdate/d' $${IPKG_INSTROOT}/etc/ddns/services >/dev/null 2>&1
|
/bin/sed -i '/bind-nsupdate/d' $${IPKG_INSTROOT}/etc/ddns/services >/dev/null 2>&1
|
||||||
/bin/sed -i '/bind-nsupdate/d' $${IPKG_INSTROOT}/etc/ddns/services_ipv6 >/dev/null 2>&1
|
/bin/sed -i '/bind-nsupdate/d' $${IPKG_INSTROOT}/etc/ddns/services_ipv6 >/dev/null 2>&1
|
||||||
exit 0 # suppress errors
|
exit 0 # suppress errors
|
||||||
|
|
|
@ -1,67 +1,263 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
|
g_pslfile=/usr/share/public_suffix_list.dat.gz
|
||||||
|
[ -f "$g_pslfile" ] || g_pslfile="$(dirname $0)/public_suffix_list.dat.gz"
|
||||||
|
|
||||||
|
g_pslerr=0
|
||||||
|
g_cfgfile="ddns"
|
||||||
|
|
||||||
|
# modify "cloudflare.com-v1" domain to new syntax
|
||||||
|
# returns "host[.subdom]@domain.TLD" of given FQDN #############################
|
||||||
|
mod_cloudflare_v1_domain() {
|
||||||
|
# $1 entry to validate/split
|
||||||
|
[ -f "$g_pslfile" ] || return 1
|
||||||
|
|
||||||
|
[ $# -ne 1 -o -z "$1" ] && \
|
||||||
|
{ printf "%s\\n" "mod_cloudflare_v1_domain() - Invalid number of parameters" >&2; return 1; }
|
||||||
|
|
||||||
|
local mcd_fqdn=$1
|
||||||
|
local mcd_fsub=""
|
||||||
|
local mcd_fdom=""
|
||||||
|
local mcd_ctld=""
|
||||||
|
local mcd_ftld=""
|
||||||
|
|
||||||
|
# check if already new syntax, "@" inside string
|
||||||
|
if [ $( printf "%s" "$mcd_fqdn" | grep -cF "@" 2>/dev/null ) -gt 0 ]; then
|
||||||
|
# already done
|
||||||
|
printf "%s" "$mcd_fqdn"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# we need to do in one line because otherwise sh doesn't work correctly
|
||||||
|
# to lower | replace "." to " " | awk invert word order
|
||||||
|
set -- $(printf %s "$mcd_fqdn" | tr [A-Z] [a-z] | tr "." " " \
|
||||||
|
| awk '{do printf "%s"(NF>1?OFS:ORS),$NF;while (--NF)}' )
|
||||||
|
|
||||||
|
while [ -n "${1:-}" ] ; do # as long we have parameters
|
||||||
|
if [ -z "$mcd_ctld" ]; then # first loop
|
||||||
|
mcd_ctld="$1" # CURRENT TLD to look at
|
||||||
|
shift
|
||||||
|
else
|
||||||
|
mcd_ctld="$1.$mcd_ctld" # Next TLD to look at
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
# check if TLD exact match in public_suffix_name.dat, save TLD
|
||||||
|
zcat $g_pslfile | grep -E "^$mcd_ctld$" >/dev/null 2>&1 && {
|
||||||
|
mcd_ftld="$mcd_ctld" # save found
|
||||||
|
mcd_fdom="${1:-}" # save domain next step might be invalid
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
# check if match any "*" in public_suffix_name.dat,
|
||||||
|
zcat $g_pslfile | grep -E "^\*.$mcd_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 $g_pslfile | grep -E "^!$1.$mcd_ctld$" >/dev/null 2>&1 ; then
|
||||||
|
mcd_ftld="$mcd_ctld" # Yes
|
||||||
|
else
|
||||||
|
mcd_ftld="$1.$mcd_ctld"
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
mcd_fdom="$1"; shift
|
||||||
|
}
|
||||||
|
[ -n "$mcd_ftld" ] && break # we have something valid, break
|
||||||
|
done
|
||||||
|
|
||||||
|
# the leftover parameters are the HOST/SUBDOMAIN
|
||||||
|
while [ -n "${1:-}" ]; do
|
||||||
|
mcd_fsub="${1}${mcd_fsub:+.$mcd_fsub}" # remember we need to invert
|
||||||
|
shift # and insert dot if mcd_fsub not empty
|
||||||
|
done
|
||||||
|
|
||||||
|
# now validate found data
|
||||||
|
[ -z "$mcd_ftld" ] && { printf "%s\\n" "mod_cloudflare_v1_domain() - no TLD not found in '$mcd_fqdn'" >&1; return 1; }
|
||||||
|
[ -z "$mcd_fdom" ] && { printf "%s\\n" "mod_cloudflare_v1_domain() - no registrable Domain not found in '$mcd_fqdn'" >&1; return 1; }
|
||||||
|
|
||||||
|
# return data
|
||||||
|
printf "%s" "${mcd_fsub:+${mcd_fsub}@}${mcd_fdom}.${mcd_ftld}"
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# modify timer settings from interval and unit to dhms format
|
||||||
|
timer2dhms() {
|
||||||
|
# $1 Number and
|
||||||
|
# $2 Unit of time interval
|
||||||
|
local t=0
|
||||||
|
case $2 in
|
||||||
|
days) t=$(( $1 * 86400 ));;
|
||||||
|
hours) t=$(( $1 * 3600 ));;
|
||||||
|
minutes) t=$(( $1 * 60 ));;
|
||||||
|
*) t=$1;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
local d=$(( $t / 86400 ))
|
||||||
|
local h=$(( $t % 86400 / 3600 ))
|
||||||
|
local m=$(( $t % 3600 / 60 ))
|
||||||
|
local s=$(( $t % 60 ))
|
||||||
|
if [ $d -gt 0 ]; then printf "%dd %02dh %02dm %02ds" "$d" "$h" "$m" "$s"
|
||||||
|
elif [ $h -gt 0 ]; then printf "%dh %02dm %02ds" "$h" "$m" "$s"
|
||||||
|
elif [ $m -gt 0 ]; then printf "%dm %02ds" "$m" "$s"
|
||||||
|
else printf "%ds" "$s"; fi
|
||||||
|
|
||||||
|
unset d h m s t
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
# using function to not confuse function calls with existing ones inside /lib/functions.sh
|
# using function to not confuse function calls with existing ones inside /lib/functions.sh
|
||||||
update_ddns_config() {
|
update_config() {
|
||||||
udc_uci="$(which uci) -q" # ignore errors
|
uc_uci="$(which uci) -q" # ignore errors
|
||||||
udc_pkg="ddns"
|
uc_cfg=""
|
||||||
udc_cfg=""
|
uc_name=""
|
||||||
udc_name=""
|
uc_var=""
|
||||||
udc_var=""
|
uc_val=""
|
||||||
udc_val=""
|
|
||||||
package() { return 0; }
|
package() { return 0; }
|
||||||
config () {
|
config () {
|
||||||
udc_cfg="$1"
|
uc_cfg="$1"
|
||||||
udc_name="$2"
|
uc_name="$2"
|
||||||
|
|
||||||
# Type = ddns Name = global
|
# Type = ddns Name = global
|
||||||
if [ "$udc_cfg" = "$udc_pkg" -a "$udc_name" = "global" ]; then
|
if [ "$uc_cfg" = "$g_cfgfile" -a "$uc_name" = "global" ]; then
|
||||||
option() { return 0; }
|
option() {
|
||||||
# rename options
|
uc_var="$1"; shift
|
||||||
$udc_uci rename $udc_pkg.$udc_name.allow_local_ip="upd_privateip"
|
uc_val="$*"
|
||||||
$udc_uci rename $udc_pkg.$udc_name.date_format="ddns_dateformat"
|
case "$uc_var" in
|
||||||
$udc_uci rename $udc_pkg.$udc_name.log_dir="ddns_logdir"
|
allow_local_ip) $uc_uci rename $g_cfgfile.$uc_name.$uc_var="upd_privateip";;
|
||||||
$udc_uci rename $udc_pkg.$udc_name.log_lines="ddns_loglines"
|
date_format) $uc_uci rename $g_cfgfile.$uc_name.$uc_var="ddns_dateformat";;
|
||||||
$udc_uci rename $udc_pkg.$udc_name.run_dir="ddns_rundir"
|
log_lines) $uc_uci rename $g_cfgfile.$uc_name.$uc_var="ddns_loglines";;
|
||||||
|
log_dir) $uc_uci rename $g_cfgfile.$uc_name.$uc_var="ddns_logdir";;
|
||||||
|
run_dir) $uc_uci rename $g_cfgfile.$uc_name.$uc_var="ddns_rundir";;
|
||||||
|
# leave all other options currently unchanged
|
||||||
|
*) ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
# Type = service Name = ???
|
# Type = service Name = ???
|
||||||
elif [ "$udc_cfg" = "service" ]; then
|
elif [ "$uc_cfg" = "service" ]; then
|
||||||
option() {
|
option() {
|
||||||
udc_var="$1"; shift
|
uc_var="$1"; shift
|
||||||
udc_val="$*"
|
uc_val="$*"
|
||||||
# fix some option service_name values
|
case "$uc_var" in
|
||||||
case "$udc_var" in
|
# fix some option service_name values
|
||||||
service_name)
|
# and some settings for specific providers
|
||||||
case "$udc_val" in
|
service_name|upd_provider)
|
||||||
|
case "$uc_val" in
|
||||||
freedns\.afraid\.org|afraid\.org)
|
freedns\.afraid\.org|afraid\.org)
|
||||||
$udc_uci set $udc_pkg.$udc_name.$udc_var="afraid.org-keyauth";;
|
$uc_uci set $g_cfgfile.$uc_name.$uc_var="afraid.org-keyauth";;
|
||||||
Bind-nsupdate)
|
Bind-nsupdate)
|
||||||
$udc_uci set $udc_pkg.$udc_name.$udc_var="bind-nsupdate";;
|
$uc_uci set $g_cfgfile.$uc_name.$uc_var="bind-nsupdate";;
|
||||||
CloudFlare|cloudflare\.com)
|
CloudFlare|cloudflare\.com|cloudflare\.com-v1)
|
||||||
$udc_uci set $udc_pkg.$udc_name.$udc_var="cloudflare.com-v1";;
|
# verify if lookup_host is set
|
||||||
|
$uc_uci get $g_cfgfile.$uc_name.lookup_host >/dev/null 2>&1 || {
|
||||||
|
ucv_domain=$($uc_uci get $g_cfgfile.$uc_name.domain 2>/dev/null)
|
||||||
|
$uc_uci set $g_cfgfile.$uc_name.lookup_host="$ucv_domain"
|
||||||
|
}
|
||||||
|
if [ -f "$g_pslfile" ]; then
|
||||||
|
# change value of domain/upd_object to new syntax
|
||||||
|
# there is no sort order inside uci data so we need multiple checks
|
||||||
|
ucv_domain=$($uc_uci get $g_cfgfile.$uc_name.domain 2>/dev/null)
|
||||||
|
ucv_object=$($uc_uci get $g_cfgfile.$uc_name.upd_object 2>/dev/null)
|
||||||
|
# still old option domain
|
||||||
|
if [ -n "$ucv_domain" ]; then
|
||||||
|
ucv_new=$(mod_cloudflare_v1_domain "$ucv_domain") || g_pslerr=1
|
||||||
|
# no error save data save data
|
||||||
|
[ $g_pslerr -eq 0 ] && \
|
||||||
|
$uc_uci set $g_cfgfile.$uc_name.domain="$ucv_new"
|
||||||
|
fi
|
||||||
|
# already new option upd_object
|
||||||
|
if [ -n "$ucv_object" ]; then
|
||||||
|
ucv_new=$(mod_cloudflare_v1_domain "$ucv_object") || g_pslerr=1
|
||||||
|
# no error save data save data
|
||||||
|
[ $g_pslerr -eq 0 ] && \
|
||||||
|
$uc_uci set $g_cfgfile.$uc_name.upd_object="$ucv_new"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
unset ucv_domain ucv_object ucv_new
|
||||||
|
# set new option value
|
||||||
|
$uc_uci set $g_cfgfile.$uc_name.$uc_var="cloudflare.com-v1"
|
||||||
|
;;
|
||||||
dyndns\.org|dyndns\.com)
|
dyndns\.org|dyndns\.com)
|
||||||
$udc_uci set $udc_pkg.$udc_name.$udc_var="dyn.com";;
|
$uc_uci set $g_cfgfile.$uc_name.$uc_var="dyn.com";;
|
||||||
free\.editdns\.net)
|
free\.editdns\.net)
|
||||||
$udc_uci set $udc_pkg.$udc_name.$udc_var="editdns.net";;
|
$uc_uci set $g_cfgfile.$uc_name.$uc_var="editdns.net";;
|
||||||
domains\.google\.com)
|
domains\.google\.com)
|
||||||
$udc_uci set $udc_pkg.$udc_name.$udc_var="google.com";;
|
$uc_uci set $g_cfgfile.$uc_name.$uc_var="google.com";;
|
||||||
loopia\.com)
|
loopia\.com)
|
||||||
$udc_uci set $udc_pkg.$udc_name.$udc_var="loopia.se";;
|
$uc_uci set $g_cfgfile.$uc_name.$uc_var="loopia.se";;
|
||||||
NoIP\.com|No-IP\.com)
|
NoIP\.com|No-IP\.com)
|
||||||
$udc_uci set $udc_pkg.$udc_name.$udc_var="no-ip.com";;
|
$uc_uci set $g_cfgfile.$uc_name.$uc_var="no-ip.com";;
|
||||||
spdns\.de)
|
spdns\.de)
|
||||||
$udc_uci set $udc_pkg.$udc_name.$udc_var="spdyn.de";;
|
$uc_uci set $g_cfgfile.$uc_name.$uc_var="spdyn.de";;
|
||||||
strato\.de)
|
strato\.de)
|
||||||
$udc_uci set $udc_pkg.$udc_name.$udc_var="strato.com";;
|
$uc_uci set $g_cfgfile.$uc_name.$uc_var="strato.com";;
|
||||||
*)
|
*)
|
||||||
# all others leave unchanged
|
# all others leave unchanged
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
# rename option service_name to option upd_provider
|
# rename option service_name to option upd_provider
|
||||||
# $udc_uci rename $udc_pkg.$udc_name.$udc_var="upd_provider"
|
# $uc_uci rename $g_cfgfile.$uc_name.$uc_var="upd_provider"
|
||||||
;;
|
;;
|
||||||
*)
|
domain|upd_object)
|
||||||
# leave all other options currently unchanged
|
# verify if lookup_host is set
|
||||||
|
$uc_uci get $g_cfgfile.$uc_name.lookup_host >/dev/null 2>&1 || \
|
||||||
|
$uc_uci set $g_cfgfile.$uc_name.lookup_host="$uc_val"
|
||||||
|
if [ -f "$g_pslfile" ]; then
|
||||||
|
# if service_name/upd_provider cloudflare_v1 then change domain/upd_object to new syntax
|
||||||
|
# there is no sort order inside uci data so we need multiple checks
|
||||||
|
uco_provider=$($uc_uci get $g_cfgfile.$uc_name.upd_provider 2>/dev/null) || \
|
||||||
|
uco_provider=$($uc_uci get $g_cfgfile.$uc_name.service_name 2>/dev/null)
|
||||||
|
if [ "$uco_provider" = "CloudFlare" \
|
||||||
|
-o "$uco_provider" = "cloudflare.com" \
|
||||||
|
-o "$uco_provider" = "cloudflare.com-v1" ]; then
|
||||||
|
ucv_new=$(mod_cloudflare_v1_domain "$uc_val") || g_pslerr=1
|
||||||
|
# no error save data save data
|
||||||
|
[ $g_pslerr -eq 0 ] && \
|
||||||
|
$uc_uci set $g_cfgfile.$uc_name.$uc_var="$ucv_new"
|
||||||
|
unset ucv_new
|
||||||
|
fi
|
||||||
|
unset uco_provider
|
||||||
|
fi
|
||||||
|
# rename option domain to option upd_object
|
||||||
|
# $uc_uci rename $g_cfgfile.$uc_name.$uc_var="upd_object"
|
||||||
;;
|
;;
|
||||||
|
# dns_server)
|
||||||
|
# # if bind-nsupdate takeover old "dns_server" value as new "upd_nsupd_server" value
|
||||||
|
# uco_provider=$($uc_uci get $g_cfgfile.$uc_name.upd_provider 2>/dev/null) || \
|
||||||
|
# uco_provider=$($uc_uci get $g_cfgfile.$uc_name.service_name 2>/dev/null)
|
||||||
|
# [ "$uco_provider" = "Bind-nsupdate" -o \
|
||||||
|
# "$uco_provider" = "bind-nsupdate" ] && \
|
||||||
|
# $uc_uci set $g_cfgfile.$uc_name.upd_nsupd_server="$uc_val"
|
||||||
|
# # rename option dns_server to new option global_dnssvr
|
||||||
|
# $udc_uci rename $g_cfgfile.$uc_name.$uc_var="global_dnssvr"
|
||||||
|
# ;;
|
||||||
|
# bind_network)
|
||||||
|
# $udc_uci set $g_cfgfile.$uc_name.upd_url_bindnet="$uc_val"
|
||||||
|
# $udc_uci rename $g_cfgfile.$uc_name.$uc_var="lip_url_bindnet"
|
||||||
|
# ;;
|
||||||
|
# proxy)
|
||||||
|
# # proxy value must include protocoll
|
||||||
|
# $udc_uci set $g_cfgfile.$uc_name.$uc_var="http://$uc_val"
|
||||||
|
# $udc_uci rename $g_cfgfile.$uc_name.$uc_var="upd_url_proxy"
|
||||||
|
# ;;
|
||||||
|
# use_ipv6)
|
||||||
|
# $udc_uci set $g_cfgfile.$uc_name.$uc_var="$(( 4 + ( 2 * $uc_val ) ))"
|
||||||
|
# $udc_uci rename $g_cfgfile.$uc_name.$uc_var="upd_ipversion"
|
||||||
|
# TODO update_url)
|
||||||
|
# TODO update_script)
|
||||||
|
# other renames
|
||||||
|
# TODO lookup_host) -> rip_host
|
||||||
|
# enabled) $udc_uci rename $g_cfgfile.$uc_name.$uc_var="upd_enabled";;
|
||||||
|
# force_dnstcp) $udc_uci rename $g_cfgfile.$uc_name.$uc_var="rip_host_dnstcp";;
|
||||||
|
# is_glue) $udc_uci rename $g_cfgfile.$uc_name.$uc_var="rip_host_isglue";;
|
||||||
|
# ip_interface) $udc_uci rename $g_cfgfile.$uc_name.$uc_var="lip_iface";;
|
||||||
|
# ip_network) $udc_uci rename $g_cfgfile.$uc_name.$uc_var="lip_net";;
|
||||||
|
# use_https) $udc_uci rename $g_cfgfile.$uc_name.$uc_var="upd_url_secure";;
|
||||||
|
# cacert) $udc_uci rename $g_cfgfile.$uc_name.$uc_var="upd_url_cacert";;
|
||||||
|
# username) $udc_uci rename $g_cfgfile.$uc_name.$uc_var="upd_username";;
|
||||||
|
# password) $udc_uci rename $g_cfgfile.$uc_name.$uc_var="upd_password";;
|
||||||
|
# param_opt) $udc_uci rename $g_cfgfile.$uc_name.$uc_var="upd_paramopt";;
|
||||||
|
# param_enc) $udc_uci rename $g_cfgfile.$uc_name.$uc_var="upd_paramenc";;
|
||||||
|
|
||||||
|
# leave all other options currently unchanged
|
||||||
|
*) ;;
|
||||||
esac
|
esac
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
@ -73,27 +269,41 @@ update_ddns_config() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# read package config file
|
# read config file
|
||||||
udc_data=$($udc_uci -S -n export "$udc_pkg")
|
uc_data=$($uc_uci -S -n export "$g_cfgfile")
|
||||||
udc_ret="$?"
|
uc_ret="$?"
|
||||||
# No error and udc_data then execute (eval)
|
# Error then create config file
|
||||||
|
[ $uc_ret -ne 0 ] && {
|
||||||
|
touch /etc/config/$uc_cfgfile
|
||||||
|
chmod 644 /etc/config/$uc_cfgfile
|
||||||
|
}
|
||||||
|
# No error and uc_data then execute (eval)
|
||||||
# this will call functions defined above
|
# this will call functions defined above
|
||||||
[ "$udc_ret" -eq 0 -a -n "$udc_data" ] && eval "$udc_data"
|
[ $uc_ret -eq 0 -a -n "$uc_data" ] && eval "$uc_data"
|
||||||
|
|
||||||
# add config ddns "global" (ignore error if exists)
|
# add config ddns "global" (ignore error if exists)
|
||||||
$udc_uci set ddns.global="$udc_pkg"
|
$uc_uci set ddns.global="$g_cfgfile"
|
||||||
|
|
||||||
# write changes to config file
|
# write changes to config file
|
||||||
$udc_uci commit "$udc_pkg"
|
$uc_uci commit "$g_cfgfile"
|
||||||
|
|
||||||
unset udc_uci udc_pkg udc_cfg udc_name udc_var udc_val udc_ret udc_data
|
unset uc_uci uc_cfg uc_name uc_var uc_val uc_ret uc_data
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
# do existing config update
|
# clear LuCI indexcache
|
||||||
update_ddns_config
|
|
||||||
|
|
||||||
# clear Ludc_uci indexcache
|
|
||||||
rm -f /tmp/luci-indexcache >/dev/null 2>&1
|
rm -f /tmp/luci-indexcache >/dev/null 2>&1
|
||||||
|
|
||||||
|
# do config update
|
||||||
|
update_config
|
||||||
|
|
||||||
|
#cleanup
|
||||||
|
[ $g_pslerr -ne 0 ] && {
|
||||||
|
unset g_pslfile g_pslerr g_cfgfile
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
[ -f "$g_pslfile" ] && rm -f "$g_pslfile"
|
||||||
|
unset g_pslfile g_pslerr g_cfgfile
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
# (Loosely) based on the script on the one posted by exobyte in the forums here:
|
# (Loosely) based on the script on the one posted by exobyte in the forums here:
|
||||||
# http://forum.openwrt.org/viewtopic.php?id=14040
|
# http://forum.openwrt.org/viewtopic.php?id=14040
|
||||||
# extended and partial rewritten
|
# extended and partial rewritten
|
||||||
#.2014-2016 Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
|
#.2014-2017 Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
|
||||||
#
|
#
|
||||||
# function timeout
|
# function timeout
|
||||||
# copied from http://www.ict.griffith.edu.au/anthony/software/timeout.sh
|
# copied from http://www.ict.griffith.edu.au/anthony/software/timeout.sh
|
||||||
|
@ -89,22 +89,22 @@ UCLIENT_FETCH_SSL=$(find /lib /usr/lib -name libustream-ssl.so* 2>/dev/null)
|
||||||
|
|
||||||
# Global configuration settings
|
# Global configuration settings
|
||||||
# allow NON-public IP's
|
# allow NON-public IP's
|
||||||
upd_privateip=$(uci -q get ddns.global.allow_local_ip) || upd_privateip=0
|
upd_privateip=$(uci -q get ddns.global.upd_privateip) || upd_privateip=0
|
||||||
|
|
||||||
# directory to store run information to.
|
# directory to store run information to.
|
||||||
ddns_rundir=$(uci -q get ddns.global.run_dir) || ddns_rundir="/var/run/ddns"
|
ddns_rundir=$(uci -q get ddns.global.ddns_rundir) || ddns_rundir="/var/run/ddns"
|
||||||
[ -d $ddns_rundir ] || mkdir -p -m755 $ddns_rundir
|
[ -d $ddns_rundir ] || mkdir -p -m755 $ddns_rundir
|
||||||
|
|
||||||
# directory to store log files
|
# directory to store log files
|
||||||
ddns_logdir=$(uci -q get ddns.global.log_dir) || ddns_logdir="/var/log/ddns"
|
ddns_logdir=$(uci -q get ddns.global.ddns_logdir) || ddns_logdir="/var/log/ddns"
|
||||||
[ -d $ddns_logdir ] || mkdir -p -m755 $ddns_logdir
|
[ -d $ddns_logdir ] || mkdir -p -m755 $ddns_logdir
|
||||||
|
|
||||||
# number of lines to before rotate logfile
|
# number of lines to before rotate logfile
|
||||||
ddns_loglines=$(uci -q get ddns.global.log_lines) || ddns_loglines=250
|
ddns_loglines=$(uci -q get ddns.global.ddns_loglines) || ddns_loglines=250
|
||||||
ddns_loglines=$((ddns_loglines + 1)) # correct sed handling
|
ddns_loglines=$((ddns_loglines + 1)) # correct sed handling
|
||||||
|
|
||||||
# format to show date information in log and luci-app-ddns default ISO 8601 format
|
# format to show date information in log and luci-app-ddns default ISO 8601 format
|
||||||
ddns_dateformat=$(uci -q get ddns.global.date_format) || ddns_dateformat="%F %R"
|
ddns_dateformat=$(uci -q get ddns.global.ddns_dateformat) || ddns_dateformat="%F %R"
|
||||||
DATE_PROG="date +'$ddns_dateformat'"
|
DATE_PROG="date +'$ddns_dateformat'"
|
||||||
|
|
||||||
# USE_CURL if GNU Wget and cURL installed normally Wget is used by do_transfer()
|
# USE_CURL if GNU Wget and cURL installed normally Wget is used by do_transfer()
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
# /usr/lib/ddns/dynamic_dns_lucihelper.sh
|
# /usr/lib/ddns/dynamic_dns_lucihelper.sh
|
||||||
#
|
#
|
||||||
#.Distributed under the terms of the GNU General Public License (GPL) version 2.0
|
#.Distributed under the terms of the GNU General Public License (GPL) version 2.0
|
||||||
#.2014-2016 Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
|
#.2014-2017 Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
|
||||||
# This script is used by luci-app-ddns
|
# This script is used by luci-app-ddns
|
||||||
#
|
#
|
||||||
# variables in small chars are read from /etc/config/ddns as parameter given here
|
# variables in small chars are read from /etc/config/ddns as parameter given here
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
# (Loosely) based on the script on the one posted by exobyte in the forums here:
|
# (Loosely) based on the script on the one posted by exobyte in the forums here:
|
||||||
# http://forum.openwrt.org/viewtopic.php?id=14040
|
# http://forum.openwrt.org/viewtopic.php?id=14040
|
||||||
# extended and partial rewritten
|
# extended and partial rewritten
|
||||||
#.2014-2016 Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
|
#.2014-2017 Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
|
||||||
#
|
#
|
||||||
# variables in small chars are read from /etc/config/ddns
|
# 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 are defined inside these scripts as global vars
|
||||||
|
@ -299,7 +299,7 @@ get_uptime CURR_TIME
|
||||||
if [ $LAST_TIME -eq 0 ]; then
|
if [ $LAST_TIME -eq 0 ]; then
|
||||||
write_log 7 "last update: never"
|
write_log 7 "last update: never"
|
||||||
else
|
else
|
||||||
EPOCH_TIME=$(( $(date +%s) - CURR_TIME + LAST_TIME ))
|
EPOCH_TIME=$(( $(date +%s) - $CURR_TIME + $LAST_TIME ))
|
||||||
EPOCH_TIME="date -d @$EPOCH_TIME +'$ddns_dateformat'"
|
EPOCH_TIME="date -d @$EPOCH_TIME +'$ddns_dateformat'"
|
||||||
write_log 7 "last update: $(eval $EPOCH_TIME)"
|
write_log 7 "last update: $(eval $EPOCH_TIME)"
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -5928,142 +5928,13 @@ gov.rs
|
||||||
in.rs
|
in.rs
|
||||||
org.rs
|
org.rs
|
||||||
|
|
||||||
// ru : http://www.cctld.ru/ru/docs/aktiv_8.php
|
// ru : https://cctld.ru/en/domains/domens_ru/reserved/
|
||||||
// Industry domains
|
|
||||||
ru
|
ru
|
||||||
ac.ru
|
ac.ru
|
||||||
com.ru
|
|
||||||
edu.ru
|
edu.ru
|
||||||
int.ru
|
|
||||||
net.ru
|
|
||||||
org.ru
|
|
||||||
pp.ru
|
|
||||||
// Geographical domains
|
|
||||||
adygeya.ru
|
|
||||||
altai.ru
|
|
||||||
amur.ru
|
|
||||||
arkhangelsk.ru
|
|
||||||
astrakhan.ru
|
|
||||||
bashkiria.ru
|
|
||||||
belgorod.ru
|
|
||||||
bir.ru
|
|
||||||
bryansk.ru
|
|
||||||
buryatia.ru
|
|
||||||
cbg.ru
|
|
||||||
chel.ru
|
|
||||||
chelyabinsk.ru
|
|
||||||
chita.ru
|
|
||||||
chukotka.ru
|
|
||||||
chuvashia.ru
|
|
||||||
dagestan.ru
|
|
||||||
dudinka.ru
|
|
||||||
e-burg.ru
|
|
||||||
grozny.ru
|
|
||||||
irkutsk.ru
|
|
||||||
ivanovo.ru
|
|
||||||
izhevsk.ru
|
|
||||||
jar.ru
|
|
||||||
joshkar-ola.ru
|
|
||||||
kalmykia.ru
|
|
||||||
kaluga.ru
|
|
||||||
kamchatka.ru
|
|
||||||
karelia.ru
|
|
||||||
kazan.ru
|
|
||||||
kchr.ru
|
|
||||||
kemerovo.ru
|
|
||||||
khabarovsk.ru
|
|
||||||
khakassia.ru
|
|
||||||
khv.ru
|
|
||||||
kirov.ru
|
|
||||||
koenig.ru
|
|
||||||
komi.ru
|
|
||||||
kostroma.ru
|
|
||||||
krasnoyarsk.ru
|
|
||||||
kuban.ru
|
|
||||||
kurgan.ru
|
|
||||||
kursk.ru
|
|
||||||
lipetsk.ru
|
|
||||||
magadan.ru
|
|
||||||
mari.ru
|
|
||||||
mari-el.ru
|
|
||||||
marine.ru
|
|
||||||
mordovia.ru
|
|
||||||
// mosreg.ru Bug 1090800 - removed at request of Aleksey Konstantinov <konstantinovav@mosreg.ru>
|
|
||||||
msk.ru
|
|
||||||
murmansk.ru
|
|
||||||
nalchik.ru
|
|
||||||
nnov.ru
|
|
||||||
nov.ru
|
|
||||||
novosibirsk.ru
|
|
||||||
nsk.ru
|
|
||||||
omsk.ru
|
|
||||||
orenburg.ru
|
|
||||||
oryol.ru
|
|
||||||
palana.ru
|
|
||||||
penza.ru
|
|
||||||
perm.ru
|
|
||||||
ptz.ru
|
|
||||||
rnd.ru
|
|
||||||
ryazan.ru
|
|
||||||
sakhalin.ru
|
|
||||||
samara.ru
|
|
||||||
saratov.ru
|
|
||||||
simbirsk.ru
|
|
||||||
smolensk.ru
|
|
||||||
spb.ru
|
|
||||||
stavropol.ru
|
|
||||||
stv.ru
|
|
||||||
surgut.ru
|
|
||||||
tambov.ru
|
|
||||||
tatarstan.ru
|
|
||||||
tom.ru
|
|
||||||
tomsk.ru
|
|
||||||
tsaritsyn.ru
|
|
||||||
tsk.ru
|
|
||||||
tula.ru
|
|
||||||
tuva.ru
|
|
||||||
tver.ru
|
|
||||||
tyumen.ru
|
|
||||||
udm.ru
|
|
||||||
udmurtia.ru
|
|
||||||
ulan-ude.ru
|
|
||||||
vladikavkaz.ru
|
|
||||||
vladimir.ru
|
|
||||||
vladivostok.ru
|
|
||||||
vologda.ru
|
|
||||||
voronezh.ru
|
|
||||||
vrn.ru
|
|
||||||
vyatka.ru
|
|
||||||
yakutia.ru
|
|
||||||
yamal.ru
|
|
||||||
yaroslavl.ru
|
|
||||||
yekaterinburg.ru
|
|
||||||
yuzhno-sakhalinsk.ru
|
|
||||||
// More geographical domains
|
|
||||||
amursk.ru
|
|
||||||
baikal.ru
|
|
||||||
cmw.ru
|
|
||||||
fareast.ru
|
|
||||||
jamal.ru
|
|
||||||
kms.ru
|
|
||||||
k-uralsk.ru
|
|
||||||
kustanai.ru
|
|
||||||
kuzbass.ru
|
|
||||||
mytis.ru
|
|
||||||
nakhodka.ru
|
|
||||||
nkz.ru
|
|
||||||
norilsk.ru
|
|
||||||
oskol.ru
|
|
||||||
pyatigorsk.ru
|
|
||||||
rubtsovsk.ru
|
|
||||||
snz.ru
|
|
||||||
syzran.ru
|
|
||||||
vdonsk.ru
|
|
||||||
zgrad.ru
|
|
||||||
// State domains
|
|
||||||
gov.ru
|
gov.ru
|
||||||
|
int.ru
|
||||||
mil.ru
|
mil.ru
|
||||||
// Technical domains
|
|
||||||
test.ru
|
test.ru
|
||||||
|
|
||||||
// rw : http://www.nic.rw/cgi-bin/policy.pl
|
// rw : http://www.nic.rw/cgi-bin/policy.pl
|
||||||
|
@ -11799,6 +11670,10 @@ gist.githubcloud.com
|
||||||
// Submitted by Alex Hanselka <alex@gitlab.com>
|
// Submitted by Alex Hanselka <alex@gitlab.com>
|
||||||
gitlab.io
|
gitlab.io
|
||||||
|
|
||||||
|
// UKHomeOffice : https://www.gov.uk/government/organisations/home-office
|
||||||
|
// Submitted by Jon Shanks <jon.shanks@digital.homeoffice.gov.uk>
|
||||||
|
homeoffice.gov.uk
|
||||||
|
|
||||||
// GlobeHosting, Inc.
|
// GlobeHosting, Inc.
|
||||||
// Submitted by Zoltan Egresi <egresi@globehosting.com>
|
// Submitted by Zoltan Egresi <egresi@globehosting.com>
|
||||||
ro.im
|
ro.im
|
||||||
|
@ -12341,6 +12216,10 @@ lib.de.us
|
||||||
// Submitted by Simon Kissel <hostmaster@viprinet.com>
|
// Submitted by Simon Kissel <hostmaster@viprinet.com>
|
||||||
router.management
|
router.management
|
||||||
|
|
||||||
|
// Western Digital Technologies, Inc : https://www.wdc.com
|
||||||
|
// Submitted by Jung Jin <jungseok.jin@wdc.com>
|
||||||
|
remotewd.com
|
||||||
|
|
||||||
// Wikimedia Labs : https://wikitech.wikimedia.org
|
// Wikimedia Labs : https://wikitech.wikimedia.org
|
||||||
// Submitted by Yuvi Panda <yuvipanda@wikimedia.org>
|
// Submitted by Yuvi Panda <yuvipanda@wikimedia.org>
|
||||||
wmflabs.org
|
wmflabs.org
|
||||||
|
@ -12368,4 +12247,10 @@ za.org
|
||||||
// Submitted by Olli Vanhoja <olli@zeit.co>
|
// Submitted by Olli Vanhoja <olli@zeit.co>
|
||||||
now.sh
|
now.sh
|
||||||
|
|
||||||
|
// 1GB LLC : https://www.1gb.ua/
|
||||||
|
// Submitted by 1GB LLC <noc@1gb.com.ua>
|
||||||
|
cc.ua
|
||||||
|
inf.ua
|
||||||
|
ltd.ua
|
||||||
|
|
||||||
// ===END PRIVATE DOMAINS===
|
// ===END PRIVATE DOMAINS===
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
#.Distributed under the terms of the GNU General Public License (GPL) version 2.0
|
#.Distributed under the terms of the GNU General Public License (GPL) version 2.0
|
||||||
#
|
#
|
||||||
# script for sending updates to cloudflare.com
|
# script for sending updates to cloudflare.com
|
||||||
#.2014-2015 Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
|
#.2014-2017 Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
|
||||||
# many thanks to Paul for testing and feedback during development
|
# many thanks to Paul for testing and feedback during development
|
||||||
#
|
#
|
||||||
# This script is parsed by dynamic_dns_functions.sh inside send_update() function
|
# This script is parsed by dynamic_dns_functions.sh inside send_update() function
|
||||||
|
@ -19,15 +19,26 @@
|
||||||
[ -z "$username" ] && write_log 14 "Service section not configured correctly! Missing 'username'"
|
[ -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 "$password" ] && write_log 14 "Service section not configured correctly! Missing 'password'"
|
||||||
|
|
||||||
local __RECID __URL __KEY __KEYS __FOUND __SUBDOM __DOMAIN __TLD
|
local __RECID __URL __KEY __KEYS __FOUND __SUBDOM __DOMAIN __FQDN
|
||||||
|
|
||||||
# split given Host/Domain into TLD, registrable domain, and subdomain
|
# split __SUBDOM __DOMAIN from $domain
|
||||||
split_FQDN $domain __TLD __DOMAIN __SUBDOM
|
# given data:
|
||||||
[ $? -ne 0 -o -z "$__DOMAIN" ] && \
|
# @example.com for "domain record"
|
||||||
write_log 14 "Wrong Host/Domain configuration ($domain). Please correct configuration!"
|
# host.sub@example.com for a "host record"
|
||||||
|
__SUBDOM=$(printf %s "$domain" | cut -d@ -f1)
|
||||||
|
__DOMAIN=$(printf %s "$domain" | cut -d@ -f2)
|
||||||
|
|
||||||
# put together what we need
|
# Cloudflare v1 needs:
|
||||||
__DOMAIN="$__DOMAIN.$__TLD"
|
# __DOMAIN = the base domain i.e. example.com
|
||||||
|
# __SUBDOM = the host.sub to change if a "host record" or blank if domain record
|
||||||
|
# __FQDN = the FQDN to detect record_id to change
|
||||||
|
# i.e. example.com for the "domain record" or host.sub.example.com for "host record"
|
||||||
|
if [ -z "$__SUBDOM" -o "$__SUBDOM" = "$__DOMAIN" ]; then
|
||||||
|
__SUBDOM=""
|
||||||
|
__FQDN="$__DOMAIN"
|
||||||
|
else
|
||||||
|
__FQDN="${__SUBDOM}.${__DOMAIN}"
|
||||||
|
fi
|
||||||
|
|
||||||
# parse OpenWrt script with
|
# parse OpenWrt script with
|
||||||
# functions for parsing and generating json
|
# functions for parsing and generating json
|
||||||
|
@ -90,7 +101,7 @@ cleanup() {
|
||||||
# json_get_var __DISPLAY "display_name" # for debugging
|
# json_get_var __DISPLAY "display_name" # for debugging
|
||||||
json_get_var __NAME "name"
|
json_get_var __NAME "name"
|
||||||
json_get_var __TYPE "type"
|
json_get_var __TYPE "type"
|
||||||
if [ "$__NAME" = "$domain" ]; then
|
if [ "$__NAME" = "$__FQDN" ]; then
|
||||||
# we must verify IPv4 and IPv6 because there might be both for the same host
|
# we must verify IPv4 and IPv6 because there might be both for the same host
|
||||||
[ \( $use_ipv6 -eq 0 -a "$__TYPE" = "A" \) -o \( $use_ipv6 -eq 1 -a "$__TYPE" = "AAAA" \) ] && {
|
[ \( $use_ipv6 -eq 0 -a "$__TYPE" = "A" \) -o \( $use_ipv6 -eq 1 -a "$__TYPE" = "AAAA" \) ] && {
|
||||||
__FOUND=1 # mark found
|
__FOUND=1 # mark found
|
||||||
|
@ -106,7 +117,7 @@ cleanup() {
|
||||||
}
|
}
|
||||||
json_get_var __RECID "rec_id" # last thing to do get rec_id
|
json_get_var __RECID "rec_id" # last thing to do get rec_id
|
||||||
json_cleanup # cleanup
|
json_cleanup # cleanup
|
||||||
write_log 7 "rec_id '$__RECID' detected for host/domain '$domain'"
|
write_log 7 "rec_id '$__RECID' detected for host/domain '$__FQDN'"
|
||||||
}
|
}
|
||||||
|
|
||||||
# build url according to cloudflare client api at https://www.cloudflare.com/docs/client-api.html
|
# build url according to cloudflare client api at https://www.cloudflare.com/docs/client-api.html
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
# script for sending updates to cloudflare.com
|
# script for sending updates to cloudflare.com
|
||||||
#.based on Ben Kulbertis cloudflare-update-record.sh found at http://gist.github.com/benkulbertis
|
#.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
|
#.and on George Johnson's cf-ddns.sh found at https://github.com/gstuartj/cf-ddns.sh
|
||||||
#.2016 Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
|
#.2016-2017 Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
|
||||||
# CloudFlare API documentation at https://api.cloudflare.com/
|
# CloudFlare API documentation at https://api.cloudflare.com/
|
||||||
#
|
#
|
||||||
# This script is parsed by dynamic_dns_functions.sh inside send_update() function
|
# This script is parsed by dynamic_dns_functions.sh inside send_update() function
|
||||||
|
@ -29,11 +29,21 @@ local __HOST __DOMAIN __TYPE __URLBASE __PRGBASE __RUNPROG __DATA __IPV6 __ZONEI
|
||||||
local __URLBASE="https://api.cloudflare.com/client/v4"
|
local __URLBASE="https://api.cloudflare.com/client/v4"
|
||||||
|
|
||||||
# split __HOST __DOMAIN from $domain
|
# 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)
|
__HOST=$(printf %s "$domain" | cut -d@ -f1)
|
||||||
__DOMAIN=$(printf %s "$domain" | cut -d@ -f2)
|
__DOMAIN=$(printf %s "$domain" | cut -d@ -f2)
|
||||||
|
|
||||||
# __HOST != __DOMAIN then host@domain.tld => host.domain.tld
|
# Cloudflare v4 needs:
|
||||||
[ "$__HOST" = "$__DOMAIN" ] || __HOST=$(printf %s "$domain" | tr "@" ".")
|
# __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
|
# set record type
|
||||||
[ $use_ipv6 -eq 0 ] && __TYPE="A" || __TYPE="AAAA"
|
[ $use_ipv6 -eq 0 ] && __TYPE="A" || __TYPE="AAAA"
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
#
|
#
|
||||||
# script for sending updates to godaddy.com
|
# script for sending updates to godaddy.com
|
||||||
#.based on GoDaddy.sh v1.0 by Nazar78 @ TeaNazaR.com
|
#.based on GoDaddy.sh v1.0 by Nazar78 @ TeaNazaR.com
|
||||||
#.2016 Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
|
#.2017 Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
|
||||||
# GoDaddy Documentation at https://developer.godaddy.com/doc
|
# GoDaddy Documentation at https://developer.godaddy.com/doc
|
||||||
#
|
#
|
||||||
# This script is parsed by dynamic_dns_functions.sh inside send_update() function
|
# This script is parsed by dynamic_dns_functions.sh inside send_update() function
|
||||||
|
@ -27,9 +27,17 @@
|
||||||
local __HOST __DOMAIN __TYPE __URL __PRGBASE __RUNPROG __DATA __IPV6
|
local __HOST __DOMAIN __TYPE __URL __PRGBASE __RUNPROG __DATA __IPV6
|
||||||
|
|
||||||
# split __HOST __DOMAIN from $domain
|
# 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)
|
__HOST=$(printf %s "$domain" | cut -d@ -f1)
|
||||||
__DOMAIN=$(printf %s "$domain" | cut -d@ -f2)
|
__DOMAIN=$(printf %s "$domain" | cut -d@ -f2)
|
||||||
[ -z "$__HOST" -o "$__HOST" = "$__DOMAIN" ] && __HOST="%40" # no expizit host given so set to default "@" => urlencode "%40"
|
|
||||||
|
# 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
|
# set record type
|
||||||
[ $use_ipv6 -eq 0 ] && __TYPE="A" || __TYPE="AAAA"
|
[ $use_ipv6 -eq 0 ] && __TYPE="A" || __TYPE="AAAA"
|
||||||
|
|
Loading…
Reference in a new issue