From c9f6362da59983911a1af7ad91419c812231110c Mon Sep 17 00:00:00 2001 From: Rob Emery Date: Sat, 24 Oct 2026 09:46:22 +0100 Subject: [PATCH] Previously the `vlan 2 ` regex was assuming there were ports, now it'll accept just the definition. Also throughout the regex we have over-specified the number of digits sometimes ports are 4 digits long, sometimes they are 2. This seems unnecessary, 1 or more is sufficient --- html/app.js | 63 +++++++++++++++++++++++++++++++++-------------------- 1 file changed, 39 insertions(+), 24 deletions(-) diff --git a/html/app.js b/html/app.js index a7e98f45..b47aca4f 100644 --- a/html/app.js +++ b/html/app.js @@ -789,34 +789,49 @@ function getJSON(p){return api(p).then(function(r){if(!r.ok)throw new Error(p+" function getText(p){return api(p).then(function(r){if(!r.ok)throw new Error(p+" "+r.status);return r.body})} var CONF_CMDS=[ - /^ip\s+(\d{1,3}\.){3}\d{1,3}$/,/^ip\s+dhcp$/, - /^gw\s+(\d{1,3}\.){3}\d{1,3}$/,/^netmask\s+(\d{1,3}\.){3}\d{1,3}$/, - /^syslog\s+(on|off)$/,/^syslog\s+ip\s+(\d{1,3}\.){3}\d{1,3}$/,/^syslog\s+port\s+\d{1,5}$/, + /^ip\s+(\d{1,3}\.){3}\d{1,3}$/, + /^ip\s+dhcp$/, + /^gw\s+(\d{1,3}\.){3}\d{1,3}$/, + /^netmask\s+(\d{1,3}\.){3}\d{1,3}$/, + /^syslog\s+(on|off)$/, + /^syslog\s+ip\s+(\d{1,3}\.){3}\d{1,3}$/, + /^syslog\s+port\s+\d{1,5}$/, /^session\s+\d{1,5}$/, /^dns\s+server\s+(\d{1,3}\.){3}\d{1,3}(\s+(\d{1,3}\.){3}\d{1,3})?$/, - /^ntp\s+(on|off)$/,/^ntp\s+server\s+[A-Za-z0-9.-]{1,47}$/,/^ntp\s+interval\s+\d{1,4}$/, - /^ntp\s+timezone\s+[+-]?\d{1,2}(:\d{2})?$/,/^ntp\s+dst\s+(off|eu|us)$/, + /^ntp\s+(on|off)$/, + /^ntp\s+server\s+[A-Za-z0-9.-]{1,47}$/, + /^ntp\s+interval\s+\d{1,4}$/, + /^ntp\s+timezone\s+[+-]?\d{1,2}(:\d{2})?$/, + /^ntp\s+dst\s+(off|eu|us)$/, /^passwd\s+\S+$/,/^hostname\s+\S{1,23}$/, - /^vlan\s+\d{1,4}\s+d$/,/^vlan\s+\d{1,4}\s+mgmt$/, - /^vlan\s+\d{1,4}(\s+[a-zA-Z]\w*)?(\s+\d{1,2}t?)+$/, - /^pvid\s+\d{1,2}\s+\d{1,4}$/, - /^ingress(\s+\d{1,2}[tua])+$/,/^ingress\s+[tua]$/, - /^port\s+\d{1,2}\s+(10m|100m|1g|2g5|5g|10g|auto|on|off)(\s+(half|full))?$/, - /^port\s+\d{1,2}\s+name\s+\S+$/, - /^port\s+\d{1,2}\s+lldp\s+(permit|block)+$/, - /^eee\s+(on|off)(\s+\d{1,2})?(\s+(100m|1g|2g5))?$/, - /^mirror(\s+\d{1,2})(\s+\d{1,2}[tr]?)+$/,/^mirror\s+off$/, - /^lag\s+[1-4](\s+\d{1,2})+$/,/^lag\s+[1-4]\s+d$/,/^lag\s+[1-4]\s+lacp(\s+\d{1,2})+$/,/^lag\s+[1-4]\s+lacp\s+off$/,/^laghash\s+[1-4](\s+\w+)+$/, - /^isolate\s+\d{1,2}(\s+(off|\d{1,2}))+$/, - /^stp\s+(on|off)$/,/^stp\s+(prio|hello|maxage|fwd|txhold)\s+\d{1,2}$/, + /^vlan\s+\d+\s+(d|mgmt)$/, + /^vlan\s+\d+(\s+[a-zA-Z]\w*)?(\s+\d+t?)*$/, + /^pvid\s+\d+\s+\d+$/, + /^ingress(\s+\d+[tua])+$/,/^ingress\s+[tua]$/, + /^port\s+\d+\s+(10m|100m|1g|2g5|5g|10g|auto|on|off)(\s+(half|full))?$/, + /^port\s+\d+\s+name\s+\S+$/, + /^port\s+\d+\s+lldp\s+(permit|block)+$/, + /^eee\s+(on|off)(\s+\d+)?(\s+(100m|1g|2g5))?$/, + /^mirror(\s+\d+)(\s+\d+[tr]?)+$/,/^mirror\s+off$/, + /^lag\s+[1-4](\s+\d+)+$/,/^lag\s+[1-4]\s+d$/, + /^lag\s+[1-4]\s+lacp(\s+\d+)+$/, + /^lag\s+[1-4]\s+lacp\s+off$/, + /^laghash\s+[1-4](\s+\w+)+$/, + /^isolate\s+\d+(\s+(off|\d+))+$/, + /^stp\s+(on|off)$/,/^stp\s+(prio|hello|maxage|fwd|txhold)\s+\d+$/, /^stp\s+version\s+(rstp|stp)$/, - /^stp\s+(port\s+\d{1,2}|lag\s+[1-4])\s+(on|off)$/,/^stp\s+(port\s+\d{1,2}|lag\s+[1-4])\s+edge\s+(on|off|auto)$/, - /^stp\s+(port\s+\d{1,2}|lag\s+[1-4])\s+cost\s+\d{1,9}$/,/^stp\s+(port\s+\d{1,2}|lag\s+[1-4])\s+prio\s+\d{1,3}$/, - /^stp\s+(port\s+\d{1,2}|lag\s+[1-4])\s+guard\s+(none|bpdu|root)$/,/^stp\s+(port\s+\d{1,2}|lag\s+[1-4])\s+filter\s+(on|off)$/, - /^stp\s+(port\s+\d{1,2}|lag\s+[1-4])\s+p2p\s+(auto|on|off)$/, - /^igmp\s+(on|off)$/,/^mtu\s+\d{1,2}\s+\d+$/,/^lldp\s+(on|off)$/, - /^bw\s+(in|out)\s+\d{1,2}\s+\S+$/, - /^storm\s+\d{1,2}\s+(bcast|mcast|ucast|umcast)\s+(off|\d{1,8}\s+(pps|kbps))$/, + /^stp\s+(port\s+\d+|lag\s+[1-4])\s+(on|off)$/, + /^stp\s+(port\s+\d+|lag\s+[1-4])\s+edge\s+(on|off|auto)$/, + /^stp\s+(port\s+\d+|lag\s+[1-4])\s+cost\s+\d+$/, + /^stp\s+(port\s+\d+|lag\s+[1-4])\s+prio\s+\d+$/, + /^stp\s+(port\s+\d+|lag\s+[1-4])\s+guard\s+(none|bpdu|root)$/, + /^stp\s+(port\s+\d+|lag\s+[1-4])\s+filter\s+(on|off)$/, + /^stp\s+(port\s+\d=|lag\s+[1-4])\s+p2p\s+(auto|on|off)$/, + /^igmp\s+(on|off)$/, + /^mtu\s+\d+\s+\d+$/, + /^lldp\s+(on|off)$/, + /^bw\s+(in|out)\s+\d+\s+\S+$/, + /^storm\s+\d+\s+(bcast|mcast|ucast|umcast)\s+(off|\d+\s+(pps|kbps))$/, ]; function isConfCmd(line){ for(var i=0;i