add login status display
This commit is contained in:
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
'use strict';
|
'use strict';
|
||||||
'require form';
|
'require form';
|
||||||
|
'require fs';
|
||||||
'require poll';
|
'require poll';
|
||||||
'require rpc';
|
'require rpc';
|
||||||
'require uci';
|
'require uci';
|
||||||
@@ -27,6 +28,15 @@ function getServiceStatus() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getLoginStatus() {
|
||||||
|
return fs.exec("/usr/sbin/tailscale", ["status"]).then(function(res) {
|
||||||
|
if (res.stdout.includes("Logged out"))
|
||||||
|
return false;
|
||||||
|
else
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
function renderStatus(isRunning) {
|
function renderStatus(isRunning) {
|
||||||
var spanTemp = '<em><span style="color:%s"><strong>%s %s</strong></span></em>';
|
var spanTemp = '<em><span style="color:%s"><strong>%s %s</strong></span></em>';
|
||||||
var renderHTML;
|
var renderHTML;
|
||||||
@@ -39,6 +49,18 @@ function renderStatus(isRunning) {
|
|||||||
return renderHTML;
|
return renderHTML;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function renderLogin(isLoggedIn) {
|
||||||
|
var spanTemp = '<em><span style="color:%s"><strong>%s %s</strong></span></em>';
|
||||||
|
var renderHTML;
|
||||||
|
if (isLoggedIn) {
|
||||||
|
renderHTML = String.format(spanTemp, 'green', _('Logged'), _('IN'));
|
||||||
|
} else {
|
||||||
|
renderHTML = String.format(spanTemp, 'red', _('Logged'), _('OUT'));
|
||||||
|
}
|
||||||
|
|
||||||
|
return renderHTML;
|
||||||
|
}
|
||||||
|
|
||||||
return view.extend({
|
return view.extend({
|
||||||
load: function() {
|
load: function() {
|
||||||
return Promise.all([
|
return Promise.all([
|
||||||
@@ -73,6 +95,17 @@ return view.extend({
|
|||||||
o.default = o.disabled;
|
o.default = o.disabled;
|
||||||
o.rmempty = false;
|
o.rmempty = false;
|
||||||
|
|
||||||
|
o = s.option(form.DummyValue, 'login_status', _('Login Status'));
|
||||||
|
o.depends('enabled', '1');
|
||||||
|
o.renderWidget = function(section_id, option_id) {
|
||||||
|
poll.add(function() {
|
||||||
|
return L.resolveDefault(getLoginStatus()).then(function(res) {
|
||||||
|
document.getElementById('login_status_div').innerHTML = renderLogin(res);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
return E('div', { 'id': 'login_status_div' }, _('Collecting data ...'));
|
||||||
|
};
|
||||||
|
|
||||||
return m.render();
|
return m.render();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,8 @@
|
|||||||
"description": "Grant access to Tailscale configuration",
|
"description": "Grant access to Tailscale configuration",
|
||||||
"read": {
|
"read": {
|
||||||
"file": {
|
"file": {
|
||||||
"/sbin/ifconfig": [ "exec" ]
|
"/sbin/ifconfig": [ "exec" ],
|
||||||
|
"/usr/sbin/tailscale": [ "exec" ]
|
||||||
},
|
},
|
||||||
"ubus": {
|
"ubus": {
|
||||||
"service": [ "list" ]
|
"service": [ "list" ]
|
||||||
|
|||||||
Reference in New Issue
Block a user