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');
|
||||
|
||||
if (rpcBaseURL == null) {
|
||||
var msg = {
|
||||
jsonrpc: '2.0',
|
||||
id: 'init',
|
||||
method: 'list',
|
||||
params: undefined
|
||||
};
|
||||
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, { nobatch: true }).then(function(res) {
|
||||
return (rpcBaseURL = res.status == 200 ? env.ubuspath : rpcFallbackURL);
|
||||
}, function() {
|
||||
return (rpcBaseURL = rpcFallbackURL);
|
||||
}).then(function(url) {
|
||||
|
|
Loading…
Reference in a new issue