2 # Copyright (C) 2008-2017 OpenWrt.org
4 # This is free software, licensed under the GNU General Public License v2.
7 include $(TOPDIR
)/rules.mk
10 # Version == major.minor.patch
11 # increase on new functionality (minor) or patches (patch)
14 # increase on changes of services files or tld_names.dat
18 PKG_MAINTAINER
:=Christian Schoenebeck
<christian.schoenebeck@gmail.com
>
20 include $(INCLUDE_DIR
)/package.mk
22 # no default dependencies
25 define Package
/ddns-scripts
/Default
28 SUBMENU
:=IP Addresses and Names
32 ###### *************************************************************************
33 define Package
/ddns-scripts
34 $(call Package
/ddns-scripts
/Default
)
35 TITLE
:=Dynamic DNS Client scripts
(with IPv6 support
)
37 # shown in LuCI package description
38 define Package
/ddns-scripts
/description
39 Dynamic DNS Client scripts
(with IPv6 support
) - Info
: http
://wiki.openwrt.org
/doc
/howto
/ddns.client
41 # shown in menuconfig <Help>
42 define Package
/ddns-scripts
/config
44 A highly configurable set of scripts for doing dynamic dns updates.
47 - Glue Record support
(require BIND host or KNOT host
)
48 - DNS requests via TCP
49 - Proxy server support
52 Version
: $(PKG_VERSION
)-$(PKG_RELEASE
)
53 Info
: http
://wiki.openwrt.org
/doc
/howto
/ddns.client
56 ###### *************************************************************************
57 define Package
/ddns-scripts_cloudflare
58 $(call Package
/ddns-scripts
/Default
)
59 TITLE
:=CloudFlare.com API v1
(deprecated
)
62 define Package
/ddns-scripts_cloudflare
/description
63 Dynamic DNS Client scripts extension for CloudFlare.com API-v1
(deprecated
)
66 ###### *************************************************************************
67 define Package
/ddns-scripts_cloudflare.com-v4
68 $(call Package
/ddns-scripts
/Default
)
69 TITLE
:=CloudFlare.com API v4
(require cURL
)
70 DEPENDS
:=ddns-scripts
+curl
72 define Package
/ddns-scripts_cloudflare.com-v4
/description
73 Dynamic DNS Client scripts extension for CloudFlare.com API-v4
(require
/install cURL
)
76 ###### *************************************************************************
77 define Package
/ddns-scripts_godaddy.com-v1
78 $(call Package
/ddns-scripts
/Default
)
79 TITLE
:=GoDaddy.com
(require cURL
)
80 DEPENDS
:=ddns-scripts
+curl
82 define Package
/ddns-scripts_godaddy.com-v1
/description
83 Dynamic DNS Client scripts extension for GoDaddy.com
(require
/install cURL
)
86 ###### *************************************************************************
87 define Package
/ddns-scripts_no-ip_com
88 $(call Package
/ddns-scripts
/Default
)
89 TITLE
:=DDNS extension for No-IP.com
92 define Package
/ddns-scripts_no-ip_com
/description
93 Dynamic DNS Client scripts extension for No-IP.com
96 ###### *************************************************************************
97 define Package
/ddns-scripts_nsupdate
98 $(call Package
/ddns-scripts
/Default
)
99 TITLE
:=DDNS extension using Bind nsupdate
100 DEPENDS
:=ddns-scripts
+bind-client
102 define Package
/ddns-scripts_nsupdate
/description
103 Dynamic DNS Client scripts extension for direct updates using Bind nsupdate
105 define Package
/ddns-scripts_nsupdate
/config
107 The script directly updates a PowerDNS
(or maybe bind server
) via nsupdate
108 from bind-client package. It requires
109 "option dns_server" to be set to the server to be used by nsupdate.
110 "option username" should be set to the key name and
111 "option password" to the base64 encoded shared secret.
115 ###### *************************************************************************
116 define Build
/Configure
119 $(CP
) .
/files
$(PKG_BUILD_DIR
)
120 # ensure that VERSION inside dynamic_dns_functions.sh reflect PKG_VERSION of Makefile
121 $(SED
) '/^VERSION=*/s/.*/VERSION="$(PKG_VERSION)-$(PKG_RELEASE)"/' $(PKG_BUILD_DIR
)/files
/dynamic_dns_functions.sh
122 # remove comments, white spaces and empty lines
123 for FILE in
`find $(PKG_BUILD_DIR)/files -type f`; do \
124 $(SED
) 's/^[[:space:]]*//' \
125 -e
'/^#[[:space:]]\|^#$$$$/d' \
126 -e
's/[[:space:]]#[[:space:]].*$$$$//' \
127 -e
's/[[:space:]]*$$$$//' \
128 -e
'/^\/\/[[:space:]]/d' \
129 -e
'/^[[:space:]]*$$$$/d' $$$$FILE; \
131 # compress public_suffix_list.dat
132 gzip
-f9
$(PKG_BUILD_DIR
)/files
/public_suffix_list.dat
135 define Package
/ddns-scripts
/conffiles
139 ###### *************************************************************************
140 define Package
/ddns-scripts
/preinst
142 # if NOT run buildroot then stop service
143 [ -z
"$${IPKG_INSTROOT}" ] && /etc
/init.d
/ddns stop
>/dev
/null
2>&1
144 exit
0 # suppress errors
146 define Package
/ddns-scripts
/install
147 $(INSTALL_DIR
) $(1)/etc
/uci-defaults
148 $(INSTALL_BIN
) $(PKG_BUILD_DIR
)/files
/ddns.defaults
$(1)/etc
/uci-defaults
/ddns
149 $(INSTALL_DIR
) $(1)/etc
/hotplug.d
/iface
150 $(INSTALL_BIN
) $(PKG_BUILD_DIR
)/files
/ddns.hotplug
$(1)/etc
/hotplug.d
/iface
/95-ddns
151 $(INSTALL_DIR
) $(1)/etc
/init.d
152 $(INSTALL_BIN
) $(PKG_BUILD_DIR
)/files
/ddns.init
$(1)/etc
/init.d
/ddns
153 $(INSTALL_DIR
) $(1)/etc
/config
154 $(INSTALL_CONF
) $(PKG_BUILD_DIR
)/files
/ddns.config
$(1)/etc
/config
/ddns
156 $(INSTALL_DIR
) $(1)/etc
/ddns
157 $(INSTALL_DATA
) $(PKG_BUILD_DIR
)/files
/services
* $(1)/etc
/ddns
159 $(INSTALL_DIR
) $(1)/usr
/lib
/ddns
160 $(INSTALL_BIN
) $(PKG_BUILD_DIR
)/files
/dynamic_dns_
*.sh
$(1)/usr
/lib
/ddns
162 define Package
/ddns-scripts
/postinst
164 # if NOT run buildroot and PKG_UPGRADE then (re)start service if enabled
165 [ -z
"$${IPKG_INSTROOT}" -a
"$${PKG_UPGRADE}" = "1" ] && {
166 [ -x
/etc
/uci-defaults
/ddns
] && \
167 /etc
/uci-defaults
/ddns
&& \
168 rm -f
/etc
/uci-defaults
/ddns
>/dev
/null
2>&1
169 /etc
/init.d
/ddns enabled
&& \
170 /etc
/init.d
/ddns start
>/dev
/null
2>&1
172 exit
0 # suppress errors
174 define Package
/ddns-scripts
/prerm
176 # if run within buildroot exit
177 [ -n
"$${IPKG_INSTROOT}" ] && exit
0
178 # stop running scripts
179 /etc
/init.d
/ddns stop
180 /etc
/init.d
/ddns disable
181 # clear LuCI indexcache
182 rm -f
/tmp
/luci-indexcache
>/dev
/null
2>&1
183 exit
0 # suppress errors
186 ###### *************************************************************************
187 define Package
/ddns-scripts_cloudflare
/preinst
189 # if NOT run buildroot then stop service
190 [ -z
"$${IPKG_INSTROOT}" ] && /etc
/init.d
/ddns stop
>/dev
/null
2>&1
191 exit
0 # suppress errors
193 define Package
/ddns-scripts_cloudflare
/install
194 $(INSTALL_DIR
) $(1)/etc
/uci-defaults
195 $(INSTALL_BIN
) $(PKG_BUILD_DIR
)/files
/ddns.defaults
$(1)/etc
/uci-defaults
/ddns_cloudflare
196 $(INSTALL_DIR
) $(1)/usr
/share
197 $(INSTALL_DATA
) $(PKG_BUILD_DIR
)/files
/public_suffix_list.dat.gz
$(1)/usr
/share
198 $(INSTALL_DIR
) $(1)/usr
/lib
/ddns
199 $(INSTALL_BIN
) $(PKG_BUILD_DIR
)/files
/update_cloudflare_com_v1.sh
$(1)/usr
/lib
/ddns
201 define Package
/ddns-scripts_cloudflare
/postinst
203 # remove old services file entries
204 /bin
/sed
-i
'/cloudflare\.com-v1/d' $${IPKG_INSTROOT}/etc
/ddns
/services
>/dev
/null
2>&1
205 /bin
/sed
-i
'/cloudflare\.com-v1/d' $${IPKG_INSTROOT}/etc
/ddns
/services_ipv6
>/dev
/null
2>&1
207 printf
"%s\\t%s\\n" '"cloudflare.com-v1"' '"update_cloudflare_com_v1.sh"' >> $${IPKG_INSTROOT}/etc
/ddns
/services
208 printf
"%s\\t%s\\n" '"cloudflare.com-v1"' '"update_cloudflare_com_v1.sh"' >> $${IPKG_INSTROOT}/etc
/ddns
/services_ipv6
209 # on real system restart service if enabled
210 [ -z
"$${IPKG_INSTROOT}" ] && {
211 [ -x
/etc
/uci-defaults
/ddns_cloudflare
] && \
212 /etc
/uci-defaults
/ddns_cloudflare
&& \
213 rm -f
/etc
/uci-defaults
/ddns_cloudflare
>/dev
/null
2>&1
214 /etc
/init.d
/ddns enabled
&& \
215 /etc
/init.d
/ddns start
>/dev
/null
2>&1
217 exit
0 # suppress errors
219 define Package
/ddns-scripts_cloudflare
/prerm
221 # if NOT run buildroot then stop service
222 [ -z
"$${IPKG_INSTROOT}" ] && /etc
/init.d
/ddns stop
>/dev
/null
2>&1
223 # remove services file entries
224 /bin
/sed
-i
'/cloudflare\.com-v1/d' $${IPKG_INSTROOT}/etc
/ddns
/services
>/dev
/null
2>&1
225 /bin
/sed
-i
'/cloudflare\.com-v1/d' $${IPKG_INSTROOT}/etc
/ddns
/services_ipv6
>/dev
/null
2>&1
226 exit
0 # suppress errors
229 ###### *************************************************************************
230 define Package
/ddns-scripts_cloudflare.com-v4
/preinst
232 # if NOT run buildroot then stop service
233 [ -z
"$${IPKG_INSTROOT}" ] && /etc
/init.d
/ddns stop
>/dev
/null
2>&1
234 exit
0 # suppress errors
236 define Package
/ddns-scripts_cloudflare.com-v4
/install
237 $(INSTALL_DIR
) $(1)/etc
/uci-defaults
238 $(INSTALL_BIN
) $(PKG_BUILD_DIR
)/files
/ddns.defaults
$(1)/etc
/uci-defaults
/ddns_cloudflare.com-v4
239 $(INSTALL_DIR
) $(1)/usr
/lib
/ddns
240 $(INSTALL_BIN
) $(PKG_BUILD_DIR
)/files
/update_cloudflare_com_v4.sh
$(1)/usr
/lib
/ddns
242 define Package
/ddns-scripts_cloudflare.com-v4
/postinst
244 # remove old services file entries
245 /bin
/sed
-i
'/cloudflare\.com-v4/d' $${IPKG_INSTROOT}/etc
/ddns
/services
>/dev
/null
2>&1
246 /bin
/sed
-i
'/cloudflare\.com-v4/d' $${IPKG_INSTROOT}/etc
/ddns
/services_ipv6
>/dev
/null
2>&1
248 printf
"%s\\t%s\\n" '"cloudflare.com-v4"' '"update_cloudflare_com_v4.sh"' >> $${IPKG_INSTROOT}/etc
/ddns
/services
249 printf
"%s\\t%s\\n" '"cloudflare.com-v4"' '"update_cloudflare_com_v4.sh"' >> $${IPKG_INSTROOT}/etc
/ddns
/services_ipv6
250 # on real system restart service if enabled
251 [ -z
"$${IPKG_INSTROOT}" ] && {
252 [ -x
/etc
/uci-defaults
/ddns_cloudflare.com-v4
] && \
253 /etc
/uci-defaults
/ddns_cloudflare.com-v4
&& \
254 rm -f
/etc
/uci-defaults
/ddns_cloudflare.com-v4
>/dev
/null
2>&1
255 /etc
/init.d
/ddns enabled
&& \
256 /etc
/init.d
/ddns start
>/dev
/null
2>&1
258 exit
0 # suppress errors
260 define Package
/ddns-scripts_cloudflare.com-v4
/prerm
262 # if NOT run buildroot then stop service
263 [ -z
"$${IPKG_INSTROOT}" ] && /etc
/init.d
/ddns stop
>/dev
/null
2>&1
264 # remove services file entries
265 /bin
/sed
-i
'/cloudflare\.com-v4/d' $${IPKG_INSTROOT}/etc
/ddns
/services
>/dev
/null
2>&1
266 /bin
/sed
-i
'/cloudflare\.com-v4/d' $${IPKG_INSTROOT}/etc
/ddns
/services_ipv6
>/dev
/null
2>&1
267 exit
0 # suppress errors
270 ###### *************************************************************************
271 define Package
/ddns-scripts_godaddy.com-v1
/preinst
273 # if NOT run buildroot then stop service
274 [ -z
"$${IPKG_INSTROOT}" ] && /etc
/init.d
/ddns stop
>/dev
/null
2>&1
275 exit
0 # suppress errors
277 define Package
/ddns-scripts_godaddy.com-v1
/install
278 $(INSTALL_DIR
) $(1)/etc
/uci-defaults
279 $(INSTALL_BIN
) $(PKG_BUILD_DIR
)/files
/ddns.defaults
$(1)/etc
/uci-defaults
/ddns_godaddy.com-v1
280 $(INSTALL_DIR
) $(1)/usr
/lib
/ddns
281 $(INSTALL_BIN
) $(PKG_BUILD_DIR
)/files
/update_godaddy_com_v1.sh
$(1)/usr
/lib
/ddns
283 define Package
/ddns-scripts_godaddy.com-v1
/postinst
285 # remove old services file entries
286 /bin
/sed
-i
'/godaddy\.com-v1/d' $${IPKG_INSTROOT}/etc
/ddns
/services
>/dev
/null
2>&1
287 /bin
/sed
-i
'/godaddy\.com-v1/d' $${IPKG_INSTROOT}/etc
/ddns
/services_ipv6
>/dev
/null
2>&1
289 printf
"%s\\t%s\\n" '"godaddy.com-v1"' '"update_godaddy_com_v1.sh"' >> $${IPKG_INSTROOT}/etc
/ddns
/services
290 printf
"%s\\t%s\\n" '"godaddy.com-v1"' '"update_godaddy_com_v1.sh"' >> $${IPKG_INSTROOT}/etc
/ddns
/services_ipv6
291 # on real system restart service if enabled
292 [ -z
"$${IPKG_INSTROOT}" ] && {
293 [ -x
/etc
/uci-defaults
/ddns_godaddy.com-v1
] && \
294 /etc
/uci-defaults
/ddns_godaddy.com-v1
&& \
295 rm -f
/etc
/uci-defaults
/ddns_godaddy.com-v1
>/dev
/null
2>&1
296 /etc
/init.d
/ddns enabled \
297 && /etc
/init.d
/ddns start
>/dev
/null
2>&1
299 exit
0 # suppress errors
301 define Package
/ddns-scripts_godaddy.com-v1
/prerm
303 # if NOT run buildroot then stop service
304 [ -z
"$${IPKG_INSTROOT}" ] && /etc
/init.d
/ddns stop
>/dev
/null
2>&1
305 # remove services file entries
306 /bin
/sed
-i
'/godaddy\.com-v1/d' $${IPKG_INSTROOT}/etc
/ddns
/services
>/dev
/null
2>&1
307 /bin
/sed
-i
'/godaddy\.com-v1/d' $${IPKG_INSTROOT}/etc
/ddns
/services_ipv6
>/dev
/null
2>&1
308 exit
0 # suppress errors
311 ###### *************************************************************************
312 define Package
/ddns-scripts_no-ip_com
/preinst
314 # if NOT run buildroot then stop service
315 [ -z
"$${IPKG_INSTROOT}" ] && /etc
/init.d
/ddns stop
>/dev
/null
2>&1
316 exit
0 # suppress errors
318 define Package
/ddns-scripts_no-ip_com
/install
319 $(INSTALL_DIR
) $(1)/etc
/uci-defaults
320 $(INSTALL_BIN
) $(PKG_BUILD_DIR
)/files
/ddns.defaults
$(1)/etc
/uci-defaults
/ddns_no-ip_com
321 $(INSTALL_DIR
) $(1)/usr
/lib
/ddns
322 $(INSTALL_BIN
) $(PKG_BUILD_DIR
)/files
/update_no-ip_com.sh
$(1)/usr
/lib
/ddns
324 define Package
/ddns-scripts_no-ip_com
/postinst
326 # remove old services file entries
327 /bin
/sed
-i
'/no-ip\.com/d' $${IPKG_INSTROOT}/etc
/ddns
/services
>/dev
/null
2>&1
329 printf
"%s\\t%s\\n" '"no-ip.com"' '"update_no-ip_com.sh"' >> $${IPKG_INSTROOT}/etc
/ddns
/services
330 # on real system restart service if enabled
331 [ -z
"$${IPKG_INSTROOT}" ] && {
332 [ -x
/etc
/uci-defaults
/ddns_no-ip_com
] && \
333 /etc
/uci-defaults
/ddns_no-ip_com
&& \
334 rm -f
/etc
/uci-defaults
/ddns_no-ip_com
>/dev
/null
2>&1
335 /etc
/init.d
/ddns enabled
&& \
336 /etc
/init.d
/ddns start
>/dev
/null
2>&1
338 exit
0 # suppress errors
340 define Package
/ddns-scripts_no-ip_com
/prerm
342 # if NOT run buildroot then stop service
343 [ -z
"$${IPKG_INSTROOT}" ] && /etc
/init.d
/ddns stop
>/dev
/null
2>&1
344 # remove services file entries
345 /bin
/sed
-i
'/no-ip\.com/d' $${IPKG_INSTROOT}/etc
/ddns
/services
>/dev
/null
2>&1
346 exit
0 # suppress errors
349 ###### *************************************************************************
350 define Package
/ddns-scripts_nsupdate
/preinst
352 # if NOT run buildroot then stop service
353 [ -z
"$${IPKG_INSTROOT}" ] && /etc
/init.d
/ddns stop
>/dev
/null
2>&1
354 exit
0 # suppress errors
356 define Package
/ddns-scripts_nsupdate
/install
357 $(INSTALL_DIR
) $(1)/etc
/uci-defaults
358 $(INSTALL_BIN
) $(PKG_BUILD_DIR
)/files
/ddns.defaults
$(1)/etc
/uci-defaults
/ddns_nsupdate
359 $(INSTALL_DIR
) $(1)/usr
/lib
/ddns
360 $(INSTALL_BIN
) $(PKG_BUILD_DIR
)/files
/update_nsupdate.sh
$(1)/usr
/lib
/ddns
362 define Package
/ddns-scripts_nsupdate
/postinst
364 # remove old services file entries
365 /bin
/sed
-i
'/bind-nsupdate/d' $${IPKG_INSTROOT}/etc
/ddns
/services
>/dev
/null
2>&1
366 /bin
/sed
-i
'/bind-nsupdate/d' $${IPKG_INSTROOT}/etc
/ddns
/services_ipv6
>/dev
/null
2>&1
368 printf
"%s\\t%s\\n" '"bind-nsupdate"' '"update_nsupdate.sh"' >> $${IPKG_INSTROOT}/etc
/ddns
/services
369 printf
"%s\\t%s\\n" '"bind-nsupdate"' '"update_nsupdate.sh"' >> $${IPKG_INSTROOT}/etc
/ddns
/services_ipv6
370 # on real system restart service if enabled
371 [ -z
"$${IPKG_INSTROOT}" ] && {
372 [ -x
/etc
/uci-defaults
/ddns_nsupdate
] && \
373 /etc
/uci-defaults
/ddns_nsupdate
&& \
374 rm -f
/etc
/uci-defaults
/ddns_nsupdate
>/dev
/null
2>&1
375 /etc
/init.d
/ddns enabled
&& \
376 /etc
/init.d
/ddns start
>/dev
/null
2>&1
378 exit
0 # suppress errors
380 define Package
/ddns-scripts_nsupdate
/prerm
382 # if NOT run buildroot then stop service
383 [ -z
"$${IPKG_INSTROOT}" ] && /etc
/init.d
/ddns stop
>/dev
/null
2>&1
384 # remove services file entries
385 /bin
/sed
-i
'/bind-nsupdate/d' $${IPKG_INSTROOT}/etc
/ddns
/services
>/dev
/null
2>&1
386 /bin
/sed
-i
'/bind-nsupdate/d' $${IPKG_INSTROOT}/etc
/ddns
/services_ipv6
>/dev
/null
2>&1
387 exit
0 # suppress errors
390 ###### *************************************************************************
391 $(eval
$(call BuildPackage
,ddns-scripts
))
392 $(eval
$(call BuildPackage
,ddns-scripts_cloudflare
))
393 $(eval
$(call BuildPackage
,ddns-scripts_cloudflare.com-v4
))
394 $(eval
$(call BuildPackage
,ddns-scripts_godaddy.com-v1
))
395 $(eval
$(call BuildPackage
,ddns-scripts_no-ip_com
))
396 $(eval
$(call BuildPackage
,ddns-scripts_nsupdate
))