<feed xmlns='http://www.w3.org/2005/Atom'>
<title>packages/net/ddns-scripts, branch master</title>
<subtitle>Mirror of packages feed</subtitle>
<id>https://git.openwrt.org/feed/packages/atom?h=master</id>
<link rel='self' href='https://git.openwrt.org/feed/packages/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/feed/packages/'/>
<updated>2026-09-07T10:11:58Z</updated>
<entry>
<title>ddns-scripts: update hotplug script</title>
<updated>2026-09-07T10:11:58Z</updated>
<author>
<name>Jimmy Qin</name>
</author>
<published>2026-02-13T19:25:40Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/feed/packages/commit/?id=889e13400748cf739fcb1a04b7e573de7370b35d'/>
<id>urn:sha1:889e13400748cf739fcb1a04b7e573de7370b35d</id>
<content type='text'>
To handle ip address changing by ifupdate.
When the ipv6 address is updated for an interface
(some ISP only give dynamic ipv6 address).
The ddns script will go into dead loop,
as the new ipv6 address is not used.
The simple change is restarting ddns when ip address is changed.

Signed-off-by: Jimmy Qin &lt;sunnyqeen@gmail.com&gt;
</content>
</entry>
<entry>
<title>ddns-scripts: add gandi pat support</title>
<updated>2026-09-01T06:26:59Z</updated>
<author>
<name>Keith T. Garner</name>
</author>
<published>2026-08-11T19:17:59Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/feed/packages/commit/?id=413aa843b066dd0314c6ab36449fc5638285a94e'/>
<id>urn:sha1:413aa843b066dd0314c6ab36449fc5638285a94e</id>
<content type='text'>
Gandi has deprecated Api Key for authentication and replaced it with
Personal Access Tokens. This adds a v2 gandi package containing a script
using the new authentication scheme while keeping the old version intact
for any existing API Key users. Additionally, it documents the old
version as deprecated and points users to v2.

Signed-off-by: Keith T. Garner &lt;kgarner@kgarner.com&gt;
</content>
</entry>
<entry>
<title>ddns-scripts: fix root command injection through ddns_dateformat</title>
<updated>2026-07-30T09:43:04Z</updated>
<author>
<name>Hauke Mehrtens</name>
</author>
<published>2026-07-26T16:08:10Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/feed/packages/commit/?id=7364629d70df51f2f618a867e901151b6764ee5d'/>
<id>urn:sha1:7364629d70df51f2f618a867e901151b6764ee5d</id>
<content type='text'>
The date format read from the UCI option ddns.global.ddns_dateformat was
embedded into a command string that is later executed through "eval", both
for the recurring log timestamps

  DATE_PROG="date +'$ddns_dateformat'"
  ...
  write_log 5 "PID '$$' started at $(eval $DATE_PROG)"

and for the "last update" timestamp in the updater

  EPOCH_TIME="date -d @$EPOCH_TIME +'$ddns_dateformat'"
  write_log 7 "last update: $(eval $EPOCH_TIME)"

The value is only wrapped in single quotes, so a single quote inside it
closes that quote and starts a new shell word. A user who can write the ddns
configuration - a delegated DDNS operator who was never granted shell access
- can set

  ddns_dateformat="%F'; touch /tmp/pwned; '"

and have arbitrary commands run as root, because the updater runs as root.
The injection triggers on the next start of the updater, so in practice on
the next reconfiguration or reboot.

Stop building shell code from the option. Provide date_prog() as an ordinary
shell function and pass the format as a single quoted argument in both
places, which leaves no way for its content to be interpreted by the shell.
The remaining use of ddns_dateformat in dynamic_dns_updater.sh, for
NEXT_CHECK_TIME, already substituted it as a quoted argument without eval
and was not affected.

luci-app-ddns consumes the same option and is fixed separately in the LuCI
repository.

Reported-by: Matthew Hickey (Hacker Fantastic, https://hacker.house)
Fixes: 1c20dcb71a69 ("ddns-scripts: update to 2.7.6-1")
Assisted-by: Claude:claude-opus-5
Signed-off-by: Hauke Mehrtens &lt;hauke@hauke-m.de&gt;
</content>
</entry>
<entry>
<title>ddns-scripts: update to 2.8.4</title>
<updated>2026-07-07T06:02:21Z</updated>
<author>
<name>Jiang Tengfei</name>
</author>
<published>2026-06-26T14:34:41Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/feed/packages/commit/?id=774c01bcba2634723aa6b3c3d169fd79112e51fc'/>
<id>urn:sha1:774c01bcba2634723aa6b3c3d169fd79112e51fc</id>
<content type='text'>
Bump PKG_VERSION for the ddns-scripts changes and reset PKG_RELEASE to
1 as requested.

Signed-off-by: Jiang Tengfei &lt;admin@shaoxia.xyz&gt;
</content>
</entry>
<entry>
<title>ddns-scripts: fix one.com prerm test syntax</title>
<updated>2026-07-07T06:02:21Z</updated>
<author>
<name>Jiang Tengfei</name>
</author>
<published>2026-06-26T14:34:25Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/feed/packages/commit/?id=3aca37405647d78ce38858a5c6491301d9b80e31'/>
<id>urn:sha1:3aca37405647d78ce38858a5c6491301d9b80e31</id>
<content type='text'>
Add the missing spaces around the test bracket in the one.com
pre-removal script and escape IPKG_INSTROOT consistently with the other
subpackages.

Signed-off-by: Jiang Tengfei &lt;admin@shaoxia.xyz&gt;
</content>
</entry>
<entry>
<title>ddns-scripts: support version output in frontend</title>
<updated>2026-07-07T06:02:21Z</updated>
<author>
<name>Jiang Tengfei</name>
</author>
<published>2026-06-26T14:33:29Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/feed/packages/commit/?id=37c99fc548b6786e2eda60c29c950f43ef515829'/>
<id>urn:sha1:37c99fc548b6786e2eda60c29c950f43ef515829</id>
<content type='text'>
The /usr/bin/ddns frontend did not support a version option, so
generic package tests treated it as an executable that could not report
the package version.

Read the installed version file and support -V/--version, matching the
version output style used by dynamic_dns_updater.sh.

Signed-off-by: Jiang Tengfei &lt;admin@shaoxia.xyz&gt;
</content>
</entry>
<entry>
<title>ddns-scripts: add curl source IP bind fallback</title>
<updated>2026-07-07T06:02:21Z</updated>
<author>
<name>Jiang Tengfei</name>
</author>
<published>2026-06-26T14:33:11Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/feed/packages/commit/?id=9a5e6063f17bd9f643631ed2fff3ec5236e221dd'/>
<id>urn:sha1:9a5e6063f17bd9f643631ed2fff3ec5236e221dd</id>
<content type='text'>
Keep the existing cURL bind_network behavior of binding to the
logical device first. This preserves the behavior introduced for
PPPoE and multi-WAN setups where the selected network must also be
used for the DDNS update request.

Some setups can still fail when libcurl binds directly to the logical
PPP device. In that case the transfer may time out even though binding
to the source address of the same network succeeds. This can make DDNS
updates fail repeatedly on affected systems.

Retry cURL transfers once with the network source IP when the
device-bound transfer fails. This leaves the normal path unchanged,
keeps the update request on the same network, and matches the existing
GNU Wget behavior which already binds to the network IP address.

Also document the implicit bind_network default and the cURL fallback
in the sample configuration.

Signed-off-by: Jiang Tengfei &lt;admin@shaoxia.xyz&gt;
</content>
</entry>
<entry>
<title>ddns-scripts: add EuroDNS provider</title>
<updated>2026-07-06T08:59:48Z</updated>
<author>
<name>Angus Young</name>
</author>
<published>2026-07-02T01:05:56Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/feed/packages/commit/?id=ec5fcd69e8f63b422258d11046ffb73c8fa52e92'/>
<id>urn:sha1:ec5fcd69e8f63b422258d11046ffb73c8fa52e92</id>
<content type='text'>
Add EuroDNS provider for IPv4 and IPv6

Howto:

    set [USERNAME] to username
    set [PASSWORD] to password
    set [DOMAIN] to domain

https://help.eurodns.com/s/article/How-do-I-configure-DYNDNS?language=en_US
Signed-off-by: Angus Young &lt;me@angusyoung.nl&gt;
</content>
</entry>
<entry>
<title>ddns-scripts: add version check override</title>
<updated>2026-07-01T08:14:28Z</updated>
<author>
<name>Josef Schlehofer</name>
</author>
<published>2026-06-30T13:33:13Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/feed/packages/commit/?id=ed32ce42d23614fa2f169b36cb3483bed1f0e088'/>
<id>urn:sha1:ed32ce42d23614fa2f169b36cb3483bed1f0e088</id>
<content type='text'>
None of the ddns-scripts executables or scripts report the package version when
run, which causes the generic version probe to fail.

Add a test-version.sh to skip the version check for ddns-scripts and all of
its subpackages.

Signed-off-by: Josef Schlehofer &lt;pepe.schlehofer@gmail.com&gt;
</content>
</entry>
<entry>
<title>ddns-scripts: add fallback for default values</title>
<updated>2026-06-09T09:19:35Z</updated>
<author>
<name>Andy Chiang</name>
</author>
<published>2026-06-07T03:06:48Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/feed/packages/commit/?id=de4f8fe9e35239e60c80fedcace6b5e6e0807ea9'/>
<id>urn:sha1:de4f8fe9e35239e60c80fedcace6b5e6e0807ea9</id>
<content type='text'>
In luci, the `interface` value has `o.default = 'wan'` configured.
Due to a behavior fix in 'o.default', values matching the default are
no longer saved. Currently, this is workedaround by disabling
'o.rmempty' in luci, but handling this compatibility fallback on the
backend is a cleaner and superior approach.

Ref: https://github.com/openwrt/luci/commit/b004197a277804ec0c8f092412b91c1d3e5936fa

Signed-off-by: Andy Chiang &lt;AndyChiang_git@outlook.com&gt;
</content>
</entry>
</feed>
