luci-app-51ddns: add remote access agent interface - #8958
Conversation
1b84021 to
746fff9
Compare
openwrt-ai
left a comment
There was a problem hiding this comment.
Reviewed 1 new commit; see inline comments. The commit message matches its changes, and the backend dependency on 51ddns-agent (openwrt/packages#30158) is already called out in the PR description, so I did not flag it as a missing consumer.
Generated by Claude Code
0050dd1 to
c46c3c1
Compare
|
Addressed all five review findings in c46c3c1: jshn-based RPC serialization, validated and whitelisted status output, plural-aware expiry labels, the NamedSection cleanup with backend config confirmation, and a scanner-generated POT. Local ESLint, shell syntax, ShellCheck, git diff checks, and RPC whitelist/fallback tests pass. All three OpenWrt Formality checks are green on the current head. |
openwrt-ai
left a comment
There was a problem hiding this comment.
Reviewed 1 new commit (c46c3c1); see inline comments.
The jshn conversion, the N_() plural labels and the removal of the ineffective section.anonymous all look right — N_(n, singular, plural) matches cbi.js:167 and the scanner keyword spec N_:2,3 in build/i18n-scan.pl:16. I re-checked the regenerated 51ddns.pot by hand: msgids are now in strict byte order, the wrapping and msgid_plural/msgstr[0..1] shape match other in-tree templates, and every #: line reference resolves to the right line of overview.js at this head. The commit message matches its changes.
One functional regression remains in the new whitelist, plus two smaller points inline.
Generated by Claude Code
c46c3c1 to
500603d
Compare
openwrt-ai
left a comment
There was a problem hiding this comment.
Reviewed the squash into 500603d (diff since c46c3c1 is the plan tracking in the rpcd helper).
The status_has_plan flag does fix the "plan present but not yet synced" regression, and squashing the introduce-then-fix pair addressed the history nit — the single commit's message now matches its contents, so no commit checks.
One remaining problem in the same hunk: json_select's failure diagnostic goes to stdout, so 2>/dev/null doesn't keep it out of the ubus reply. Details inline, plus one nit about the unused online field.
Generated by Claude Code
Add an English LuCI page for configuring the 51DDNS account token. Report the agent service state, version, plan and expiry while serializing RPC responses with jshn and exposing only validated status fields. Signed-off-by: Jinshuan Wang <21hkcloud@gmail.com>
500603d to
e780f2c
Compare
|
Addressed the latest review in e780f2c:
Validation: ShellCheck, Bash syntax check, and |
openwrt-ai
left a comment
There was a problem hiding this comment.
Reviewed 1 new commit (e780f2c); no new issues found.
The diff since 500603d is confined to the rpcd helper and resolves both of the previous round's findings:
json_select plan >/dev/null 2>&1now suppresses stdout as well, so theWARNING: Variable 'plan' does not exist...line can no longer be prepended to thejson_dumpoutput on the two normal paths (noplankey, or a failedjson_load).json_get_varis silent on a missing key, so no other call inprint_statuscan leak into the reply.onlineand its normalisation block are gone;git grep onlineoverapplications/luci-app-51ddns/at this head returns nothing, so no leftover reader, ACL entry or.potmsgid dangles. With no plan the helper now emits a bare{}, whichdata[2] || {}/local.plan || null`` already handles as "No active plan".
Squash preserved — still a single luci-app-51ddns: add remote access agent interface commit, and its message body ("serializing RPC responses with jshn and exposing only validated status fields") matches the file contents, so no commit checks. The helper keeps mode 100755. All three FormalityCheck runs are green on this head.
Generated by Claude Code
Description
Add a LuCI interface for the open-source 51DDNS OpenWrt agent.
The page is available under Services > 51DDNS Remote Access and provides:
The application depends on
51ddns-agent, which is submitted separately in openwrt/packages#30158. The LuCI application is intentionally not bundled in the agent source archive.Documentation and trust model
English installation, operation, privacy, troubleshooting and removal documentation:
https://www.51ddns.com/openwrt
Agent source and client privacy notice:
https://github.com/21hkcloud/51ddns-openwrt
The UI explicitly identifies 51DDNS as a vendor-hosted remote-access service. The agent uses the feed-provided
frpcpackage and runs as a dedicated unprivileged user in a procd/ujail sandbox.Testing