# # Copyright (C) 2008-2018 OpenWrt.org # # This is free software, licensed under the GNU General Public License v2. # include $(TOPDIR)/rules.mk PKG_NAME:=ddns-scripts # Version == major.minor.patch # increase on new functionality (minor) or patches (patch) PKG_VERSION:=2.7.7 # Release == build # increase on changes of services files or tld_names.dat PKG_RELEASE:=7 PKG_LICENSE:=GPL-2.0 PKG_MAINTAINER:=Christian Schoenebeck include $(INCLUDE_DIR)/package.mk # no default dependencies PKG_DEFAULT_DEPENDS= define Package/ddns-scripts/Default SECTION:=net CATEGORY:=Network SUBMENU:=IP Addresses and Names PKGARCH:=all endef ###### ************************************************************************* define Package/ddns-scripts $(call Package/ddns-scripts/Default) TITLE:=Dynamic DNS Client scripts (with IPv6 support) endef # shown in LuCI package description define Package/ddns-scripts/description Dynamic DNS Client scripts (with IPv6 support) - Info: http://wiki.openwrt.org/doc/howto/ddns.client endef # shown in menuconfig define Package/ddns-scripts/config help A highly configurable set of scripts for doing dynamic dns updates. - IPv6 support - DNS server support - Glue Record support (require BIND host or KNOT host) - DNS requests via TCP - Proxy server support - log file support - support to run once Version: $(PKG_VERSION)-$(PKG_RELEASE) Info : http://wiki.openwrt.org/doc/howto/ddns.client endef ###### ************************************************************************* define Package/ddns-scripts_cloudflare $(call Package/ddns-scripts/Default) TITLE:=CloudFlare.com API v1 (deprecated) DEPENDS:=ddns-scripts endef define Package/ddns-scripts_cloudflare/description Dynamic DNS Client scripts extension for CloudFlare.com API-v1 (deprecated) endef ###### ************************************************************************* define Package/ddns-scripts_cloudflare.com-v4 $(call Package/ddns-scripts/Default) TITLE:=CloudFlare.com API v4 (require cURL) DEPENDS:=ddns-scripts +curl endef define Package/ddns-scripts_cloudflare.com-v4/description Dynamic DNS Client scripts extension for CloudFlare.com API-v4 (require/install cURL) endef ###### ************************************************************************* define Package/ddns-scripts_godaddy.com-v1 $(call Package/ddns-scripts/Default) TITLE:=GoDaddy.com (require cURL) DEPENDS:=ddns-scripts +curl endef define Package/ddns-scripts_godaddy.com-v1/description Dynamic DNS Client scripts extension for GoDaddy.com (require/install cURL) endef ###### ************************************************************************* define Package/ddns-scripts_no-ip_com $(call Package/ddns-scripts/Default) TITLE:=DDNS extension for No-IP.com DEPENDS:=ddns-scripts endef define Package/ddns-scripts_no-ip_com/description Dynamic DNS Client scripts extension for No-IP.com endef ###### ************************************************************************* define Package/ddns-scripts_nsupdate $(call Package/ddns-scripts/Default) TITLE:=DDNS extension using Bind nsupdate DEPENDS:=ddns-scripts +bind-client endef define Package/ddns-scripts_nsupdate/description Dynamic DNS Client scripts extension for direct updates using Bind nsupdate endef define Package/ddns-scripts_nsupdate/config help The script directly updates a PowerDNS (or maybe bind server) via nsupdate from bind-client package. It requires "option dns_server" to be set to the server to be used by nsupdate. "option username" should be set to the key name and "option password" to the base64 encoded shared secret. endef ###### ************************************************************************* define Package/ddns-scripts_route53-v1 $(call Package/ddns-scripts/Default) TITLE:=Amazon AWS Route 53 API v1 DEPENDS:=ddns-scripts +curl +openssl-util endef define Package/ddns-scripts_route53-v1/description Dynamic DNS Client scripts extension for Amazon AWS Route53. Note: You must also install ca-certificate or ca-bundle. It requires: "option username" to be a valid AWS access key id "option password" to be the matching AWS secret key id "option domain" to contain the hosted zone ID endef ###### ************************************************************************* define Build/Configure endef define Build/Compile $(CP) ./files $(PKG_BUILD_DIR) # ensure that VERSION inside dynamic_dns_functions.sh reflect PKG_VERSION of Makefile $(SED) '/^VERSION=*/s/.*/VERSION="$(PKG_VERSION)-$(PKG_RELEASE)"/' $(PKG_BUILD_DIR)/files/dynamic_dns_functions.sh # remove comments, white spaces and empty lines for FILE in `find $(PKG_BUILD_DIR)/files -type f`; do \ $(SED) 's/^[[:space:]]*//' \ -e '/^#[[:space:]]\|^#$$$$/d' \ -e 's/[[:space:]]#[[:space:]].*$$$$//' \ -e 's/[[:space:]]*$$$$//' \ -e '/^\/\/[[:space:]]/d' \ -e '/^[[:space:]]*$$$$/d' $$$$FILE; \ done # compress public_suffix_list.dat gzip -nf9 $(PKG_BUILD_DIR)/files/public_suffix_list.dat endef define Package/ddns-scripts/conffiles /etc/config/ddns endef ###### ************************************************************************* define Package/ddns-scripts/preinst #!/bin/sh # if NOT run buildroot then stop service [ -z "$${IPKG_INSTROOT}" ] && /etc/init.d/ddns stop >/dev/null 2>&1 exit 0 # suppress errors endef define Package/ddns-scripts/install $(INSTALL_DIR) $(1)/etc/uci-defaults $(INSTALL_BIN) $(PKG_BUILD_DIR)/files/ddns.defaults $(1)/etc/uci-defaults/ddns $(INSTALL_DIR) $(1)/etc/hotplug.d/iface $(INSTALL_BIN) $(PKG_BUILD_DIR)/files/ddns.hotplug $(1)/etc/hotplug.d/iface/95-ddns $(INSTALL_DIR) $(1)/etc/init.d $(INSTALL_BIN) $(PKG_BUILD_DIR)/files/ddns.init $(1)/etc/init.d/ddns $(INSTALL_DIR) $(1)/etc/config $(INSTALL_CONF) $(PKG_BUILD_DIR)/files/ddns.config $(1)/etc/config/ddns $(INSTALL_DIR) $(1)/etc/ddns $(INSTALL_DATA) $(PKG_BUILD_DIR)/files/services* $(1)/etc/ddns $(INSTALL_DIR) $(1)/usr/lib/ddns $(INSTALL_BIN) $(PKG_BUILD_DIR)/files/dynamic_dns_*.sh $(1)/usr/lib/ddns endef define Package/ddns-scripts/postinst #!/bin/sh # if NOT run buildroot and PKG_UPGRADE then (re)start service if enabled [ -z "$${IPKG_INSTROOT}" -a "$${PKG_UPGRADE}" = "1" ] && { [ -x /etc/uci-defaults/ddns ] && \ /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 endef define Package/ddns-scripts/prerm #!/bin/sh # if run within buildroot exit [ -n "$${IPKG_INSTROOT}" ] && exit 0 # stop running scripts /etc/init.d/ddns stop /etc/init.d/ddns disable # clear LuCI indexcache rm -f /tmp/luci-indexcache >/dev/null 2>&1 exit 0 # suppress errors endef ###### ************************************************************************* define Package/ddns-scripts_cloudflare/preinst #!/bin/sh # if NOT run buildroot then stop service [ -z "$${IPKG_INSTROOT}" ] && /etc/init.d/ddns stop >/dev/null 2>&1 exit 0 # suppress errors endef define Package/ddns-scripts_cloudflare/install $(INSTALL_DIR) $(1)/etc/uci-defaults $(INSTALL_BIN) $(PKG_BUILD_DIR)/files/ddns.defaults $(1)/etc/uci-defaults/ddns_cloudflare $(INSTALL_DIR) $(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 define Package/ddns-scripts_cloudflare/postinst #!/bin/sh # remove old 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_ipv6 >/dev/null 2>&1 # 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 [ -z "$${IPKG_INSTROOT}" ] && { [ -x /etc/uci-defaults/ddns_cloudflare ] && \ /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 endef define Package/ddns-scripts_cloudflare/prerm #!/bin/sh # if NOT run buildroot then stop service [ -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_ipv6 >/dev/null 2>&1 exit 0 # suppress errors endef ###### ************************************************************************* define Package/ddns-scripts_cloudflare.com-v4/preinst #!/bin/sh # if NOT run buildroot then stop service [ -z "$${IPKG_INSTROOT}" ] && /etc/init.d/ddns stop >/dev/null 2>&1 exit 0 # suppress errors endef define Package/ddns-scripts_cloudflare.com-v4/install $(INSTALL_DIR) $(1)/etc/uci-defaults $(INSTALL_BIN) $(PKG_BUILD_DIR)/files/ddns.defaults $(1)/etc/uci-defaults/ddns_cloudflare.com-v4 $(INSTALL_DIR) $(1)/usr/lib/ddns $(INSTALL_BIN) $(PKG_BUILD_DIR)/files/update_cloudflare_com_v4.sh $(1)/usr/lib/ddns endef define Package/ddns-scripts_cloudflare.com-v4/postinst #!/bin/sh # remove old 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_ipv6 >/dev/null 2>&1 # 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 [ -z "$${IPKG_INSTROOT}" ] && { [ -x /etc/uci-defaults/ddns_cloudflare.com-v4 ] && \ /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 endef define Package/ddns-scripts_cloudflare.com-v4/prerm #!/bin/sh # if NOT run buildroot then stop service [ -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_ipv6 >/dev/null 2>&1 exit 0 # suppress errors endef ###### ************************************************************************* define Package/ddns-scripts_godaddy.com-v1/preinst #!/bin/sh # if NOT run buildroot then stop service [ -z "$${IPKG_INSTROOT}" ] && /etc/init.d/ddns stop >/dev/null 2>&1 exit 0 # suppress errors endef define Package/ddns-scripts_godaddy.com-v1/install $(INSTALL_DIR) $(1)/etc/uci-defaults $(INSTALL_BIN) $(PKG_BUILD_DIR)/files/ddns.defaults $(1)/etc/uci-defaults/ddns_godaddy.com-v1 $(INSTALL_DIR) $(1)/usr/lib/ddns $(INSTALL_BIN) $(PKG_BUILD_DIR)/files/update_godaddy_com_v1.sh $(1)/usr/lib/ddns endef define Package/ddns-scripts_godaddy.com-v1/postinst #!/bin/sh # remove old 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_ipv6 >/dev/null 2>&1 # 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 [ -z "$${IPKG_INSTROOT}" ] && { [ -x /etc/uci-defaults/ddns_godaddy.com-v1 ] && \ /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 endef define Package/ddns-scripts_godaddy.com-v1/prerm #!/bin/sh # if NOT run buildroot then stop service [ -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_ipv6 >/dev/null 2>&1 exit 0 # suppress errors endef ###### ************************************************************************* define Package/ddns-scripts_no-ip_com/preinst #!/bin/sh # if NOT run buildroot then stop service [ -z "$${IPKG_INSTROOT}" ] && /etc/init.d/ddns stop >/dev/null 2>&1 exit 0 # suppress errors endef define Package/ddns-scripts_no-ip_com/install $(INSTALL_DIR) $(1)/etc/uci-defaults $(INSTALL_BIN) $(PKG_BUILD_DIR)/files/ddns.defaults $(1)/etc/uci-defaults/ddns_no-ip_com $(INSTALL_DIR) $(1)/usr/lib/ddns $(INSTALL_BIN) $(PKG_BUILD_DIR)/files/update_no-ip_com.sh $(1)/usr/lib/ddns endef define Package/ddns-scripts_no-ip_com/postinst #!/bin/sh # remove old services file entries /bin/sed -i '/no-ip\.com/d' $${IPKG_INSTROOT}/etc/ddns/services >/dev/null 2>&1 # 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 [ -z "$${IPKG_INSTROOT}" ] && { [ -x /etc/uci-defaults/ddns_no-ip_com ] && \ /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 endef define Package/ddns-scripts_no-ip_com/prerm #!/bin/sh # if NOT run buildroot then stop service [ -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 exit 0 # suppress errors endef ###### ************************************************************************* define Package/ddns-scripts_nsupdate/preinst #!/bin/sh # if NOT run buildroot then stop service [ -z "$${IPKG_INSTROOT}" ] && /etc/init.d/ddns stop >/dev/null 2>&1 exit 0 # suppress errors endef define Package/ddns-scripts_nsupdate/install $(INSTALL_DIR) $(1)/etc/uci-defaults $(INSTALL_BIN) $(PKG_BUILD_DIR)/files/ddns.defaults $(1)/etc/uci-defaults/ddns_nsupdate $(INSTALL_DIR) $(1)/usr/lib/ddns $(INSTALL_BIN) $(PKG_BUILD_DIR)/files/update_nsupdate.sh $(1)/usr/lib/ddns endef define Package/ddns-scripts_nsupdate/postinst #!/bin/sh # remove old 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_ipv6 >/dev/null 2>&1 # 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 [ -z "$${IPKG_INSTROOT}" ] && { [ -x /etc/uci-defaults/ddns_nsupdate ] && \ /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 endef define Package/ddns-scripts_nsupdate/prerm #!/bin/sh # if NOT run buildroot then stop service [ -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_ipv6 >/dev/null 2>&1 exit 0 # suppress errors endef ###### ************************************************************************* define Package/ddns-scripts_route53-v1/preinst #!/bin/sh # if NOT run buildroot then stop service [ -z "$${IPKG_INSTROOT}" ] && /etc/init.d/ddns stop >/dev/null 2>&1 exit 0 # suppress errors endef define Package/ddns-scripts_route53-v1/install $(INSTALL_DIR) $(1)/etc/uci-defaults $(INSTALL_BIN) $(PKG_BUILD_DIR)/files/ddns.defaults $(1)/etc/uci-defaults/ddns_route53-v1 $(INSTALL_DIR) $(1)/usr/lib/ddns $(INSTALL_BIN) $(PKG_BUILD_DIR)/files/update_route53_v1.sh $(1)/usr/lib/ddns endef define Package/ddns-scripts_route53-v1/postinst #!/bin/sh # remove old services file entries /bin/sed -i '/route53-v1/d' $${IPKG_INSTROOT}/etc/ddns/services >/dev/null 2>&1 /bin/sed -i '/route53-v1/d' $${IPKG_INSTROOT}/etc/ddns/services_ipv6 >/dev/null 2>&1 # and create new printf "%s\\t%s\\n" '"route53-v1"' '"update_route53_v1.sh"' >> $${IPKG_INSTROOT}/etc/ddns/services printf "%s\\t%s\\n" '"route53-v1"' '"update_route53_v1.sh"' >> $${IPKG_INSTROOT}/etc/ddns/services_ipv6 # on real system restart service if enabled [ -z "$${IPKG_INSTROOT}" ] && { [ -x /etc/uci-defaults/ddns_route53-v1 ] && \ /etc/uci-defaults/ddns_route53-v1 && \ rm -f /etc/uci-defaults/route53.com-v1 >/dev/null 2>&1 /etc/init.d/ddns enabled \ && /etc/init.d/ddns start >/dev/null 2>&1 } exit 0 # suppress errors endef define Package/ddns-scripts_route53-v1/prerm #!/bin/sh # if NOT run buildroot then stop service [ -z "$${IPKG_INSTROOT}" ] && /etc/init.d/ddns stop >/dev/null 2>&1 # remove services file entries /bin/sed -i 'route53-v1/d' $${IPKG_INSTROOT}/etc/ddns/services >/dev/null 2>&1 /bin/sed -i 'route53-v1/d' $${IPKG_INSTROOT}/etc/ddns/services_ipv6 >/dev/null 2>&1 exit 0 # suppress errors endef ###### ************************************************************************* $(eval $(call BuildPackage,ddns-scripts)) $(eval $(call BuildPackage,ddns-scripts_cloudflare)) $(eval $(call BuildPackage,ddns-scripts_cloudflare.com-v4)) $(eval $(call BuildPackage,ddns-scripts_godaddy.com-v1)) $(eval $(call BuildPackage,ddns-scripts_no-ip_com)) $(eval $(call BuildPackage,ddns-scripts_nsupdate)) $(eval $(call BuildPackage,ddns-scripts_route53-v1))