2 # Copyright (C) 2008-2018 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
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.com-v4
58 $(call Package
/ddns-scripts
/Default
)
59 TITLE
:=CloudFlare.com API v4
(requires cURL
)
60 DEPENDS
:=ddns-scripts
+curl
62 define Package
/ddns-scripts_cloudflare.com-v4
/description
63 Dynamic DNS Client scripts extension for CloudFlare.com API-v4
(require
/install cURL
)
66 ###### *************************************************************************
67 define Package
/ddns-scripts_freedns_42_pl
68 $(call Package
/ddns-scripts
/Default
)
69 TITLE
:=DDNS extension for FreeDNS
.42.pl
(requires cURL
)
70 DEPENDS
:=ddns-scripts
+curl
72 define Package
/ddns-scripts_freedns_42_pl
/description
73 Dynamic DNS Client scripts extension for freedns
.42.pl
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 Package
/ddns-scripts_route53-v1
117 $(call Package
/ddns-scripts
/Default
)
118 TITLE
:=Amazon AWS Route
53 API v1
119 DEPENDS
:=ddns-scripts
+curl
+openssl-util
121 define Package
/ddns-scripts_route53-v1
/description
122 Dynamic DNS Client scripts extension for Amazon AWS Route53. Note
: You
123 must also
install ca-certificate or ca-bundle.
125 "option username" to be a valid AWS access key id
126 "option password" to be the matching AWS secret key id
127 "option domain" to contain the hosted zone ID
130 ###### *************************************************************************
131 define Build
/Configure
134 $(CP
) .
/files
$(PKG_BUILD_DIR
)
135 # ensure that VERSION inside dynamic_dns_functions.sh reflect PKG_VERSION of Makefile
136 $(SED
) '/^VERSION=*/s/.*/VERSION="$(PKG_VERSION)-$(PKG_RELEASE)"/' $(PKG_BUILD_DIR
)/files
/dynamic_dns_functions.sh
137 # remove comments, white spaces and empty lines
138 for FILE in
`find $(PKG_BUILD_DIR)/files -type f`; do \
139 $(SED
) 's/^[[:space:]]*//' \
140 -e
'/^#[[:space:]]\|^#$$$$/d' \
141 -e
's/[[:space:]]#[[:space:]].*$$$$//' \
142 -e
's/[[:space:]]*$$$$//' \
143 -e
'/^\/\/[[:space:]]/d' \
144 -e
'/^[[:space:]]*$$$$/d' $$$$FILE; \
148 define Package
/ddns-scripts
/conffiles
152 ###### *************************************************************************
153 define Package
/ddns-scripts
/preinst
155 # if NOT run buildroot then stop service
156 [ -z
"$${IPKG_INSTROOT}" ] && /etc
/init.d
/ddns stop
>/dev
/null
2>&1
157 exit
0 # suppress errors
159 define Package
/ddns-scripts
/install
160 $(INSTALL_DIR
) $(1)/etc
/uci-defaults
161 $(INSTALL_BIN
) $(PKG_BUILD_DIR
)/files
/ddns.defaults
$(1)/etc
/uci-defaults
/ddns
162 $(INSTALL_DIR
) $(1)/etc
/hotplug.d
/iface
163 $(INSTALL_BIN
) $(PKG_BUILD_DIR
)/files
/ddns.hotplug
$(1)/etc
/hotplug.d
/iface
/95-ddns
164 $(INSTALL_DIR
) $(1)/etc
/init.d
165 $(INSTALL_BIN
) $(PKG_BUILD_DIR
)/files
/ddns.init
$(1)/etc
/init.d
/ddns
166 $(INSTALL_DIR
) $(1)/etc
/config
167 $(INSTALL_CONF
) $(PKG_BUILD_DIR
)/files
/ddns.config
$(1)/etc
/config
/ddns
169 $(INSTALL_DIR
) $(1)/etc
/ddns
170 $(INSTALL_DATA
) $(PKG_BUILD_DIR
)/files
/services
* $(1)/etc
/ddns
172 $(INSTALL_DIR
) $(1)/usr
/lib
/ddns
173 $(INSTALL_BIN
) $(PKG_BUILD_DIR
)/files
/dynamic_dns_
*.sh
$(1)/usr
/lib
/ddns
175 define Package
/ddns-scripts
/postinst
177 # if NOT run buildroot and PKG_UPGRADE then (re)start service if enabled
178 [ -z
"$${IPKG_INSTROOT}" -a
"$${PKG_UPGRADE}" = "1" ] && {
179 [ -x
/etc
/uci-defaults
/ddns
] && \
180 /etc
/uci-defaults
/ddns
&& \
181 rm -f
/etc
/uci-defaults
/ddns
>/dev
/null
2>&1
182 /etc
/init.d
/ddns enabled
&& \
183 /etc
/init.d
/ddns start
>/dev
/null
2>&1
185 exit
0 # suppress errors
187 define Package
/ddns-scripts
/prerm
189 # if run within buildroot exit
190 [ -n
"$${IPKG_INSTROOT}" ] && exit
0
191 # stop running scripts
192 /etc
/init.d
/ddns stop
193 /etc
/init.d
/ddns disable
194 # clear LuCI indexcache
195 rm -f
/tmp
/luci-indexcache
>/dev
/null
2>&1
196 exit
0 # suppress errors
199 ###### *************************************************************************
200 define Package
/ddns-scripts_cloudflare.com-v4
/preinst
202 # if NOT run buildroot then stop service
203 [ -z
"$${IPKG_INSTROOT}" ] && /etc
/init.d
/ddns stop
>/dev
/null
2>&1
204 exit
0 # suppress errors
206 define Package
/ddns-scripts_cloudflare.com-v4
/install
207 $(INSTALL_DIR
) $(1)/etc
/uci-defaults
208 $(INSTALL_BIN
) $(PKG_BUILD_DIR
)/files
/ddns.defaults
$(1)/etc
/uci-defaults
/ddns_cloudflare.com-v4
209 $(INSTALL_DIR
) $(1)/usr
/lib
/ddns
210 $(INSTALL_BIN
) $(PKG_BUILD_DIR
)/files
/update_cloudflare_com_v4.sh
$(1)/usr
/lib
/ddns
212 define Package
/ddns-scripts_cloudflare.com-v4
/postinst
214 # remove old services file entries
215 /bin
/sed
-i
'/cloudflare\.com-v4/d' $${IPKG_INSTROOT}/etc
/ddns
/services
>/dev
/null
2>&1
216 /bin
/sed
-i
'/cloudflare\.com-v4/d' $${IPKG_INSTROOT}/etc
/ddns
/services_ipv6
>/dev
/null
2>&1
218 printf
"%s\\t%s\\n" '"cloudflare.com-v4"' '"update_cloudflare_com_v4.sh"' >> $${IPKG_INSTROOT}/etc
/ddns
/services
219 printf
"%s\\t%s\\n" '"cloudflare.com-v4"' '"update_cloudflare_com_v4.sh"' >> $${IPKG_INSTROOT}/etc
/ddns
/services_ipv6
220 # on real system restart service if enabled
221 [ -z
"$${IPKG_INSTROOT}" ] && {
222 [ -x
/etc
/uci-defaults
/ddns_cloudflare.com-v4
] && \
223 /etc
/uci-defaults
/ddns_cloudflare.com-v4
&& \
224 rm -f
/etc
/uci-defaults
/ddns_cloudflare.com-v4
>/dev
/null
2>&1
225 /etc
/init.d
/ddns enabled
&& \
226 /etc
/init.d
/ddns start
>/dev
/null
2>&1
228 exit
0 # suppress errors
230 define Package
/ddns-scripts_cloudflare.com-v4
/prerm
232 # if NOT run buildroot then stop service
233 [ -z
"$${IPKG_INSTROOT}" ] && /etc
/init.d
/ddns stop
>/dev
/null
2>&1
234 # remove services file entries
235 /bin
/sed
-i
'/cloudflare\.com-v4/d' $${IPKG_INSTROOT}/etc
/ddns
/services
>/dev
/null
2>&1
236 /bin
/sed
-i
'/cloudflare\.com-v4/d' $${IPKG_INSTROOT}/etc
/ddns
/services_ipv6
>/dev
/null
2>&1
237 exit
0 # suppress errors
240 ###### *************************************************************************
241 define Package
/ddns-scripts_freedns_42_pl
/preinst
243 # if NOT run buildroot then stop service
244 [ -z
"$${IPKG_INSTROOT}" ] && /etc
/init.d
/ddns stop
>/dev
/null
2>&1
245 exit
0 # suppress errors
247 define Package
/ddns-scripts_freedns_42_pl
/install
248 $(INSTALL_DIR
) $(1)/etc
/uci-defaults
249 $(INSTALL_BIN
) $(PKG_BUILD_DIR
)/files
/ddns.defaults
$(1)/etc
/uci-defaults
/ddns_freedns_42_pl
250 $(INSTALL_DIR
) $(1)/usr
/lib
/ddns
251 $(INSTALL_BIN
) $(PKG_BUILD_DIR
)/files
/update_freedns_42_pl.sh
$(1)/usr
/lib
/ddns
253 define Package
/ddns-scripts_freedns_42_pl
/postinst
255 # remove old services file entries
256 /bin
/sed
-i
'/freedns\.42\.pl/d' $${IPKG_INSTROOT}/etc
/ddns
/services
>/dev
/null
2>&1
258 printf
"%s\\t%s\\n" '"freedns.42.pl"' '"update_freedns_42_pl.sh"' >> $${IPKG_INSTROOT}/etc
/ddns
/services
259 # on real system restart service if enabled
260 [ -z
"$${IPKG_INSTROOT}" ] && {
261 [ -x
/etc
/uci-defaults
/ddns_freedns_42_pl
] && \
262 /etc
/uci-defaults
/ddns_freedns_42_pl
&& \
263 rm -f
/etc
/uci-defaults
/ddns_freedns_42_pl
>/dev
/null
2>&1
264 /etc
/init.d
/ddns enabled
&& \
265 /etc
/init.d
/ddns start
>/dev
/null
2>&1
267 exit
0 # suppress errors
269 define Package
/ddns-scripts_freedns_42_pl
/prerm
271 # if NOT run buildroot then stop service
272 [ -z
"$${IPKG_INSTROOT}" ] && /etc
/init.d
/ddns stop
>/dev
/null
2>&1
273 # remove services file entries
274 /bin
/sed
-i
'/freedns\.42\.pl/d' $${IPKG_INSTROOT}/etc
/ddns
/services
>/dev
/null
2>&1
275 exit
0 # suppress errors
278 ###### *************************************************************************
279 define Package
/ddns-scripts_godaddy.com-v1
/preinst
281 # if NOT run buildroot then stop service
282 [ -z
"$${IPKG_INSTROOT}" ] && /etc
/init.d
/ddns stop
>/dev
/null
2>&1
283 exit
0 # suppress errors
285 define Package
/ddns-scripts_godaddy.com-v1
/install
286 $(INSTALL_DIR
) $(1)/etc
/uci-defaults
287 $(INSTALL_BIN
) $(PKG_BUILD_DIR
)/files
/ddns.defaults
$(1)/etc
/uci-defaults
/ddns_godaddy.com-v1
288 $(INSTALL_DIR
) $(1)/usr
/lib
/ddns
289 $(INSTALL_BIN
) $(PKG_BUILD_DIR
)/files
/update_godaddy_com_v1.sh
$(1)/usr
/lib
/ddns
291 define Package
/ddns-scripts_godaddy.com-v1
/postinst
293 # remove old services file entries
294 /bin
/sed
-i
'/godaddy\.com-v1/d' $${IPKG_INSTROOT}/etc
/ddns
/services
>/dev
/null
2>&1
295 /bin
/sed
-i
'/godaddy\.com-v1/d' $${IPKG_INSTROOT}/etc
/ddns
/services_ipv6
>/dev
/null
2>&1
297 printf
"%s\\t%s\\n" '"godaddy.com-v1"' '"update_godaddy_com_v1.sh"' >> $${IPKG_INSTROOT}/etc
/ddns
/services
298 printf
"%s\\t%s\\n" '"godaddy.com-v1"' '"update_godaddy_com_v1.sh"' >> $${IPKG_INSTROOT}/etc
/ddns
/services_ipv6
299 # on real system restart service if enabled
300 [ -z
"$${IPKG_INSTROOT}" ] && {
301 [ -x
/etc
/uci-defaults
/ddns_godaddy.com-v1
] && \
302 /etc
/uci-defaults
/ddns_godaddy.com-v1
&& \
303 rm -f
/etc
/uci-defaults
/ddns_godaddy.com-v1
>/dev
/null
2>&1
304 /etc
/init.d
/ddns enabled \
305 && /etc
/init.d
/ddns start
>/dev
/null
2>&1
307 exit
0 # suppress errors
309 define Package
/ddns-scripts_godaddy.com-v1
/prerm
311 # if NOT run buildroot then stop service
312 [ -z
"$${IPKG_INSTROOT}" ] && /etc
/init.d
/ddns stop
>/dev
/null
2>&1
313 # remove services file entries
314 /bin
/sed
-i
'/godaddy\.com-v1/d' $${IPKG_INSTROOT}/etc
/ddns
/services
>/dev
/null
2>&1
315 /bin
/sed
-i
'/godaddy\.com-v1/d' $${IPKG_INSTROOT}/etc
/ddns
/services_ipv6
>/dev
/null
2>&1
316 exit
0 # suppress errors
319 ###### *************************************************************************
320 define Package
/ddns-scripts_no-ip_com
/preinst
322 # if NOT run buildroot then stop service
323 [ -z
"$${IPKG_INSTROOT}" ] && /etc
/init.d
/ddns stop
>/dev
/null
2>&1
324 exit
0 # suppress errors
326 define Package
/ddns-scripts_no-ip_com
/install
327 $(INSTALL_DIR
) $(1)/etc
/uci-defaults
328 $(INSTALL_BIN
) $(PKG_BUILD_DIR
)/files
/ddns.defaults
$(1)/etc
/uci-defaults
/ddns_no-ip_com
329 $(INSTALL_DIR
) $(1)/usr
/lib
/ddns
330 $(INSTALL_BIN
) $(PKG_BUILD_DIR
)/files
/update_no-ip_com.sh
$(1)/usr
/lib
/ddns
332 define Package
/ddns-scripts_no-ip_com
/postinst
334 # remove old services file entries
335 /bin
/sed
-i
'/no-ip\.com/d' $${IPKG_INSTROOT}/etc
/ddns
/services
>/dev
/null
2>&1
337 printf
"%s\\t%s\\n" '"no-ip.com"' '"update_no-ip_com.sh"' >> $${IPKG_INSTROOT}/etc
/ddns
/services
338 # on real system restart service if enabled
339 [ -z
"$${IPKG_INSTROOT}" ] && {
340 [ -x
/etc
/uci-defaults
/ddns_no-ip_com
] && \
341 /etc
/uci-defaults
/ddns_no-ip_com
&& \
342 rm -f
/etc
/uci-defaults
/ddns_no-ip_com
>/dev
/null
2>&1
343 /etc
/init.d
/ddns enabled
&& \
344 /etc
/init.d
/ddns start
>/dev
/null
2>&1
346 exit
0 # suppress errors
348 define Package
/ddns-scripts_no-ip_com
/prerm
350 # if NOT run buildroot then stop service
351 [ -z
"$${IPKG_INSTROOT}" ] && /etc
/init.d
/ddns stop
>/dev
/null
2>&1
352 # remove services file entries
353 /bin
/sed
-i
'/no-ip\.com/d' $${IPKG_INSTROOT}/etc
/ddns
/services
>/dev
/null
2>&1
354 exit
0 # suppress errors
357 ###### *************************************************************************
358 define Package
/ddns-scripts_nsupdate
/preinst
360 # if NOT run buildroot then stop service
361 [ -z
"$${IPKG_INSTROOT}" ] && /etc
/init.d
/ddns stop
>/dev
/null
2>&1
362 exit
0 # suppress errors
364 define Package
/ddns-scripts_nsupdate
/install
365 $(INSTALL_DIR
) $(1)/etc
/uci-defaults
366 $(INSTALL_BIN
) $(PKG_BUILD_DIR
)/files
/ddns.defaults
$(1)/etc
/uci-defaults
/ddns_nsupdate
367 $(INSTALL_DIR
) $(1)/usr
/lib
/ddns
368 $(INSTALL_BIN
) $(PKG_BUILD_DIR
)/files
/update_nsupdate.sh
$(1)/usr
/lib
/ddns
370 define Package
/ddns-scripts_nsupdate
/postinst
372 # remove old services file entries
373 /bin
/sed
-i
'/bind-nsupdate/d' $${IPKG_INSTROOT}/etc
/ddns
/services
>/dev
/null
2>&1
374 /bin
/sed
-i
'/bind-nsupdate/d' $${IPKG_INSTROOT}/etc
/ddns
/services_ipv6
>/dev
/null
2>&1
376 printf
"%s\\t%s\\n" '"bind-nsupdate"' '"update_nsupdate.sh"' >> $${IPKG_INSTROOT}/etc
/ddns
/services
377 printf
"%s\\t%s\\n" '"bind-nsupdate"' '"update_nsupdate.sh"' >> $${IPKG_INSTROOT}/etc
/ddns
/services_ipv6
378 # on real system restart service if enabled
379 [ -z
"$${IPKG_INSTROOT}" ] && {
380 [ -x
/etc
/uci-defaults
/ddns_nsupdate
] && \
381 /etc
/uci-defaults
/ddns_nsupdate
&& \
382 rm -f
/etc
/uci-defaults
/ddns_nsupdate
>/dev
/null
2>&1
383 /etc
/init.d
/ddns enabled
&& \
384 /etc
/init.d
/ddns start
>/dev
/null
2>&1
386 exit
0 # suppress errors
388 define Package
/ddns-scripts_nsupdate
/prerm
390 # if NOT run buildroot then stop service
391 [ -z
"$${IPKG_INSTROOT}" ] && /etc
/init.d
/ddns stop
>/dev
/null
2>&1
392 # remove services file entries
393 /bin
/sed
-i
'/bind-nsupdate/d' $${IPKG_INSTROOT}/etc
/ddns
/services
>/dev
/null
2>&1
394 /bin
/sed
-i
'/bind-nsupdate/d' $${IPKG_INSTROOT}/etc
/ddns
/services_ipv6
>/dev
/null
2>&1
395 exit
0 # suppress errors
398 ###### *************************************************************************
399 define Package
/ddns-scripts_route53-v1
/preinst
401 # if NOT run buildroot then stop service
402 [ -z
"$${IPKG_INSTROOT}" ] && /etc
/init.d
/ddns stop
>/dev
/null
2>&1
403 exit
0 # suppress errors
405 define Package
/ddns-scripts_route53-v1
/install
406 $(INSTALL_DIR
) $(1)/etc
/uci-defaults
407 $(INSTALL_BIN
) $(PKG_BUILD_DIR
)/files
/ddns.defaults
$(1)/etc
/uci-defaults
/ddns_route53-v1
408 $(INSTALL_DIR
) $(1)/usr
/lib
/ddns
409 $(INSTALL_BIN
) $(PKG_BUILD_DIR
)/files
/update_route53_v1.sh
$(1)/usr
/lib
/ddns
411 define Package
/ddns-scripts_route53-v1
/postinst
413 # remove old services file entries
414 /bin
/sed
-i
'/route53-v1/d' $${IPKG_INSTROOT}/etc
/ddns
/services
>/dev
/null
2>&1
415 /bin
/sed
-i
'/route53-v1/d' $${IPKG_INSTROOT}/etc
/ddns
/services_ipv6
>/dev
/null
2>&1
417 printf
"%s\\t%s\\n" '"route53-v1"' '"update_route53_v1.sh"' >> $${IPKG_INSTROOT}/etc
/ddns
/services
418 printf
"%s\\t%s\\n" '"route53-v1"' '"update_route53_v1.sh"' >> $${IPKG_INSTROOT}/etc
/ddns
/services_ipv6
419 # on real system restart service if enabled
420 [ -z
"$${IPKG_INSTROOT}" ] && {
421 [ -x
/etc
/uci-defaults
/ddns_route53-v1
] && \
422 /etc
/uci-defaults
/ddns_route53-v1
&& \
423 rm -f
/etc
/uci-defaults
/route53.com-v1
>/dev
/null
2>&1
424 /etc
/init.d
/ddns enabled \
425 && /etc
/init.d
/ddns start
>/dev
/null
2>&1
427 exit
0 # suppress errors
429 define Package
/ddns-scripts_route53-v1
/prerm
431 # if NOT run buildroot then stop service
432 [ -z
"$${IPKG_INSTROOT}" ] && /etc
/init.d
/ddns stop
>/dev
/null
2>&1
433 # remove services file entries
434 /bin
/sed
-i
'route53-v1/d' $${IPKG_INSTROOT}/etc
/ddns
/services
>/dev
/null
2>&1
435 /bin
/sed
-i
'route53-v1/d' $${IPKG_INSTROOT}/etc
/ddns
/services_ipv6
>/dev
/null
2>&1
436 exit
0 # suppress errors
439 ###### *************************************************************************
440 $(eval
$(call BuildPackage
,ddns-scripts
))
441 $(eval
$(call BuildPackage
,ddns-scripts_cloudflare.com-v4
))
442 $(eval
$(call BuildPackage
,ddns-scripts_freedns_42_pl
))
443 $(eval
$(call BuildPackage
,ddns-scripts_godaddy.com-v1
))
444 $(eval
$(call BuildPackage
,ddns-scripts_no-ip_com
))
445 $(eval
$(call BuildPackage
,ddns-scripts_nsupdate
))
446 $(eval
$(call BuildPackage
,ddns-scripts_route53-v1
))