Merge pull request #5143 from msylgj/patch-1
luci-app-frpc/frps:add service status display
This commit is contained in:
commit
a661d7d845
4 changed files with 104 additions and 0 deletions
|
@ -2,6 +2,7 @@
|
||||||
'require view';
|
'require view';
|
||||||
'require ui';
|
'require ui';
|
||||||
'require form';
|
'require form';
|
||||||
|
'require rpc';
|
||||||
'require tools.widgets as widgets';
|
'require tools.widgets as widgets';
|
||||||
|
|
||||||
// [Widget, Option, Title, Description, {Param: 'Value'}],
|
// [Widget, Option, Title, Description, {Param: 'Value'}],
|
||||||
|
@ -115,12 +116,60 @@ function defOpts(s, opts, params) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var callServiceList = rpc.declare({
|
||||||
|
object: 'service',
|
||||||
|
method: 'list',
|
||||||
|
params: ['name'],
|
||||||
|
expect: { '': {} }
|
||||||
|
});
|
||||||
|
|
||||||
|
function getServiceStatus() {
|
||||||
|
return L.resolveDefault(callServiceList('frpc'), {}).then(function (res) {
|
||||||
|
var isRunning = false;
|
||||||
|
try {
|
||||||
|
isRunning = res['frpc']['instances']['instance1']['running'];
|
||||||
|
} catch (e) { }
|
||||||
|
return isRunning;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function renderStatus(isRunning) {
|
||||||
|
var renderHTML = "";
|
||||||
|
var spanTemp = "<span style=\"color:%s;font-weight:bold;margin-left:15px\">%s - %s</span>";
|
||||||
|
|
||||||
|
if (isRunning) {
|
||||||
|
renderHTML += String.format(spanTemp, 'green', _("frp Client"), _("RUNNING"));
|
||||||
|
} else {
|
||||||
|
renderHTML += String.format(spanTemp, 'red', _("frp Client"), _("NOT RUNNING"));
|
||||||
|
}
|
||||||
|
|
||||||
|
return renderHTML;
|
||||||
|
}
|
||||||
|
|
||||||
return view.extend({
|
return view.extend({
|
||||||
render: function() {
|
render: function() {
|
||||||
var m, s, o;
|
var m, s, o;
|
||||||
|
|
||||||
m = new form.Map('frpc', _('frp Client'));
|
m = new form.Map('frpc', _('frp Client'));
|
||||||
|
|
||||||
|
s = m.section(form.NamedSection, '_status');
|
||||||
|
s.anonymous = true;
|
||||||
|
s.render = function (section_id) {
|
||||||
|
L.Poll.add(function () {
|
||||||
|
return L.resolveDefault(getServiceStatus()).then(function(res) {
|
||||||
|
var view = document.getElementById("service_status");
|
||||||
|
view.innerHTML = renderStatus(res);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
return E('div', { class: 'cbi-map' },
|
||||||
|
E('div', { class: 'cbi-section'}, [
|
||||||
|
E('div', { id: 'service_status' },
|
||||||
|
_('Collecting data ...'))
|
||||||
|
])
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
s = m.section(form.NamedSection, 'common', 'conf');
|
s = m.section(form.NamedSection, 'common', 'conf');
|
||||||
s.dynamic = true;
|
s.dynamic = true;
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,9 @@
|
||||||
"/etc/passwd": ["read"],
|
"/etc/passwd": ["read"],
|
||||||
"/etc/group": ["read"]
|
"/etc/group": ["read"]
|
||||||
},
|
},
|
||||||
|
"ubus": {
|
||||||
|
"service": [ "list" ]
|
||||||
|
},
|
||||||
"uci": ["frpc"]
|
"uci": ["frpc"]
|
||||||
},
|
},
|
||||||
"write": {
|
"write": {
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
'require view';
|
'require view';
|
||||||
'require form';
|
'require form';
|
||||||
|
'require rpc';
|
||||||
'require tools.widgets as widgets';
|
'require tools.widgets as widgets';
|
||||||
|
|
||||||
// [Widget, Option, Title, Description, {Param: 'Value'}],
|
// [Widget, Option, Title, Description, {Param: 'Value'}],
|
||||||
|
@ -90,12 +91,60 @@ function defOpts(s, opts, params) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var callServiceList = rpc.declare({
|
||||||
|
object: 'service',
|
||||||
|
method: 'list',
|
||||||
|
params: ['name'],
|
||||||
|
expect: { '': {} }
|
||||||
|
});
|
||||||
|
|
||||||
|
function getServiceStatus() {
|
||||||
|
return L.resolveDefault(callServiceList('frps'), {}).then(function (res) {
|
||||||
|
var isRunning = false;
|
||||||
|
try {
|
||||||
|
isRunning = res['frps']['instances']['instance1']['running'];
|
||||||
|
} catch (e) { }
|
||||||
|
return isRunning;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function renderStatus(isRunning) {
|
||||||
|
var renderHTML = "";
|
||||||
|
var spanTemp = "<span style=\"color:%s;font-weight:bold;margin-left:15px\">%s - %s</span>";
|
||||||
|
|
||||||
|
if (isRunning) {
|
||||||
|
renderHTML += String.format(spanTemp, 'green', _("frp Server"), _("RUNNING"));
|
||||||
|
} else {
|
||||||
|
renderHTML += String.format(spanTemp, 'red', _("frp Server"), _("NOT RUNNING"));
|
||||||
|
}
|
||||||
|
|
||||||
|
return renderHTML;
|
||||||
|
}
|
||||||
|
|
||||||
return view.extend({
|
return view.extend({
|
||||||
render: function() {
|
render: function() {
|
||||||
var m, s, o;
|
var m, s, o;
|
||||||
|
|
||||||
m = new form.Map('frps', _('frp Server'));
|
m = new form.Map('frps', _('frp Server'));
|
||||||
|
|
||||||
|
s = m.section(form.NamedSection, '_status');
|
||||||
|
s.anonymous = true;
|
||||||
|
s.render = function (section_id) {
|
||||||
|
L.Poll.add(function () {
|
||||||
|
return L.resolveDefault(getServiceStatus()).then(function(res) {
|
||||||
|
var view = document.getElementById("service_status");
|
||||||
|
view.innerHTML = renderStatus(res);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
return E('div', { class: 'cbi-map' },
|
||||||
|
E('div', { class: 'cbi-section'}, [
|
||||||
|
E('div', { id: 'service_status' },
|
||||||
|
_('Collecting data ...'))
|
||||||
|
])
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
s = m.section(form.NamedSection, 'common', 'conf');
|
s = m.section(form.NamedSection, 'common', 'conf');
|
||||||
s.dynamic = true;
|
s.dynamic = true;
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,9 @@
|
||||||
"/etc/group": [ "read" ],
|
"/etc/group": [ "read" ],
|
||||||
"/etc/passwd": [ "read" ]
|
"/etc/passwd": [ "read" ]
|
||||||
},
|
},
|
||||||
|
"ubus": {
|
||||||
|
"service": [ "list" ]
|
||||||
|
},
|
||||||
"uci": ["frps"]
|
"uci": ["frps"]
|
||||||
},
|
},
|
||||||
"write": {
|
"write": {
|
||||||
|
|
Loading…
Reference in a new issue