mirror of
https://github.com/Ysurac/openmptcprouter-feeds.git
synced 2025-02-13 19:11:51 +00:00
139 lines
4.2 KiB
JavaScript
139 lines
4.2 KiB
JavaScript
'use strict';
|
|
'require view';
|
|
'require dom';
|
|
'require fs';
|
|
'require ui';
|
|
'require uci';
|
|
|
|
return view.extend({
|
|
handleCommand: function(exec, args) {
|
|
var buttons = document.querySelectorAll('.diag-action > .cbi-button');
|
|
|
|
for (var i = 0; i < buttons.length; i++)
|
|
buttons[i].setAttribute('disabled', 'true');
|
|
|
|
return fs.exec(exec, args).then(function(res) {
|
|
var out = document.querySelector('.command-output');
|
|
out.style.display = '';
|
|
|
|
dom.content(out, [ res.stdout || '', res.stderr || '' ]);
|
|
}).catch(function(err) {
|
|
ui.addNotification(null, E('p', [ err ]))
|
|
}).finally(function() {
|
|
for (var i = 0; i < buttons.length; i++)
|
|
buttons[i].removeAttribute('disabled');
|
|
});
|
|
},
|
|
|
|
handlePing: function(ev, cmd) {
|
|
var exec = cmd || 'ping',
|
|
addr = ev.currentTarget.parentNode.previousSibling.value,
|
|
args = (exec == 'ping') ? [ '-4', '-c', '5', '-W', '1', addr ] : [ '-6', '-c', '5', addr ];
|
|
|
|
return this.handleCommand(exec, args);
|
|
},
|
|
|
|
handleTraceroute: function(ev, cmd) {
|
|
var exec = cmd || 'traceroute',
|
|
addr = ev.currentTarget.parentNode.previousSibling.value,
|
|
args = (exec == 'traceroute') ? [ '-q', '1', '-w', '1', '-n', addr ] : [ '-q', '1', '-w', '2', '-n', addr ];
|
|
|
|
return this.handleCommand(exec, args);
|
|
},
|
|
|
|
handleNslookup: function(ev, cmd) {
|
|
var addr = ev.currentTarget.parentNode.previousSibling.value;
|
|
|
|
return this.handleCommand('nslookup', [ addr ]);
|
|
},
|
|
|
|
load: function() {
|
|
return Promise.all([
|
|
L.resolveDefault(fs.stat('/bin/ping6'), {}),
|
|
L.resolveDefault(fs.stat('/usr/bin/ping6'), {}),
|
|
L.resolveDefault(fs.stat('/bin/traceroute6'), {}),
|
|
L.resolveDefault(fs.stat('/usr/bin/traceroute6'), {}),
|
|
uci.load('luci')
|
|
]);
|
|
},
|
|
|
|
render: function(res) {
|
|
var has_ping6 = res[0].path || res[1].path,
|
|
has_traceroute6 = res[2].path || res[3].path,
|
|
dns_host = uci.get('luci', 'diag', 'dns') || 'openwrt.org',
|
|
ping_host = uci.get('luci', 'diag', 'ping') || 'openwrt.org',
|
|
route_host = uci.get('luci', 'diag', 'route') || 'openwrt.org';
|
|
|
|
return E([], [
|
|
E('h2', {}, [ _('Network Utilities') ]),
|
|
E('table', { 'class': 'table' }, [
|
|
E('tr', { 'class': 'tr' }, [
|
|
E('td', { 'class': 'td left' }, [
|
|
E('input', {
|
|
'style': 'margin:5px 0',
|
|
'type': 'text',
|
|
'value': ping_host
|
|
}),
|
|
E('span', { 'class': 'diag-action' }, [
|
|
has_ping6 ? new ui.ComboButton('ping', {
|
|
'ping': '%s %s'.format(_('IPv4'), _('Ping')),
|
|
'ping6': '%s %s'.format(_('IPv6'), _('Ping')),
|
|
}, {
|
|
'click': ui.createHandlerFn(this, 'handlePing'),
|
|
'classes': {
|
|
'ping': 'btn cbi-button cbi-button-action',
|
|
'ping6': 'btn cbi-button cbi-button-action'
|
|
}
|
|
}).render() : E('button', {
|
|
'class': 'cbi-button cbi-button-action',
|
|
'click': ui.createHandlerFn(this, 'handlePing')
|
|
}, [ _('Ping') ])
|
|
])
|
|
]),
|
|
|
|
E('td', { 'class': 'td left' }, [
|
|
E('input', {
|
|
'style': 'margin:5px 0',
|
|
'type': 'text',
|
|
'value': route_host
|
|
}),
|
|
E('span', { 'class': 'diag-action' }, [
|
|
has_traceroute6 ? new ui.ComboButton('traceroute', {
|
|
'traceroute': '%s %s'.format(_('IPv4'), _('Traceroute')),
|
|
'traceroute6': '%s %s'.format(_('IPv6'), _('Traceroute')),
|
|
}, {
|
|
'click': ui.createHandlerFn(this, 'handleTraceroute'),
|
|
'classes': {
|
|
'traceroute': 'btn cbi-button cbi-button-action',
|
|
'traceroute6': 'btn cbi-button cbi-button-action'
|
|
}
|
|
}).render() : E('button', {
|
|
'class': 'cbi-button cbi-button-action',
|
|
'click': ui.createHandlerFn(this, 'handleTraceroute')
|
|
}, [ _('Traceroute') ])
|
|
])
|
|
]),
|
|
|
|
E('td', { 'class': 'td left' }, [
|
|
E('input', {
|
|
'style': 'margin:5px 0',
|
|
'type': 'text',
|
|
'value': dns_host
|
|
}),
|
|
E('span', { 'class': 'diag-action' }, [
|
|
E('button', {
|
|
'class': 'cbi-button cbi-button-action',
|
|
'click': ui.createHandlerFn(this, 'handleNslookup')
|
|
}, [ _('Nslookup') ])
|
|
])
|
|
])
|
|
])
|
|
]),
|
|
E('pre', { 'class': 'command-output', 'style': 'display:none' })
|
|
]);
|
|
},
|
|
|
|
handleSaveApply: null,
|
|
handleSave: null,
|
|
handleReset: null
|
|
});
|