<feed xmlns='http://www.w3.org/2005/Atom'>
<title>luci/applications/luci-app-ddns/root, branch master</title>
<subtitle>Lua Configuration Interface (mirror)</subtitle>
<id>https://git.openwrt.org/project/luci/atom?h=master</id>
<link rel='self' href='https://git.openwrt.org/project/luci/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/luci/'/>
<updated>2026-08-03T13:08:34Z</updated>
<entry>
<title>luci-app-ddns: quote the date format passed to the shell</title>
<updated>2026-08-03T13:08:34Z</updated>
<author>
<name>Julius Bairaktaris</name>
</author>
<published>2026-08-01T02:27:18Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/luci/commit/?id=8b5f528eb3ad5b10dd8f14ed2aef26143c28109a'/>
<id>urn:sha1:8b5f528eb3ad5b10dd8f14ed2aef26143c28109a</id>
<content type='text'>
get_date() interpolated the configured date format into a shell command run as
root, inside double quotes and without escaping:

    popen(`date -d @${seconds} "+${format}" 2&gt;/dev/null`, 'r')

`format` comes from uci ddns.global.ddns_dateformat and is reached on every
status poll via get_ddns_state() -&gt; epoch2date(). A value containing a double
quote closes the quoted argument and runs arbitrary commands as root; the
expected date is still printed, so nothing looks wrong in the UI.

The file already carries a shellquote() helper, used correctly for lookup_host,
section and dns_server in get_services_status(). Use it here too.

Assisted-by: Claude:claude-opus-5
Signed-off-by: Julius Bairaktaris &lt;julius@bairaktaris.de&gt;
</content>
</entry>
<entry>
<title>luci-app-ddns: control ddns through the rc ubus namespace</title>
<updated>2026-08-03T09:58:22Z</updated>
<author>
<name>Julius Bairaktaris</name>
</author>
<published>2026-08-02T00:41:03Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/luci/commit/?id=b6e18dc7aaa7d5e2f5142ce250b21f383c5715c5'/>
<id>urn:sha1:b6e18dc7aaa7d5e2f5142ce250b21f383c5715c5</id>
<content type='text'>
rpcd's rc namespace does what luci.setInitAction does, without a shell:
rc.init accepts the same enable/disable/start/stop/restart/reload set,
execs the init script directly instead of interpolating name and action
into a /bin/sh command line, and additionally requires the script to be
root-owned and not world-writable.

The grant goes in the write scope, not read. rpcd matches ubus ACLs on
object and method only, with no per-argument filtering, so a read-scope
rc.init would let a session with read-only access to ddns drive any init
script on the box.

rc.init has no reply payload, so the setInitAction specific
`expect: { result: false }` unwrapping goes with it. Declare it with
`reject: true` in its place: without that, rpc.declare() resolves with
the ubus status code rather than raising, so the .catch() in
handleToggleDDns() would never run and the new root-owned and
not-world-writable check - a rejection setInitAction could not produce -
would leave the button silently doing nothing. handleRestartDDns() gets
the same handler its two siblings already have.

Assisted-by: Claude:claude-opus-5
Signed-off-by: Julius Bairaktaris &lt;julius@bairaktaris.de&gt;
</content>
</entry>
<entry>
<title>luci-app-ddns: replace dynamic_dns_lucihelper call on handleStopDDnsRule</title>
<updated>2026-07-23T12:03:00Z</updated>
<author>
<name>Florian Eckert</name>
</author>
<published>2026-07-03T05:44:44Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/luci/commit/?id=9e0d40e1760bcd2f75b707faf20d312df6f1da6f'/>
<id>urn:sha1:9e0d40e1760bcd2f75b707faf20d312df6f1da6f</id>
<content type='text'>
The ddns service is using procd for service execution. The
'dynamic_dns_lucihelper' ist not needed anymore.

Signed-off-by: Florian Eckert &lt;fe@dev.tdt.de&gt;
</content>
</entry>
<entry>
<title>luci-app-ddns: fix syntax error</title>
<updated>2026-05-28T17:30:40Z</updated>
<author>
<name>Andy Chiang</name>
</author>
<published>2026-05-28T15:03:16Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/luci/commit/?id=6f849a7ffa01fba620f4bfdc3fa894e6f38c4caf'/>
<id>urn:sha1:6f849a7ffa01fba620f4bfdc3fa894e6f38c4caf</id>
<content type='text'>
fix syntax error

Signed-off-by: Andy Chiang &lt;AndyChiang_git@outlook.com&gt;
</content>
</entry>
<entry>
<title>luci-app-ddns: correctness fixes</title>
<updated>2026-05-27T12:49:45Z</updated>
<author>
<name>Paul Donald</name>
</author>
<published>2026-05-26T14:26:02Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/luci/commit/?id=8c677845645098de117ad5f5e8303667f16acc71'/>
<id>urn:sha1:8c677845645098de117ad5f5e8303667f16acc71</id>
<content type='text'>
Signed-off-by: Paul Donald &lt;newtwen+github@gmail.com&gt;
</content>
</entry>
<entry>
<title>luci-app-ddns: improve accuracy of next update and check times</title>
<updated>2025-09-25T12:51:07Z</updated>
<author>
<name>Paul Donald</name>
</author>
<published>2025-09-23T12:42:35Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/luci/commit/?id=c74cf9f7717317fc224cf548c023509ec163771b'/>
<id>urn:sha1:c74cf9f7717317fc224cf548c023509ec163771b</id>
<content type='text'>
Depends on https://github.com/openwrt/packages/pull/27473

Refactor their display also.

Signed-off-by: Paul Donald &lt;newtwen+github@gmail.com&gt;
</content>
</entry>
<entry>
<title>luci-app-ddns: fix ddns uc script for apk</title>
<updated>2025-07-11T00:16:28Z</updated>
<author>
<name>Paul Donald</name>
</author>
<published>2025-07-11T00:16:28Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/luci/commit/?id=4715c6aa1a53762f3792c94a907340a2ae83cd2f'/>
<id>urn:sha1:4715c6aa1a53762f3792c94a907340a2ae83cd2f</id>
<content type='text'>
Trim out some commented code, also.

Signed-off-by: Paul Donald &lt;newtwen+github@gmail.com&gt;
</content>
</entry>
<entry>
<title>luci-app-ddns: remove unused imports</title>
<updated>2025-07-09T16:18:00Z</updated>
<author>
<name>Paul Donald</name>
</author>
<published>2025-07-09T16:17:45Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/luci/commit/?id=4678d6a82c5c36626edb88cdfb93edbb7e93e0fa'/>
<id>urn:sha1:4678d6a82c5c36626edb88cdfb93edbb7e93e0fa</id>
<content type='text'>
Signed-off-by: Paul Donald &lt;newtwen+github@gmail.com&gt;
</content>
</entry>
<entry>
<title>luci-app-ddns: Fix multiple IP display bug</title>
<updated>2025-04-23T12:03:50Z</updated>
<author>
<name>Paul Donald</name>
</author>
<published>2025-04-23T12:03:50Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/luci/commit/?id=54192d3b3659e0ef94c976c84f71f85efdb4528d'/>
<id>urn:sha1:54192d3b3659e0ef94c976c84f71f85efdb4528d</id>
<content type='text'>
Occasionally, a DNS lookup returns multiple IPs, so the best thing to
do isn't to join them together as a unified string, but to separate
them with an HTML &lt;br/&gt;.

Signed-off-by: Paul Donald &lt;newtwen+github@gmail.com&gt;
</content>
</entry>
<entry>
<title>luci-app-ddns: diverse fixes, i18n corrections, and code improvements</title>
<updated>2024-12-02T23:02:31Z</updated>
<author>
<name>Paul Donald</name>
</author>
<published>2024-11-29T02:02:36Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/luci/commit/?id=8d26279bab90ee4cee9eda01c9054e8a6c7b890c'/>
<id>urn:sha1:8d26279bab90ee4cee9eda01c9054e8a6c7b890c</id>
<content type='text'>
-trimmed redundant and repeated code
-fixed adding a new service section, which... never worked.
-removed some defaults
-changed log formatting
-opkg -&gt; package-manager

Signed-off-by: Paul Donald &lt;newtwen+github@gmail.com&gt;
</content>
</entry>
</feed>
