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
15 include $(INCLUDE_DIR
)/package.mk
17 define Package
/ddns-scripts
/Default
20 SUBMENU
:=IP Addresses and Names
25 define Package
/ddns-scripts
26 $(call Package
/ddns-scripts
/Default
)
27 TITLE
:=Dynamic DNS Client scripts
(with IPv6 support
)
28 DEPENDS
:=+ddns-scripts-services
31 define Package
/ddns-scripts
/description
32 Dynamic DNS Client scripts
(with IPv6 support
)
33 A highly configurable set of scripts for doing dynamic dns updates.
36 - Glue Record support
(require BIND host or KNOT host
)
37 - DNS requests via TCP
38 - Proxy server support
41 Version
: $(PKG_VERSION
)-$(PKG_RELEASE
)
42 Info
: https
://openwrt.org
/docs
/guide-user
/services
/ddns
/client
45 define Package
/ddns-scripts
/conffiles
50 define Package
/ddns-scripts-services
51 $(call Package
/ddns-scripts
/Default
)
52 TITLE
:=Common ddns providers
53 PROVIDES
:=ddns-scripts_service
56 define Package
/ddns-scripts-services
/description
57 Dynamic DNS Client definitions for supported services
61 define Package
/ddns-scripts-luadns
62 $(call Package
/ddns-scripts
/Default
)
63 TITLE
:=Extension for LuaDNS API v1
64 DEPENDS
:=ddns-scripts
+curl
67 define Package
/ddns-scripts-luadns
/description
68 Dynamic DNS Client scripts extension for LuaDNS API v1
(require curl
)
71 define Package
/ddns-scripts-cloudflare
72 $(call Package
/ddns-scripts
/Default
)
73 TITLE
:=Extension for cloudflare.com API v4
74 DEPENDS
:=ddns-scripts
+curl
75 PROVIDES
:=ddns-scripts_cloudflare.com-v4
78 define Package
/ddns-scripts-cloudflare
/description
79 Dynamic DNS Client scripts extension for cloudflare.com API v4
(require curl
)
83 define Package
/ddns-scripts-gcp
84 $(call Package
/ddns-scripts
/Default
)
85 TITLE
:=Extension for Google Cloud DNS API v1
86 DEPENDS
:=ddns-scripts
+curl
+openssl-util
89 define Package
/ddns-scripts-gcp
/description
90 Dynamic DNS Client scripts extension for Google Cloud DNS API v1
(requires curl
)
94 define Package
/ddns-scripts-freedns
95 $(call Package
/ddns-scripts
/Default
)
96 TITLE
:=Extension for freedns
.42.pl
97 DEPENDS
:=ddns-scripts
+curl
98 PROVIDES
:=ddns-scripts_freedns_42_pl
101 define Package
/ddns-scripts-freedns
/description
102 Dynamic DNS Client scripts extension for
"freedns.42.pl".
106 define Package
/ddns-scripts-godaddy
107 $(call Package
/ddns-scripts
/Default
)
108 TITLE
:=Extension for godaddy.com API v1
109 DEPENDS
:=ddns-scripts
+curl
110 PROVIDES
:=ddns-scripts_godaddy.com-v1
113 define Package
/ddns-scripts-godaddy
/description
114 Dynamic DNS Client scripts extension for
"godaddy.com API v1".
118 define Package
/ddns-scripts-digitalocean
119 $(call Package
/ddns-scripts
/Default
)
120 TITLE
:=Extention for digitalocean.com API v2
121 DEPENDS
:=ddns-scripts
+curl
122 PROVIDES
:=ddns-scripts_digitalocean.com-v2
125 define Package
/ddns-scripts-digitalocean
/description
126 Dynamic DNS Client scripts extension for
"digitalocean.com API v2".
127 The script directly updates a DNS record using the DO API.
129 "option dns_server" to be set to the server to be used by nsupdate.
130 "option domain" the dns domain to update the record for
(eg. A-record
: home.
<example.com
>)
131 "option username" the dns record name to update
(eg. A-record
: <home
>.example.com
)
132 "option param_opt" the id of the dns record to update
(check using chrome inspector in the DO dns tab
)
133 "option password" the api token generated in the DO panel
137 define Package
/ddns-scripts-dnspod
138 $(call Package
/ddns-scripts
/Default
)
139 TITLE
:=Extension for dnspod.cn API
140 DEPENDS
:=ddns-scripts
+curl
143 define Package
/ddns-scripts-dnspod
/description
144 Dynamic DNS Client scripts extension for dnspod.cn API
(require curl
)
148 define Package
/ddns-scripts-noip
149 $(call Package
/ddns-scripts
/Default
)
150 TITLE
:=Extension for no-ip.com
151 DEPENDS
:=ddns-scripts
152 PROVIDES
:=ddns-scripts_no-ip_com
155 define Package
/ddns-scripts-noip
/description
156 Dynamic DNS Client scripts extension for
"no-ip.com".
159 define Package
/ddns-scripts-ns1
160 $(call Package
/ddns-scripts
/Default
)
162 DEPENDS
:=ddns-scripts
+curl
165 define Package
/ddns-scripts-ns1
/description
166 Dynamic DNS Client scripts extension for
"ns1.com".
168 "option username" to be a valid zone for ns1.com
169 "option password" to be a valid API key for ns1.com
173 define Package
/ddns-scripts-nsupdate
174 $(call Package
/ddns-scripts
/Default
)
175 TITLE
:=Extension for using bind nsupdate.
176 DEPENDS
:=ddns-scripts
+bind-client
177 PROVIDES
:=ddns-scripts_nsupdate
180 define Package
/ddns-scripts-nsupdate
/description
181 Dynamic DNS Client scripts extension for direct updates using bind nsupdate
182 The script directly updates a PowerDNS
(or maybe bind server
) via nsupdate
183 from bind-client package.
185 "option dns_server" to be set to the server to be used by nsupdate.
186 "option username" should be set to the key name and
187 "option password" to the base64 encoded shared secret.
191 define Package
/ddns-scripts-route53
192 $(call Package
/ddns-scripts
/Default
)
193 TITLE
:=Extension for route53 API v1
194 DEPENDS
:=ddns-scripts
+curl
+openssl-util
195 PROVIDES
:=ddns-scripts_route53-v1
198 define Package
/ddns-scripts-route53
/description
199 Dynamic DNS Client scripts extension for Amazon AWS
"route53 API v1".
200 Note
: You must also
install ca-certificate or ca-bundle.
202 "option username" to be a valid AWS access key id
203 "option password" to be the matching AWS secret key id
204 "option domain" to contain the hosted zone ID
208 define Package
/ddns-scripts-cnkuai
209 $(call Package
/ddns-scripts
/Default
)
211 DEPENDS
:=ddns-scripts
+curl
+giflib-utils
212 PROVIDES
:=ddns-scripts_cnkuai_cn
215 define Package
/ddns-scripts-cnkuai
/description
216 Dynamic DNS Client scripts extension for
"cnkuai.cn".
218 "option username" to be a valid CnKuai control panel id
219 "option password" to be the matching CnKuai control panel password
220 "option domain" to contain the domain
224 define Package
/ddns-scripts-gandi
225 $(call Package
/ddns-scripts
/Default
)
227 DEPENDS
:=ddns-scripts
+curl
230 define Package
/ddns-scripts-gandi
/description
231 Dynamic DNS Client scripts extension for
"gandi.net".
233 "option username" to be a valid subdomain for gandi.net
234 "option password" to be a valid API key for gandi.net
238 define Package
/ddns-scripts-pdns
239 $(call Package
/ddns-scripts
/Default
)
241 DEPENDS
:=ddns-scripts
+curl
244 define Package
/ddns-scripts-pdns
/description
245 Dynamic DNS Client scripts extension for
"PowerDNS" via API.
247 "option param_opt(Optional Parameter)" to be a valid root URL for the PowerDNS webserver
248 "option username" to be a valid subdomain for the PowerDNS domain
249 "option password" to be a valid API key for the PowerDNS webserver
253 define Package
/ddns-scripts-transip
254 $(call Package
/ddns-scripts
/Default
)
255 TITLE
:=Extension for TransIP API
256 DEPENDS
:=ddns-scripts
+curl
+openssl-util
+!BUSYBOX_CONFIG_MKTEMP
:coreutils-mktemp
259 define Package
/ddns-scripts-transip
/description
260 Dynamic DNS Client scripts extension for
"transip.nl".
261 Note
: You must also
install ca-certificate or ca-bundle.
263 "option username" to be a valid username for transip.nl
264 "option password" to be a valid matching private key
265 "option domain" to contain the base domain
266 "option param_enc" to contain the name of the DNS record to update
267 "option param_opt" to contain the TTL of the DNS record to update
270 define Package
/ddns-scripts-one
271 $(call Package
/ddns-scripts
/Default
)
272 TITLE
:=Extension for one.com Control Panel
273 DEPENDS
:=ddns-scripts
+curl
276 define Package
/ddns-scrtips-one
/description
277 Dynamic DNS Client scripts extension for
"one.com".
279 "option username" to be a valid Email for one.com Control Panel
280 "option password" to be the matching one.com Control Panel password
281 "option domain" to contain the domain
/ subdomain
285 define Build
/Configure
292 define Package
/ddns-scripts
/install
293 $(INSTALL_DIR
) $(1)/etc
/hotplug.d
/iface
294 $(INSTALL_DATA
) .
/files
/etc
/hotplug.d
/iface
/ddns \
295 $(1)/etc
/hotplug.d
/iface
/95-ddns
297 $(INSTALL_DIR
) $(1)/etc
/init.d
298 $(INSTALL_BIN
) .
/files
/etc
/init.d
/ddns \
301 $(INSTALL_DIR
) $(1)/etc
/config
302 $(INSTALL_CONF
) .
/files
/etc
/config
/ddns \
305 $(INSTALL_DIR
) $(1)/usr
/share
/ddns
306 echo
"$(PKG_VERSION)-$(PKG_RELEASE)" > $(1)/usr
/share
/ddns
/version
308 $(INSTALL_DIR
) $(1)/usr
/lib
/ddns
309 $(INSTALL_DATA
) .
/files
/usr
/lib
/ddns
/dynamic_dns_functions.sh \
311 $(INSTALL_BIN
) .
/files
/usr
/lib
/ddns
/dynamic_dns_lucihelper.sh \
313 $(INSTALL_BIN
) .
/files
/usr
/lib
/ddns
/dynamic_dns_updater.sh \
316 $(INSTALL_DIR
) $(1)/usr
/bin
317 $(INSTALL_BIN
) .
/files
/usr
/bin
/ddns.sh \
321 define Package
/ddns-scripts
/postinst
323 if
[ -z
"$${IPKG_INSTROOT}" ]; then
324 /etc
/init.d
/ddns enabled
325 /etc
/init.d
/ddns start
330 define Package
/ddns-scripts
/prerm
332 if
[ -n
"$${IPKG_INSTROOT}" ]; then
333 /etc
/init.d
/ddns stop
334 /etc
/init.d
/ddns disable
340 define Package
/ddns-scripts-services
/install
341 $(INSTALL_DIR
) $(1)/usr
/share
/ddns
/default
342 $(INSTALL_DATA
) .
/files
/usr
/share
/ddns
/default
/* \
343 $(1)/usr
/share
/ddns
/default
345 # Remove special services
346 rm $(1)/usr
/share
/ddns
/default
/luadns.com-v1.json
347 rm $(1)/usr
/share
/ddns
/default
/cloudflare.com-v4.json
348 rm $(1)/usr
/share
/ddns
/default
/cloud.google.com-v1.json
349 rm $(1)/usr
/share
/ddns
/default
/freedns
.42.pl.json
350 rm $(1)/usr
/share
/ddns
/default
/godaddy.com-v1.json
351 rm $(1)/usr
/share
/ddns
/default
/digitalocean.com-v2.json
352 rm $(1)/usr
/share
/ddns
/default
/dnspod.cn.json
353 rm $(1)/usr
/share
/ddns
/default
/no-ip.com.json
354 rm $(1)/usr
/share
/ddns
/default
/bind-nsupdate.json
355 rm $(1)/usr
/share
/ddns
/default
/route53-v1.json
356 rm $(1)/usr
/share
/ddns
/default
/cnkuai.cn.json
357 rm $(1)/usr
/share
/ddns
/default
/gandi.net.json
358 rm $(1)/usr
/share
/ddns
/default
/pdns.json
359 rm $(1)/usr
/share
/ddns
/default
/transip.nl.json
360 rm $(1)/usr
/share
/ddns
/default
/ns1.com.json
361 rm $(1)/usr
/share
/ddns
/default
/one.com.json
365 define Package
/ddns-scripts-luadns
/install
366 $(INSTALL_DIR
) $(1)/usr
/lib
/ddns
367 $(INSTALL_BIN
) .
/files
/usr
/lib
/ddns
/update_luadns_v1.sh \
370 $(INSTALL_DIR
) $(1)/usr
/share
/ddns
/default
371 $(INSTALL_DATA
) .
/files
/usr
/share
/ddns
/default
/luadns.com-v1.json \
372 $(1)/usr
/share
/ddns
/default
/
375 define Package
/ddns-scripts-luadns
/prerm
377 if
[ -z
"$${IPKG_INSTROOT}" ]; then
378 /etc
/init.d
/ddns stop
384 define Package
/ddns-scripts-cloudflare
/install
385 $(INSTALL_DIR
) $(1)/usr
/lib
/ddns
386 $(INSTALL_BIN
) .
/files
/usr
/lib
/ddns
/update_cloudflare_com_v4.sh \
389 $(INSTALL_DIR
) $(1)/usr
/share
/ddns
/default
390 $(INSTALL_DATA
) .
/files
/usr
/share
/ddns
/default
/cloudflare.com-v4.json \
391 $(1)/usr
/share
/ddns
/default
/
394 define Package
/ddns-scripts-cloudflare
/prerm
396 if
[ -z
"$${IPKG_INSTROOT}" ]; then
397 /etc
/init.d
/ddns stop
403 define Package
/ddns-scripts-gcp
/install
404 $(INSTALL_DIR
) $(1)/usr
/lib
/ddns
405 $(INSTALL_BIN
) .
/files
/usr
/lib
/ddns
/update_gcp_v1.sh \
408 $(INSTALL_DIR
) $(1)/usr
/share
/ddns
/default
409 $(INSTALL_DATA
) .
/files
/usr
/share
/ddns
/default
/cloud.google.com-v1.json \
410 $(1)/usr
/share
/ddns
/default
/
413 define Package
/ddns-scripts-gcp
/prerm
415 if
[ -z
"$${IPKG_INSTROOT}" ]; then
416 /etc
/init.d
/ddns stop
422 define Package
/ddns-scripts-freedns
/install
423 $(INSTALL_DIR
) $(1)/usr
/lib
/ddns
424 $(INSTALL_BIN
) .
/files
/usr
/lib
/ddns
/update_freedns_42_pl.sh \
427 $(INSTALL_DIR
) $(1)/usr
/share
/ddns
/default
428 $(INSTALL_DATA
) .
/files
/usr
/share
/ddns
/default
/freedns
.42.pl.json \
429 $(1)/usr
/share
/ddns
/default
432 define Package
/ddns-scripts-freedns
/prerm
434 if
[ -z
"$${IPKG_INSTROOT}" ]; then
435 /etc
/init.d
/ddns stop
441 define Package
/ddns-scripts-godaddy
/install
442 $(INSTALL_DIR
) $(1)/usr
/lib
/ddns
443 $(INSTALL_BIN
) .
/files
/usr
/lib
/ddns
/update_godaddy_com_v1.sh \
446 $(INSTALL_DIR
) $(1)/usr
/share
/ddns
/default
447 $(INSTALL_DATA
) .
/files
/usr
/share
/ddns
/default
/godaddy.com-v1.json \
448 $(1)/usr
/share
/ddns
/default
451 define Package
/ddns-scripts-godaddy
/prerm
453 if
[ -z
"$${IPKG_INSTROOT}" ]; then
454 /etc
/init.d
/ddns stop
460 define Package
/ddns-scripts-digitalocean
/install
461 $(INSTALL_DIR
) $(1)/usr
/lib
/ddns
462 $(INSTALL_BIN
) .
/files
/usr
/lib
/ddns
/update_digitalocean_com_v2.sh \
465 $(INSTALL_DIR
) $(1)/usr
/share
/ddns
/default
466 $(INSTALL_DATA
) .
/files
/usr
/share
/ddns
/default
/digitalocean.com-v2.json \
467 $(1)/usr
/share
/ddns
/default
470 define Package
/ddns-scripts-digitalocean
/prerm
472 if
[ -z
"$${IPKG_INSTROOT}" ]; then
473 /etc
/init.d
/ddns stop
479 define Package
/ddns-scripts-dnspod
/install
480 $(INSTALL_DIR
) $(1)/usr
/lib
/ddns
481 $(INSTALL_BIN
) .
/files
/usr
/lib
/ddns
/update_dnspod_cn.sh \
484 $(INSTALL_DIR
) $(1)/usr
/share
/ddns
/default
485 $(INSTALL_DATA
) .
/files
/usr
/share
/ddns
/default
/dnspod.cn.json \
486 $(1)/usr
/share
/ddns
/default
/
489 define Package
/ddns-scripts-dnspod
/prerm
491 if
[ -z
"$${IPKG_INSTROOT}" ]; then
492 /etc
/init.d
/ddns stop
498 define Package
/ddns-scripts-noip
/install
499 $(INSTALL_DIR
) $(1)/usr
/lib
/ddns
500 $(INSTALL_BIN
) .
/files
/usr
/lib
/ddns
/update_no-ip_com.sh \
503 $(INSTALL_DIR
) $(1)/usr
/share
/ddns
/default
504 $(INSTALL_DATA
) .
/files
/usr
/share
/ddns
/default
/no-ip.com.json \
505 $(1)/usr
/share
/ddns
/default
508 define Package
/ddns-scripts-noip
/prerm
510 if
[ -z
"$${IPKG_INSTROOT}" ]; then
511 /etc
/init.d
/ddns stop
517 define Package
/ddns-scripts-ns1
/install
518 $(INSTALL_DIR
) $(1)/usr
/lib
/ddns
519 $(INSTALL_BIN
) .
/files
/usr
/lib
/ddns
/update_ns1_com.sh \
522 $(INSTALL_DIR
) $(1)/usr
/share
/ddns
/default
523 $(INSTALL_DATA
) .
/files
/usr
/share
/ddns
/default
/ns1.com.json \
524 $(1)/usr
/share
/ddns
/default
527 define Package
/ddns-scripts-ns1
/prerm
529 if
[ -z
"$${IPKG_INSTROOT}" ]; then
530 /etc
/init.d
/ddns stop
536 define Package
/ddns-scripts-nsupdate
/install
537 $(INSTALL_DIR
) $(1)/usr
/lib
/ddns
538 $(INSTALL_BIN
) .
/files
/usr
/lib
/ddns
/update_nsupdate.sh \
541 $(INSTALL_DIR
) $(1)/usr
/share
/ddns
/default
542 $(INSTALL_DATA
) .
/files
/usr
/share
/ddns
/default
/bind-nsupdate.json \
543 $(1)/usr
/share
/ddns
/default
546 define Package
/ddns-scripts-nsupdate
/prerm
548 if
[ -z
"$${IPKG_INSTROOT}" ]; then
549 /etc
/init.d
/ddns stop
555 define Package
/ddns-scripts-route53
/install
556 $(INSTALL_DIR
) $(1)/usr
/lib
/ddns
557 $(INSTALL_BIN
) .
/files
/usr
/lib
/ddns
/update_route53_v1.sh \
560 $(INSTALL_DIR
) $(1)/usr
/share
/ddns
/default
561 $(INSTALL_DATA
) .
/files
/usr
/share
/ddns
/default
/route53-v1.json \
562 $(1)/usr
/share
/ddns
/default
565 define Package
/ddns-scripts-route53
/prerm
567 if
[ -z
"$${IPKG_INSTROOT}" ]; then
568 /etc
/init.d
/ddns stop
574 define Package
/ddns-scripts-cnkuai
/install
575 $(INSTALL_DIR
) $(1)/usr
/lib
/ddns
576 $(INSTALL_BIN
) .
/files
/usr
/lib
/ddns
/update_cnkuai_cn.sh \
579 $(INSTALL_DIR
) $(1)/usr
/share
/ddns
/default
580 $(INSTALL_DATA
) .
/files
/usr
/share
/ddns
/default
/cnkuai.cn.json \
581 $(1)/usr
/share
/ddns
/default
584 define Package
/ddns-scripts-cnkuai
/prerm
586 if
[ -z
"$${IPKG_INSTROOT}" ]; then
587 /etc
/init.d
/ddns stop
593 define Package
/ddns-scripts-gandi
/install
594 $(INSTALL_DIR
) $(1)/usr
/lib
/ddns
595 $(INSTALL_BIN
) .
/files
/usr
/lib
/ddns
/update_gandi_net.sh \
598 $(INSTALL_DIR
) $(1)/usr
/share
/ddns
/default
599 $(INSTALL_DATA
) .
/files
/usr
/share
/ddns
/default
/gandi.net.json \
600 $(1)/usr
/share
/ddns
/default
603 define Package
/ddns-scripts-gandi
/prerm
605 if
[ -z
"$${IPKG_INSTROOT}" ]; then
606 /etc
/init.d
/ddns stop
612 define Package
/ddns-scripts-pdns
/install
613 $(INSTALL_DIR
) $(1)/usr
/lib
/ddns
614 $(INSTALL_BIN
) .
/files
/usr
/lib
/ddns
/update_pdns.sh \
617 $(INSTALL_DIR
) $(1)/usr
/share
/ddns
/default
618 $(INSTALL_DATA
) .
/files
/usr
/share
/ddns
/default
/pdns.json \
619 $(1)/usr
/share
/ddns
/default
622 define Package
/ddns-scripts-pdns
/prerm
624 if
[ -z
"$${IPKG_INSTROOT}" ]; then
625 /etc
/init.d
/ddns stop
631 define Package
/ddns-scripts-transip
/install
632 $(INSTALL_DIR
) $(1)/usr
/lib
/ddns
633 $(INSTALL_BIN
) .
/files
/usr
/lib
/ddns
/update_transip_nl.sh \
636 $(INSTALL_DIR
) $(1)/usr
/share
/ddns
/default
637 $(INSTALL_DATA
) .
/files
/usr
/share
/ddns
/default
/transip.nl.json \
638 $(1)/usr
/share
/ddns
/default
641 define Package
/ddns-scripts-transip
/prerm
643 if
[ -z
"$${IPKG_INSTROOT}" ]; then
644 /etc
/init.d
/ddns stop
650 define Package
/ddns-scripts-one
/install
651 $(INSTALL_DIR
) $(1)/usr
/lib
/ddns
652 $(INSTALL_BIN
) .
/files
/usr
/lib
/ddns
/update_one_com.sh \
655 $(INSTALL_DIR
) $(1)/usr
/share
/ddns
/default
656 $(INSTALL_DATA
) .
/files
/usr
/share
/ddns
/default
/one.com.json \
657 $(1)/usr
/share
/ddns
/default
660 define Package
/ddns-scripts-one
/prerm
662 if
[-z
"${IPKG_INSTROOT}" ]; then
663 /etc
/init.d
/ddns stop
669 $(eval
$(call BuildPackage
,ddns-scripts
))
670 $(eval
$(call BuildPackage
,ddns-scripts-services
))
671 $(eval
$(call BuildPackage
,ddns-scripts-luadns
))
672 $(eval
$(call BuildPackage
,ddns-scripts-cloudflare
))
673 $(eval
$(call BuildPackage
,ddns-scripts-gcp
))
674 $(eval
$(call BuildPackage
,ddns-scripts-freedns
))
675 $(eval
$(call BuildPackage
,ddns-scripts-godaddy
))
676 $(eval
$(call BuildPackage
,ddns-scripts-digitalocean
))
677 $(eval
$(call BuildPackage
,ddns-scripts-dnspod
))
678 $(eval
$(call BuildPackage
,ddns-scripts-noip
))
679 $(eval
$(call BuildPackage
,ddns-scripts-nsupdate
))
680 $(eval
$(call BuildPackage
,ddns-scripts-route53
))
681 $(eval
$(call BuildPackage
,ddns-scripts-cnkuai
))
682 $(eval
$(call BuildPackage
,ddns-scripts-gandi
))
683 $(eval
$(call BuildPackage
,ddns-scripts-pdns
))
684 $(eval
$(call BuildPackage
,ddns-scripts-transip
))
685 $(eval
$(call BuildPackage
,ddns-scripts-ns1
))
686 $(eval
$(call BuildPackage
,ddns-scripts-one
))