luci-base: use actual JSON-RPC for verifying ubus RPC URL
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@milecki.pl> Acked-by: Jo-Philipp Wich <jo@mein.io>
This commit is contained in:
parent
5ca328440b
commit
bc6e4dfe29
1 changed files with 8 additions and 2 deletions
|
@ -2553,10 +2553,16 @@
|
||||||
rpcBaseURL = Session.getLocalData('rpcBaseURL');
|
rpcBaseURL = Session.getLocalData('rpcBaseURL');
|
||||||
|
|
||||||
if (rpcBaseURL == null) {
|
if (rpcBaseURL == null) {
|
||||||
|
var msg = {
|
||||||
|
jsonrpc: '2.0',
|
||||||
|
id: 'init',
|
||||||
|
method: 'list',
|
||||||
|
params: undefined
|
||||||
|
};
|
||||||
var rpcFallbackURL = this.url('admin/ubus');
|
var rpcFallbackURL = this.url('admin/ubus');
|
||||||
|
|
||||||
rpcBaseURL = Request.get(env.ubuspath).then(function(res) {
|
rpcBaseURL = Request.post(env.ubuspath, msg, { nobatch: true }).then(function(res) {
|
||||||
return (rpcBaseURL = (res.status == 400) ? env.ubuspath : rpcFallbackURL);
|
return (rpcBaseURL = res.status == 200 ? env.ubuspath : rpcFallbackURL);
|
||||||
}, function() {
|
}, function() {
|
||||||
return (rpcBaseURL = rpcFallbackURL);
|
return (rpcBaseURL = rpcFallbackURL);
|
||||||
}).then(function(url) {
|
}).then(function(url) {
|
||||||
|
|
Loading…
Reference in a new issue