luci-mod-network: wireless.js: expose ocv settings
authorMichael Yartys <mail@yartys.no>
Sat, 2 Mar 2024 20:23:55 +0000 (21:23 +0100)
committerPaul Donald <newtwen+github@gmail.com>
Thu, 25 Jul 2024 23:48:12 +0000 (01:48 +0200)
Make it possible to set Operating Channel Validation through luci.

Signed-off-by: Michael Yartys <mail@yartys.no>
modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js

index fcc47570ef530c3e9d587cda5bfa094898656cfe..3efd07f7f4f247298522eace229ebb85858ff61c 100644 (file)
@@ -1842,6 +1842,27 @@ return view.extend({
                                                o.placeholder = '201';
                                                o.rmempty = true;
 
+                                               if (L.hasSystemFeature('hostapd', 'ocv') || L.hasSystemFeature('wpasupplicant', 'ocv')) {
+                                                       o = ss.taboption('encryption', form.ListValue, 'ocv', _('Operating Channel Validation'), _("Note: Workaround mode allows a STA that claims OCV capability to connect even if the STA doesn't send OCI or negotiate PMF."));
+                                                       o.value('0', _('Disabled'));
+                                                       o.value('1', _('Enabled'));
+                                                       o.value('2', _('Enabled (workaround mode)'));
+                                                       o.default = '0';
+                                                       o.depends('ieee80211w', '1');
+                                                       o.depends('ieee80211w', '2');
+
+                                                       o.validate = function(section_id, value) {
+                                                               var modeopt = this.section.children.filter(function(o) { return o.option == 'mode' })[0],
+                                                               modeval = modeopt.formvalue(section_id);
+
+                                                               if ((value == '2') && ((modeval == 'sta') || (modeval == 'sta-wds'))) {
+                                                                       return _('Workaround mode can only be used when acting as an access point.');
+                                                               }
+
+                                                               return true;
+                                                       }
+                                               }
+
                                                o = ss.taboption('encryption', form.Flag, 'wpa_disable_eapol_key_retries', _('Enable key reinstallation (KRACK) countermeasures'), _('Complicates key reinstallation attacks on the client side by disabling retransmission of EAPOL-Key frames that are used to install keys. This workaround might cause interoperability issues and reduced robustness of key negotiation especially in environments with heavy traffic load.'));
                                                add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['psk2', 'psk-mixed', 'sae', 'sae-mixed', 'wpa2', 'wpa3', 'wpa3-mixed'] });