# # Copyright (C) 2008-2016 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.3 # Release == build # increase on changes of services files or tld_names.dat PKG_RELEASE:=2 PKG_LICENSE:=GPL-2.0 PKG_MAINTAINER:=Christian Schoenebeck include $(INCLUDE_DIR)/package.mk # no default dependencies PKG_DEFAULT_DEPENDS= define Package/$(PKG_NAME)/Default SECTION:=net CATEGORY:=Network SUBMENU:=IP Addresses and Names PKGARCH:=all endef ##### ********************************** define Package/$(PKG_NAME) $(call Package/$(PKG_NAME)/Default) TITLE:=Dynamic DNS Client scripts (with IPv6 support) endef # shown in LuCI package description define Package/$(PKG_NAME)/description Dynamic DNS Client scripts (with IPv6 support) - Info: http://wiki.openwrt.org/doc/howto/ddns.client endef # shown in menuconfig define Package/$(PKG_NAME)/config help A highly configurable set of scripts for doing dynamic dns updates. - IPv6 support - force communication to IPv4 or IPv6 only - DNS server support - using BIND host if installed - 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 $(PKG_MAINTAINER) endef ##### ********************************** define Package/$(PKG_NAME)_cloudflare $(call Package/$(PKG_NAME)/Default) TITLE:=DDNS extension for CloudFlare.com DEPENDS:=$(PKG_NAME) endef define Package/$(PKG_NAME)_cloudflare/description Dynamic DNS Client scripts extension for CloudFlare.com endef ##### ********************************** define Package/$(PKG_NAME)_no-ip_com $(call Package/$(PKG_NAME)/Default) TITLE:=DDNS extension for No-IP.com DEPENDS:=$(PKG_NAME) endef define Package/$(PKG_NAME)_no-ip_com/description Dynamic DNS Client scripts extension for No-IP.com endef ##### ********************************** define Package/$(PKG_NAME)_nsupdate $(call Package/$(PKG_NAME)/Default) TITLE:=DDNS extension using Bind nsupdate DEPENDS:=$(PKG_NAME) +bind-client endef define Package/$(PKG_NAME)_nsupdate/description Dynamic DNS Client scripts extension for direct updates using Bind nsupdate endef define Package/$(PKG_NAME)_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 Build/Configure endef define Build/Compile $(CP) ./files $(PKG_BUILD_DIR) for FILE in `find $(PKG_BUILD_DIR)/files -type f`; do \ $(SED) 's/^\s*#/#/' \ -e '/^#\s\|^#$$$$/d' \ -e 's/\s#\s.*$$$$//' \ -e 's/\s*$$$$//' \ -e '/^\/\/\s/d' \ -e '/^\s*$$$$/d' $$$$FILE; \ done gzip -f9 $(PKG_BUILD_DIR)/files/tld_names.dat endef define Package/$(PKG_NAME)/conffiles /etc/config/ddns endef ##### ********************************** define Package/$(PKG_NAME)/install $(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)/usr/lib/ddns $(INSTALL_DATA) $(PKG_BUILD_DIR)/files/services* $(1)/usr/lib/ddns $(INSTALL_BIN) $(PKG_BUILD_DIR)/files/dynamic_*.sh $(1)/usr/lib/ddns endef define Package/$(PKG_NAME)/postinst #!/bin/sh # if run within buildroot exit [ -n "$${IPKG_INSTROOT}" ] && exit 0 # add new section "ddns" "global" if not exists uci -q get ddns.global > /dev/null || uci -q set ddns.global='ddns' uci -q get ddns.global.date_format > /dev/null || uci -q set ddns.global.date_format='%F %R' uci -q get ddns.global.log_lines > /dev/null || uci -q set ddns.global.log_lines='250' uci -q get ddns.global.allow_local_ip > /dev/null || uci -q set ddns.global.allow_local_ip='0' uci -q commit ddns # clear LuCI indexcache rm -f /tmp/luci-indexcache >/dev/null 2>&1 exit 0 endef define Package/$(PKG_NAME)/prerm #!/bin/sh # if run within buildroot exit [ -n "$${IPKG_INSTROOT}" ] && exit 0 # stop running scripts /etc/init.d/ddns disable /etc/init.d/ddns stop # clear LuCI indexcache rm -f /tmp/luci-indexcache >/dev/null 2>&1 exit 0 endef ##### ********************************** define Package/$(PKG_NAME)_cloudflare/install $(INSTALL_DIR) $(1)/usr/lib/ddns $(INSTALL_BIN) $(PKG_BUILD_DIR)/files/update_cloudflare_com.sh $(1)/usr/lib/ddns $(INSTALL_DATA) $(PKG_BUILD_DIR)/files/tld_names.dat.gz $(1)/usr/lib/ddns endef define Package/$(PKG_NAME)_cloudflare/postinst #!/bin/sh echo -e '"cloudflare.com"\t"update_cloudflare_com.sh"' >> $${IPKG_INSTROOT}/usr/lib/ddns/services echo -e '"cloudflare.com"\t"update_cloudflare_com.sh"' >> $${IPKG_INSTROOT}/usr/lib/ddns/services_ipv6 /bin/sed -i '/service_name/s/CloudFlare/cloudflare\.com/g' $${IPKG_INSTROOT}/etc/config/ddns endef define Package/$(PKG_NAME)_cloudflare/prerm #!/bin/sh /bin/sed -i '/update_cloudflare_com\.sh/ d' $${IPKG_INSTROOT}/usr/lib/ddns/services /bin/sed -i '/update_cloudflare_com\.sh/ d' $${IPKG_INSTROOT}/usr/lib/ddns/services_ipv6 endef ##### ********************************** define Package/$(PKG_NAME)_no-ip_com/install $(INSTALL_DIR) $(1)/usr/lib/ddns $(INSTALL_BIN) $(PKG_BUILD_DIR)/files/update_no-ip_com.sh $(1)/usr/lib/ddns endef define Package/$(PKG_NAME)_no-ip_com/postinst #!/bin/sh echo -e '"no-ip.com"\t"update_no-ip_com.sh"' >> $${IPKG_INSTROOT}/usr/lib/ddns/services /bin/sed -i '/service_name/s/NoIP\.com/no-ip\.com/g' $${IPKG_INSTROOT}/etc/config/ddns /bin/sed -i '/service_name/s/No-IP\.com/no-ip\.com/g' $${IPKG_INSTROOT}/etc/config/ddns endef define Package/$(PKG_NAME)_no-ip_com/prerm #!/bin/sh /bin/sed -i '/update_no-ip_com\.sh/ d' $${IPKG_INSTROOT}/usr/lib/ddns/services endef ##### ********************************** define Package/$(PKG_NAME)_nsupdate/install $(INSTALL_DIR) $(1)/usr/lib/ddns $(INSTALL_BIN) $(PKG_BUILD_DIR)/files/update_nsupdate.sh $(1)/usr/lib/ddns endef define Package/$(PKG_NAME)_nsupdate/postinst #!/bin/sh echo -e '"bind-nsupdate"\t"update_nsupdate.sh"' >> $${IPKG_INSTROOT}/usr/lib/ddns/services echo -e '"bind-nsupdate"\t"update_nsupdate.sh"' >> $${IPKG_INSTROOT}/usr/lib/ddns/services_ipv6 /bin/sed -i '/service_name/s/Bind-nsupdate/bind-nsupdate/g' $${IPKG_INSTROOT}/etc/config/ddns endef define Package/$(PKG_NAME)_nsupdate/prerm #!/bin/sh /bin/sed -i '/update_nsupdate\.sh/ d' $${IPKG_INSTROOT}/usr/lib/ddns/services /bin/sed -i '/update_nsupdate\.sh/ d' $${IPKG_INSTROOT}/usr/lib/ddns/services_ipv6 endef ##### ********************************** $(eval $(call BuildPackage,$(PKG_NAME))) $(eval $(call BuildPackage,$(PKG_NAME)_cloudflare)) $(eval $(call BuildPackage,$(PKG_NAME)_no-ip_com)) $(eval $(call BuildPackage,$(PKG_NAME)_nsupdate))