[PATCH luci] luci-base: use actual JSON-RPC for verifying ubus RPC URL
Rafał Miłecki
zajec5 at gmail.com
Mon Sep 14 12:31:07 EDT 2020
From: Rafał Miłecki <rafal at milecki.pl>
Sending GET request to the main RPC base URL and expecting HTTP response
code 400 had two flaws:
1. It was not verifying actual JSON-RPC interface availability
2. It did not allow implementing support for new requests
Signed-off-by: Rafał Miłecki <rafal at milecki.pl>
---
.../luci-base/htdocs/luci-static/resources/luci.js | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/modules/luci-base/htdocs/luci-static/resources/luci.js b/modules/luci-base/htdocs/luci-static/resources/luci.js
index 83c2807d7..e285f999e 100644
--- a/modules/luci-base/htdocs/luci-static/resources/luci.js
+++ b/modules/luci-base/htdocs/luci-static/resources/luci.js
@@ -2553,10 +2553,19 @@
rpcBaseURL = Session.getLocalData('rpcBaseURL');
if (rpcBaseURL == null) {
+ var msg = {
+ jsonrpc: '2.0',
+ id: 'init',
+ method: 'list',
+ params: undefined
+ };
+ var options = {
+ nobatch: true
+ };
var rpcFallbackURL = this.url('admin/ubus');
- rpcBaseURL = Request.get(env.ubuspath).then(function(res) {
- return (rpcBaseURL = (res.status == 400) ? env.ubuspath : rpcFallbackURL);
+ rpcBaseURL = Request.post(env.ubuspath, msg, options).then(function(res) {
+ return (rpcBaseURL = res.status == 200 ? env.ubuspath : rpcFallbackURL);
}, function() {
return (rpcBaseURL = rpcFallbackURL);
}).then(function(url) {
--
2.27.0
More information about the openwrt-devel
mailing list