From 0759c748dd1cb54e306d17c6a7496d99ffc512f7 Mon Sep 17 00:00:00 2001 From: CyberMind-FR Date: Fri, 26 Dec 2025 21:42:09 +0100 Subject: [PATCH] fix: Add missing API functions to resolve module errors MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixed JavaScript errors in multiple modules by adding missing API functions: 1. auth-guardian: - Added getSessions() alias for listSessions compatibility 2. netifyd-dashboard: - Added getAllData() aggregating status, stats, flows, applications 3. wireguard-dashboard: - Added getAllData() aggregating status, peers, interfaces, traffic 4. network-modes: - Added getAllData() aggregating status, mode, available_modes, interfaces 5. netdata-dashboard: - Fixed ACL permissions: changed ubus object from 'netdata' to 'luci.netdata-dashboard' - Added missing RPC methods to ACL (netdata_status, netdata_alarms, netdata_info) - Added write permissions for service control methods Resolves: - TypeError: api.getSessions is not a function (auth-guardian) - TypeError: api.getAllData is not a function (netifyd, wireguard, network-modes) - RPC error -32002: Access denied (netdata-dashboard) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 --- .../resources/auth-guardian/api.js | 1 + .../acl.d/luci-app-netdata-dashboard.json | 22 +++++++++++++++++-- .../resources/netifyd-dashboard/api.js | 19 +++++++++++++++- .../resources/network-modes/api.js | 19 +++++++++++++++- .../resources/wireguard-dashboard/api.js | 19 +++++++++++++++- 5 files changed, 75 insertions(+), 5 deletions(-) diff --git a/luci-app-auth-guardian/htdocs/luci-static/resources/auth-guardian/api.js b/luci-app-auth-guardian/htdocs/luci-static/resources/auth-guardian/api.js index 3e5229fe..2a7e38b4 100644 --- a/luci-app-auth-guardian/htdocs/luci-static/resources/auth-guardian/api.js +++ b/luci-app-auth-guardian/htdocs/luci-static/resources/auth-guardian/api.js @@ -90,6 +90,7 @@ return baseclass.extend({ deleteVoucher: callDeleteVoucher, validateVoucher: callValidateVoucher, listSessions: callListSessions, + getSessions: callListSessions, // Alias for compatibility revokeSession: callRevokeSession, getLogs: callGetLogs }); diff --git a/luci-app-netdata-dashboard/root/usr/share/rpcd/acl.d/luci-app-netdata-dashboard.json b/luci-app-netdata-dashboard/root/usr/share/rpcd/acl.d/luci-app-netdata-dashboard.json index 5c9e1d1c..fb5f7605 100644 --- a/luci-app-netdata-dashboard/root/usr/share/rpcd/acl.d/luci-app-netdata-dashboard.json +++ b/luci-app-netdata-dashboard/root/usr/share/rpcd/acl.d/luci-app-netdata-dashboard.json @@ -3,14 +3,32 @@ "description": "Grant access to LuCI Netdata Dashboard", "read": { "ubus": { - "netdata": [ "stats", "cpu", "memory", "disk", "network", "processes", "sensors", "system" ], + "luci.netdata-dashboard": [ + "stats", + "cpu", + "memory", + "disk", + "network", + "processes", + "sensors", + "system", + "netdata_status", + "netdata_alarms", + "netdata_info" + ], "system": [ "info", "board" ], - "luci-rpc": [ "getNetdataStats" ], "file": [ "read", "stat" ] }, "uci": [ "netdata-dashboard" ] }, "write": { + "ubus": { + "luci.netdata-dashboard": [ + "restart_netdata", + "start_netdata", + "stop_netdata" + ] + }, "uci": [ "netdata-dashboard" ] } } diff --git a/luci-app-netifyd-dashboard/htdocs/luci-static/resources/netifyd-dashboard/api.js b/luci-app-netifyd-dashboard/htdocs/luci-static/resources/netifyd-dashboard/api.js index ee207ea7..218232ee 100644 --- a/luci-app-netifyd-dashboard/htdocs/luci-static/resources/netifyd-dashboard/api.js +++ b/luci-app-netifyd-dashboard/htdocs/luci-static/resources/netifyd-dashboard/api.js @@ -61,5 +61,22 @@ return baseclass.extend({ getHosts: callHosts, getProtocols: callProtocols, getStats: callStats, - formatBytes: formatBytes + formatBytes: formatBytes, + + // Aggregate function for overview page + getAllData: function() { + return Promise.all([ + callStatus(), + callStats(), + callFlows(), + callApplications() + ]).then(function(results) { + return { + status: results[0] || {}, + stats: results[1] || {}, + flows: results[2] || { flows: [] }, + applications: results[3] || { applications: [] } + }; + }); + } }); diff --git a/luci-app-network-modes/htdocs/luci-static/resources/network-modes/api.js b/luci-app-network-modes/htdocs/luci-static/resources/network-modes/api.js index 9b0c263d..10eea7b5 100644 --- a/luci-app-network-modes/htdocs/luci-static/resources/network-modes/api.js +++ b/luci-app-network-modes/htdocs/luci-static/resources/network-modes/api.js @@ -53,5 +53,22 @@ return baseclass.extend({ getAvailableModes: callGetAvailableModes, setMode: callSetMode, getInterfaces: callGetInterfaces, - validateConfig: callValidateConfig + validateConfig: callValidateConfig, + + // Aggregate function for overview page + getAllData: function() { + return Promise.all([ + callStatus(), + callGetCurrentMode(), + callGetAvailableModes(), + callGetInterfaces() + ]).then(function(results) { + return { + status: results[0] || {}, + current_mode: results[1] || { mode: '' }, + available_modes: results[2] || { modes: [] }, + interfaces: results[3] || { interfaces: [] } + }; + }); + } }); diff --git a/luci-app-wireguard-dashboard/htdocs/luci-static/resources/wireguard-dashboard/api.js b/luci-app-wireguard-dashboard/htdocs/luci-static/resources/wireguard-dashboard/api.js index 97c177f3..aff7355d 100644 --- a/luci-app-wireguard-dashboard/htdocs/luci-static/resources/wireguard-dashboard/api.js +++ b/luci-app-wireguard-dashboard/htdocs/luci-static/resources/wireguard-dashboard/api.js @@ -104,5 +104,22 @@ return baseclass.extend({ generateConfig: callGenerateConfig, generateQR: callGenerateQR, formatBytes: formatBytes, - formatLastHandshake: formatLastHandshake + formatLastHandshake: formatLastHandshake, + + // Aggregate function for overview page + getAllData: function() { + return Promise.all([ + callStatus(), + callGetPeers(), + callGetInterfaces(), + callGetTraffic() + ]).then(function(results) { + return { + status: results[0] || {}, + peers: results[1] || { peers: [] }, + interfaces: results[2] || { interfaces: [] }, + traffic: results[3] || {} + }; + }); + } });