luci-mod-network: ES6 refactor for diagnostics

Signed-off-by: Paul Donald <newtwen+github@gmail.com>
(cherry picked from commit 7df4840b1c)
This commit is contained in:
Paul Donald
2025-12-12 16:35:54 +01:00
parent 851a32f010
commit ea45563c05

View File

@@ -7,75 +7,70 @@
'require network'; 'require network';
return view.extend({ return view.extend({
handleCommand: function(exec, args) { handleCommand(exec, args) {
var buttons = document.querySelectorAll('.diag-action > .cbi-button'), const buttons = document.querySelectorAll('.diag-action > .cbi-button');
out = document.querySelector('textarea'); const out = document.querySelector('textarea');
for (var i = 0; i < buttons.length; i++) for (const button of buttons)
buttons[i].setAttribute('disabled', 'true'); button.setAttribute('disabled', 'true');
return fs.exec_direct(exec, args, 'text', false, true, function(ev) { return fs.exec_direct(exec, args, 'text', false, true, (ev) => {
out.textContent = ev.target.response; out.textContent = ev.target.response;
}).then(function(res) { }).then((res) => {
out.textContent = res; out.textContent = res;
}).catch(function(err) { }).catch((err) => {
ui.addNotification(null, E('p', [ err ])) ui.addNotification(null, E('p', [ err ]))
}).finally(function() { }).finally(() => {
for (var i = 0; i < buttons.length; i++) for (const button of buttons)
buttons[i].removeAttribute('disabled'); button.removeAttribute('disabled');
}); });
}, },
handlePing: function(ev, cmd) { handlePing(ev, cmd) {
var exec = cmd || 'ping', const exec = cmd || 'ping';
addr = ev.currentTarget.parentNode.previousSibling.value, const addr = ev.currentTarget.parentNode.previousSibling.value;
args = (exec == 'ping') ? [ '-4', '-c', '5', '-W', '1', addr ] : [ '-6', '-c', '5', addr ]; const args = (exec == 'ping') ? [ '-4', '-c', '5', '-W', '1', addr ] : [ '-6', '-c', '5', addr ];
return this.handleCommand(exec, args); return this.handleCommand(exec, args);
}, },
handleTraceroute: function(ev, cmd) { handleTraceroute(ev, cmd) {
var exec = cmd || 'traceroute', const exec = cmd || 'traceroute';
addr = ev.currentTarget.parentNode.previousSibling.value, const addr = ev.currentTarget.parentNode.previousSibling.value;
args = (exec == 'traceroute') ? [ '-4', '-q', '1', '-w', '1', '-n', '-m', String(L.env.rpctimeout || 20), addr ] : [ '-q', '1', '-w', '2', '-n', addr ]; const args = (exec == 'traceroute') ? [ '-4', '-q', '1', '-w', '1', '-n', '-m', String(L.env.rpctimeout || 20), addr ] : [ '-q', '1', '-w', '2', '-n', addr ];
return this.handleCommand(exec, args); return this.handleCommand(exec, args);
}, },
handleNslookup: function(ev, cmd) { handleNslookup(ev, cmd) {
var addr = ev.currentTarget.parentNode.previousSibling.value; const addr = ev.currentTarget.parentNode.previousSibling.value;
return this.handleCommand('nslookup', [ addr ]); return this.handleCommand('nslookup', [ addr ]);
}, },
handleArpScan: function(ev, cmd) { handleArpScan(ev, cmd) {
var addr = ev.currentTarget.parentNode.previousSibling.value; const addr = ev.currentTarget.parentNode.previousSibling.value;
return this.handleCommand('arp-scan', [ '-l', '-I', addr ]); return this.handleCommand('arp-scan', [ '-l', '-I', addr ]);
}, },
load: function() { load() {
return Promise.all([ return Promise.all([
L.resolveDefault(fs.stat('/bin/ping6'), {}), L.resolveDefault(fs.stat('/bin/ping6') || fs.stat('/usr/bin/ping6'), false),
L.resolveDefault(fs.stat('/usr/bin/ping6'), {}), L.resolveDefault(fs.stat('/bin/traceroute6') || fs.stat('/usr/bin/traceroute6'), false),
L.resolveDefault(fs.stat('/bin/traceroute6'), {}), L.resolveDefault(fs.stat('/usr/bin/arp-scan'), false),
L.resolveDefault(fs.stat('/usr/bin/traceroute6'), {}),
L.resolveDefault(fs.stat('/usr/bin/arp-scan'), {}),
network.getDevices(), network.getDevices(),
uci.load('luci') uci.load('luci')
]); ]);
}, },
render: function(res) { render([has_ping6, has_traceroute6, has_arpscan, devices]) {
var has_ping6 = res[0].path || res[1].path, debugger;
has_traceroute6 = res[2].path || res[3].path, const dns_host = uci.get('luci', 'diag', 'dns') || 'openwrt.org';
has_arpscan = res[4].path, const ping_host = uci.get('luci', 'diag', 'ping') || 'openwrt.org';
devices = res[5], const route_host = uci.get('luci', 'diag', 'route') || 'openwrt.org';
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';
var table = E('table', { 'class': 'table' }, [ const table = E('table', { 'class': 'table' }, [
E('tr', { 'class': 'tr' }, [ E('tr', { 'class': 'tr' }, [
E('td', { 'class': 'td left', 'style': 'overflow:initial' }, [ E('td', { 'class': 'td left', 'style': 'overflow:initial' }, [
E('input', { E('input', {
@@ -140,7 +135,7 @@ return view.extend({
has_arpscan ? E('td', { 'class': 'td left' }, [ has_arpscan ? E('td', { 'class': 'td left' }, [
E('select', { E('select', {
'style': 'margin:5px 0' 'style': 'margin:5px 0'
}, devices.map(function(device) { }, devices.map((device) => {
if (!device.isUp()) if (!device.isUp())
return E([]); return E([]);
@@ -156,7 +151,7 @@ return view.extend({
]) ])
]); ]);
var view = E('div', { 'class': 'cbi-map'}, [ const view = E('div', { 'class': 'cbi-map'}, [
E('h2', {}, [ _('Diagnostics') ]), E('h2', {}, [ _('Diagnostics') ]),
E('div', { 'class': 'cbi-map-descr'}, _('Execution of various network commands to check the connection and name resolution to other systems.')), E('div', { 'class': 'cbi-map-descr'}, _('Execution of various network commands to check the connection and name resolution to other systems.')),
table, table,