Commit Graph

245 Commits

Author SHA1 Message Date
Christopher Obbard
5ee205bd31 ddns-scripts: add Hetzner Cloud support
Add a new Hetzner DDNS provider using the Hetzner Cloud API
(api.hetzner.cloud) with Bearer token authentication.

Configuration guide:
* set [domain] to domain
* set [username] to subdomain (without domain)
* set [password] to Bearer API key

Signed-off-by: Christopher Obbard <obbardc@gmail.com>
2026-02-03 08:32:33 +01:00
Lin Fan
1199a40351 ddns-scripts: add namesilo.com
new service provider namesilo.com

config guide:
* set [domain] to apex domain
* set [username] to subdomain (without apex domain)
* set [password] to api key

Signed-off-by: Lin Fan <im.linfan@gmail.com>
2026-01-29 08:31:08 +01:00
Juan Antonio
afd01e3034 ddns-scripts: fix luci XHR timeout when restarting ddns service
Redirect stdout and stderr to /dev/null when starting/restarting the ddns
service in the background. Without this redirection, file descriptors are
inherited by the child process, preventing proper process detachment and
causing luci's XHR requests to timeout.
2026-01-21 08:00:39 +01:00
Andrea Ferro
6265fab8ce ddns-scripts: add ApertoDNS DDNS provider
Add support for ApertoDNS dynamic DNS service with two configuration
options:
- apertodns.com: Standard DynDNS2 compatible authentication (user/pass)
- apertodns.com-token: Token-based authentication for DDNS clients

Both configurations support IPv4 and IPv6 updates via the standard
/nic/update endpoint.

Signed-off-by: Andrea Ferro <support@apertodns.com>
2026-01-12 11:32:11 +01:00
Daniel F. Dickinson
01ac2966f7 ddns-scripts: remove rework of OVH provider
This rework was unneeded, rather the fix in
https://github.com/openwrt/packages/pull/28174 is required to resolve
missing HTTP_AUTH support.

The original issue in https://github.com/openwrt/packages/issues/27526
(unable to update OVH DynHost IP address) was wrongly attributed to a
change on the OVH API. As discussed in
https://github.com/openwrt/packages/issues/28172 the API continues to
work for 24.10.5 system, as well as users using wget-ssl.

The changes in https://github.com/openwrt/packages/pull/27561 and
the followup fix https://github.com/openwrt/packages/pull/27694 add
unnecessary dependencies which are heavier than the actually needed
minimum.

Therefore return the OVH provider to the previous state, and let
https://github.com/openwrt/packages/pull/28174 resolved the issue.

Signed-off-by: Daniel F. Dickinson <dfdpublic@wildtechgarden.ca>
2026-01-07 10:15:39 +01:00
George Sapkin
de64f871b0 treewide: fix spelling and grammar in Makefiles
Fix spelling and grammar in package definitions, configs, comments and
other strings.

Signed-off-by: George Sapkin <george@sapk.in>
2025-12-31 09:12:36 +02:00
Vladimir Tkachev
a13c76304e ddns-scripts: add beget.com api support
The Beget API provider was implemented according to https://beget.com/en/kb/api/dns-administration-functions

Signed-off-by: Vladimir Tkachev <awesome149712@gmail.com>
2025-12-25 18:46:00 +01:00
Brian J. Murrell
63308ab213 ddns-scripts: remove minimum 5 minute wait
To check if the update was successful.

Not all DDNS implementations have such huge latencies updating their services.

nsupdate for example, updates immediately and the update is immediately checkable.

Add new check_interval_min value to be able to set a check interval lower than the
previously hard-coded 5 minutes.

Fixes: #20564

Signed-off-by: Brian J. Murrell <brian@interlinx.bc.ca>
2025-12-17 15:33:59 +01:00
Karol Babioch
11f7c36d68 ddns-scripts: Use parameter-based authentication for he.net
According to [1] Basic Auth seems to be broken since a while for he.net.
The documentation [2] is outdated, and still mentions Basic Auth, but
switching to parameter-based authentication seems to fix the issue.

It also bumps PKG_RELEASE in order to ensure a new version is packaged.

[1]: https://github.com/openwrt/packages/issues/27593
[2]: https://dns.he.net/docs.html

Signed-off-by: Karol Babioch <karol@babioch.de>
2025-11-25 07:43:36 +01:00
Fabian Zimmermann
0201efd635 ddns-script: removes linefeed which causes 401 err
The linefeed at the end causes ovh-api to return 401 even if the
password is correct.

Fixes #27693

Signed-off-by: Fabian Zimmermann <dev.faz@gmail.com>
2025-10-24 09:13:50 +02:00
David Andreoletti
104aabdd5b ddns-scripts: fixed ovh dns record update
OVH changed its API to update DNS records. It now requires HTTP Basic
Authorization header. As such the default ddns-script method to update
the DNS record is failing. The fix is to move DNS record updates into
its own script/package.

Signed-off-by: David Andreoletti <david@andreoletti.net>
2025-10-07 16:32:37 +02:00
Paul Donald
1463d79bdf ddns-scripts: stash the next check time
Calculating the next check time based on the last update time is not
very accurate if the next check is a large multiple forwards from the
last update time because the cumulative sleeps and wake times are not
exact but best effort of the OS. Other factors including clock-drift
give rise to a larger time discrepancy the further the next update is in
the future.

Stash the next check time which should be quite accurate since it's
only one sleep instance away. This is also for use in the GUI.

Tested on 24.10.2

Signed-off-by: Paul Donald <newtwen+github@gmail.com>
2025-09-23 09:12:10 +02:00
Qian Suyao
65a9d7d450 ddns-scripts: fix getting IP address via web in get_current_ip()
Add back the regex searching for valid IP address when getting IP
address via web.

Fixes: 9cdd1a1660 ("ddns-scripts: refactor get_current_ip()")
Signed-off-by: Qian Suyao <qiansuyao@gmail.com>
2025-08-05 08:37:41 +02:00
Alejandro Ojeda Gutiérrez
e1d6d65f30 ddns-scripts: add dondominio.com
Adds support for dondominio.com to the ddns-scripts package.
https://dondominio.dev/en/dondns/docs/api/#usage

Signed-off-by: Alejandro Ojeda Gutiérrez <alejandro@localnet.org.es>
2025-07-25 08:16:35 +02:00
Eric Leung
dadafe3ac9 ddns-scripts: (cloudflare) add support for custom zone ID and DNS record ID
User can (optionally) set zone_id and dns_record_id in param_opt.
This allows round robin DNS setup in Cloudflare.

Signed-off-by: Eric Leung <contact@ericleung.dev>
2025-07-09 09:48:00 +02:00
Shin Rag
e9c1321e8b ddns-scripts: add aliyun.com
Adds support for aliyun.com to the ddns-scripts package.

Signed-off-by: Shin Rag <zhdlcc@gmail.com>
2025-06-26 10:57:42 +02:00
Paul Donald
3f7daf5661 ddns-scripts: bump package release
nothing to say about this

Signed-off-by: Paul Donald <newtwen+github@gmail.com>
2025-06-25 15:40:21 +02:00
Paul Donald
9cdd1a1660 ddns-scripts: refactor get_current_ip()
Remove the awk based ifconfig output handling violence (omg) and instead
use the ip utility and its JSON output: this uses the available
system utility jsonfilter. Much cleaner and less brittle.

This fixes alias interface handling
Fixes issue #24922

Add dep 'ip' (iproute2: ip-tiny, ip-full)

Signed-off-by: Paul Donald <newtwen+github@gmail.com>
2025-06-25 15:40:21 +02:00
Paul Donald
b953ed23f7 ddns-scripts: refactor verify_host_port()
Leverage the resolveip utility - it does the same job that several
different resolvers do for a fraction of the resource usage. This...
to verify a host's connectivity.

resolveip dependency net delta: +2-3Kbytes

Also uses the ddns-scripts built-in 'timeout' function.

Signed-off-by: Paul Donald <newtwen+github@gmail.com>
2025-06-25 15:40:21 +02:00
Liangbin Lian
150d88585b ddns-scripts: fix parsing of parameters for cloudflare.com
Compatible with domain without the `@` symbol, consistent with the previous.

Fixes 8c55d089 ("ddns-scripts: fix parsing of parameters for cloudflare.com")

Signed-off-by: Liangbin Lian <jjm2473@gmail.com>
2025-06-04 13:54:01 +02:00
Liangbin Lian
8c55d089cd ddns-scripts: fix parsing of parameters for cloudflare.com
There is an obvious bug here:
if we want to update example.com.example.com in zone example.com,
so `domain=example.com@example.com`, after parsing,
the `__HOST` will be `example.com`, not expected `example.com.example.com`.

Signed-off-by: Liangbin Lian <jjm2473@gmail.com>
2025-05-27 08:05:06 +02:00
Rikki Vizcarra
1de23c1c12 ddns-script: Change CURL call and redirect output in update_porkbun_v3
This also fixes: https://github.com/openwrt/packages/issues/26181

CURL funciton change was patterned on other ddns update scripts
that uses also JSON request/response payloads similar to
update_digitalocean_v2.sh: 15014f93e1/net/ddns-scripts/files/usr/lib/ddns/update_digitalocean_com_v2.sh (L29)
update_gcp_v1.sh: 15014f93e1/net/ddns-scripts/files/usr/lib/ddns/update_gcp_v1.sh (L212)

rebased and bumbped ddns-script version

Signed-off-by: Rikki Vizcarra <rikki.vizcarra@gmail.com>
2025-04-20 22:10:44 +02:00
Paul Donald
bed8c8ae33 ddns-scripts: bump package release
Signed-off-by: Paul Donald <newtwen+github@gmail.com>
2025-04-18 18:06:14 +02:00
Paul Donald
15014f93e1 ddns-scripts: correct bump release
Signed-off-by: Paul Donald <newtwen+github@gmail.com>
2025-04-11 08:37:57 +02:00
Paul Donald
32de15820b ddns-scripts: bump PKG_RELEASE
Signed-off-by: Paul Donald <newtwen+github@gmail.com>
2025-04-10 09:34:38 +02:00
Florian Eckert
ea285eb460 ddns-scripts: always use the 'ps' output from busybox
The 'ps' command from 'procps-ng' is used in favour of 'ps' from 'busybox'
when 'procps-ng' is installed. The problem is that the outputs are not
compatible and the ‘grep’ is different for further processing. To fix this,
always use the 'ps' command from 'busybox'.

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2025-04-01 15:40:58 +02:00
Robert Marko
83b0c8e27d ddns-scripts: fix ddns-scripts-scaleway description
ddns-scripts-scaleway description section was not defined as such and was
overriding the package definition leading to:
Makefile:839: *** missing separator.  Stop.

Fixes: a7867016c8 ("ddns-scripts: add support for Scaleway DNS")
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-04-01 11:31:13 +02:00
Lars Kaiser
4e41a1c8f8 ddns-scripts: fix typo in package name
Signed-off-by: Lars Kaiser <lars@kaiser.yt>
2025-04-01 08:57:10 +02:00
Lars Kaiser
a7867016c8 ddns-scripts: add support for Scaleway DNS
Signed-off-by: Lars Kaiser <lars@kaiser.yt>
2025-04-01 08:57:10 +02:00
Lehua Zhang
bb4861efb1 ddns-scripts: Fixup huaweicloud
Script will exit when an error occurred.

Modify write_log 14 to write_log 4,
write_log 14 and write_log 4 can also print the same message,
but write_log 14 will exist script when printed.

Signed-off-by: Lehua Zhang <sxlehua@qq.com>
2025-03-04 10:32:34 +01:00
Dimitri Souza
65cbccfded ddns-scripts: Add option 'myip=no' to Dynu IPv6 update URL
Prevents IPv6 updates to also update IPv4 (undesirable when behind a CGNAT)

Signed-off-by: Dimitri Souza <dimitri.souza@gmail.com>
2025-02-21 08:17:08 +01:00
Bei Lin
0a2746c6d6 ddns-scripts: Accept 'good|nochg' for IPv4/IPv6 in ydns.io.json
Signed-off-by: Bei Lin <UVOEOO8@outlook.com>
2025-02-19 15:06:05 +01:00
FriesI23 Qin
f02a1df129 ddns-script: add retry_max_count's upgrade script
Signed-off-by: FriesI23 Qin <FriesI23@outlook.com>
2025-02-13 13:31:53 +01:00
ACI0419
1c1125a47e ddns-scripts: add ydns.io provider 2025-02-06 18:03:44 +01:00
Adam Beck
1302e503a3 ddns-scripts: add type field for digitalocean API
DigitalOcean API requires a "type" JSON field to update a DNS
record. This adds that while checking for IPv6 to change which
record type to use. Without it, the API call fails, making
the script unable to update the DNS records for DigitalOcean.

Signed-off-by: Adam Beck <subcursion@gmail.com>
2025-02-04 16:27:16 +01:00
Coia Prant
9cd00fb191 ddns-scripts: get l3 device for bind network using curl
If pppoe is used for wan access. script set 'eth1' as interface for curl
call. The correct interface is however 'pppoe-wan'.

These scripts use 'network_get_physdev' function to get real device for
bind_network but this is wrong. We need instead the l3_device of the the
logical interface.

In case if we don't use pppoe connection - 'l3_device' is equal to real device.

Follow P/R:
 #14431

Signed-off-by: Coia Prant <coiaprant@gmail.com>
2025-01-24 12:57:45 +01:00
FriesI23 Qin
0dceb9d0f1 ddns-scripts: Fixup dnspod.cn-v3
Migrate retry_count to retry_max_count in the script to fix infinite retry loop.

Signed-off-by: FriesI23 Qin <FriesI23@outlook.com>
2025-01-22 11:21:46 +01:00
FriesI23 Qin
9d5da216c9 ddns-scripts: Fixup dnspod.cn-v3
Fix signature expiration issue during retries.

Signed-off-by: FriesI23 Qin <FriesI23@outlook.com>
2025-01-22 11:21:46 +01:00
Gedalya Nie
0a98b6d0ed ddns-scripts: cloudflare: use PATCH method, minimize changes
Using the PUT method recreates the DNS record with and only with
the newly provided data. This seems unnecessary. In particular,
we don't need to hardcode a TTL of 120. Any existing comment
would be lost too.

The only detail we need to change is the IP address. Leave everything
else as it was.

Signed-off-by: Gedalya Nie <gedalya@gedalya.net>
2025-01-15 08:49:24 +01:00
FriesI23 Qin
c1f247d5c2 ddns-scripts: Add dnspod.cn-v3
Signed-off-by: FriesI23 Qin <FriesI23@outlook.com>
2025-01-10 14:38:13 +01:00
Hui Zhui
da4e27063c ddns-scripts: add support for ipv64.net
Adds ipv64.net service as DDNS provider

Docs: https://ipv64.net/dyndns_updater_api
Signed-off-by: Hui Zhui <barsikus07@gmail.com>
2025-01-10 13:18:23 +01:00
Benjamin Frank
ce4b32edee ddns-scripts: support IPv6 for joker.com
The existing endpoint can handle IPv6 addresses as well.
2025-01-08 12:12:29 +01:00
Hannu Nyman
b74ca8feb2 ddns-scripts: Adjust descriptions in Makefile for apk
Having both double quotes and parentheses in package
description may lead into troublewith apk, if parentheses
are located so that they get passed "outside" the quoted
parameter, and get interpreted as a token for shell.

Example:
 ash: -c: line 1: syntax error near unexpected token `('
 bash: -c: line 1: `/OpenWrt/e8450/staging_dir/host/bin/fakeroot
 /OpenWrt/e8450/staging_dir/host/bin/apk mkpkg --info "name:ddns
 -scripts-pdns" --info "version:2.8.2-r51" --info "description:D
 ynamic DNS Client scripts extension for "PowerDNS" via API. It
 requires: "option param_opt(Optional Parameter)" to be a valid

Avoid that by using single quotes in the detailed descriptions.

Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
2024-11-10 13:45:55 +02:00
Xiaolong Zhang
b962029fa8 ddns-scripts: add colon char in DNS_CHARSET
The IPv6 address is separated by ':' instead of '.', so we need to add
':' in DNS_CHARSET.

See: 'https://github.com/openwrt/packages/issues/25051'

Fixes: #25051

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
* bump PKG_RELEASE
* update commit message

Signed-off-by: Xiaolong Zhang <xliilQwQ@outlook.com>
2024-11-07 08:11:03 +01:00
Dillon Dixon
b3d9e90942 ddns-scripts: porkbun bugfix for subdomain on A/AAAA record
If the "name" parameter is not provided, then updates to a subdomain
A/AAAA record result in the subdomain being removed from the record.
This change always provides the "name" parameter to correct that behavior.

Signed-off-by: Dillon Dixon <github@dillon.io>
2024-10-30 10:37:49 +01:00
Lehua Zhang
9e86e22808 ddns-scripts: add ddns-scripts for huaweicloud
Signed-off-by: Lehua Zhang <sxlehua@qq.com>
2024-10-15 09:13:52 +02:00
Florian Eckert
d9cc0e1cd4 ddns-scripts: fix update_porkbun_v3 shell syntax
The closing bracket was forgotten in a function.

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2024-09-25 16:36:22 +02:00
Ansel Horn
5f5e6cd179 ddns-scripts: add support for Porkbun
Extends DDNS support for the Porkbun v3 JSON API with a custom update
script and service configuration.

See: https://porkbun.com/api/json/v3/documentation

Depends on cURL (with SSL) for transport. Porkbun authentication API keys
and secret keys are passed through the ddns-scripts "username" and
"password" variables, respectively. As Porkbun DNS is currently backed by
Cloudflare, also support ddns-scripts "rec_id" variable for specific
record targeting.

Signed-off-by: Ansel Horn <dev@cahorn.net>
2024-08-22 16:02:59 +02:00
Karol Kolacinski
33ecb97bc3 ddns-scripts: Add IPv6 and https for OVH
ovh.com supports https and IPv6 since March 2024.
New API operates under domain dns.eu.ovhapis.com
Add IPv6 support, use https and updated domain for ovh.com.

Signed-off-by: Karol Kolacinski <kolacinskikarol@live.com>
2024-08-22 08:26:28 +02:00
Denis Shulyaka
ebeae334d9 ddns-scripts: Update knot resolver regexp
The output format of `khost` has changed. This commit fixes the regexp
for IPv4. It fixes the issue of using a custom DNS to resolve current
address.

```bash
root@localhost:~# khost ns2.afraid.org
ns2.afraid.org. has IPv4 address 69.65.50.223
ns2.afraid.org. has IPv6 address 2001:1850:1:5:800::6b
Host ns2.afraid.org. has no MX record
root@localhost:~# khost --version
khost (Knot DNS), version 3.3.5
```

Signed-off-by: Denis Shulyaka <Shulyaka@gmail.com>
2024-07-17 13:44:36 +03:00