Extend the MAC address validator to disallow multicast MAC addresses and
add a new optional validator option to require multicast MACs instead of
unicast ones.
Fixes: #5166
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
(cherry picked from commit 00e41c3c4977f75e6ca43429dd4c8c2f5cb22419)
Add the known values returned for 802.11ax HW as well as HT modes to the
respective method descriptions.
Signed-off-by: David Bauer <mail@david-bauer.net>
(cherry picked from commit 4b17f8baa3574527dc6ab8914fd322a08cb9784c)
This commit adds the ability to configure HE-modes for radios
(HE20 / HE40 / HE80 / HE160) as well as HE rate information in the
assiciation view.
Tested-on: Ubiquiti UniFi 6 Lite / LR
Signed-off-by: David Bauer <mail@david-bauer.net>
(cherry picked from commit f35e877dc65c727a6ce7f7972a5be4d15921827b)
Update frontend JS code which uses luci-rpc getHostHints to support the new
response format which removes the `ipv4` and `ipv6` host hint string fields
and replaces them with `ipaddrs` and `ip6addrs` weighted string list fields.
Signed-off-by: Niels Widger <niels@qacafe.com>
[rework code to be forwards/backwards compatible, fix some Network.Hosts
methods, fix IP choice ordering, change commit subject, rewrap commit
message]
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
(cherry picked from commit c7b7b42cd3840cfd67f412191578a8659eb63c87)
If different options point to the same underlying uci option, we must only
remove the uci value if none of the other alias options is active in order
to prevent inactive options (due to unsatisfied depends) removing the uci
value of active once on save.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
(cherry picked from commit f3f74bd0fe66b94a99a8d944b63dcd6bdd1b93c6)
Those are L2 options that are not part of interfaces (L3), should not be
set there and don't work. Setting MAC and MTU should be done at device
layer (config device) and is supported for basic types already.
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
(cherry picked from commit 79947af064122438c803f3b7bc580ede093a26e4)
The introduction of network device configuration support also implemented
all common, protocol-independent interface options directly in the
interface config view, so drop the redundant option definitions.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
(cherry picked from commit 171ef77e8985ffd90eb66b8a0a3cd74beb37ccdc)
netifd has been recently patched to use "device" option instead of
"ifname" as more clear & accurate.
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
(cherry picked from commit 74be304e541f5c03dacbdb05c543dfa6f79205a6)
Use the newly introduced devtype attribute for more robust network device
type detection. This also allows us to easily recognize DSA ports.
Furthermore, synthesize VLAN devices declared by uci bridge-vlan sections,
similar to how it is done for legacy swconfig switch_vlan ones.
Finally implement a new Network.Device.getParent() method to use the newly
available "parent" attribute to resolve the base device of DSA ports or
VLAN devices.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
(cherry picked from commit d1bf56d7f178f1b7582d7b3600ee70e65128ccfa)
Change the left button of the UCI Apply-changes overview to the more correct
function close. This also avoids confusion between Dismiss and Revert, which
translate to the same in german.
Signed-off-by: Sven Roederer <devel-sven@geroedel.de>
(cherry picked from commit b56912d9fcf6acb0ba3008de3df15188318376f2)
Serialize the uci list value into a space separated string before passing
it to String.format() for HTML escaping. Without that change, empty strings
were returned whenever the underlying uci get operation yieled an array.
Fixes: #4993
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
(cherry picked from commit 5c792aefc744d1417fc9e24cfb92cd61cf8a651f)
When a tooltip is rendered for a checkbox widget, an additional node is
placed after the checkbox label element, breaking DOM selectors in
bind(), isChecked(), setValue().
Apparently the functionality was never actually tested.
Fixes: #4938
Fixes: e951236e3 ("luci-base: add tooltip handling")
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
(cherry picked from commit 95b5c6cd6464d11d6baa22bcf2c9469847353813)
Support negative prefix length in the `cidr`, `cidr4`, `cidr6`, `ipmask`,
`ipmask4` and `ipmask6` data types when an optional truish flag is passed
to the datatype name.
Ref: #4812
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
(cherry picked from commit cd06e708d8d8037486b77dab3389ca91a88f2dd0)
The parent node of the current li might be null after collapsing the
dropdown, so resolve the parent ul early to avoid passing null to
subsequent calls.
Fixes clearing custom input values in DynamicList dropdowns.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
(cherry picked from commit b8d2bcd432ab23a883de1dd4fbce29f9751a6e84)
Chrome does not properly sort arrays when the sort function returns boolean
results, in contrast to Firefox which does.
Fix the issue by returning a numerical result instead.
Fixes: #4792
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
The try/catch is meant for the `res.json()` call and should apply to that. As it was before, an exception inside the poll callback would cause the callback to be reinvoked without the JSON parameter, which is an odd behaviour. Moreover, it makes it hard to debug because it is completely hidden from the browser console. We now differentiate between exceptions thrown due to bad JSON in `responseText` from exceptions generated inside the callback itself, which are let through for browser console logging.
Signed-off-by: Giovanni Giacobbi <giovanni@giacobbi.net>
Modern browsers allow decomposing table markup equally well as nested div
constructs, therefor migrate our <div> table markup to actual <table> tags
but keep the old table/tr/th/td CSS classes for now to allow for a smooth
theme transition.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Delay the cbi-tab-active custom event so any eventListner attached to the tab doesn't miss the first event.
Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
Generation of pseudo random hex color from a string can be useful also for other task. Generalize it to make it available also for other purpose.
Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
The `onchange` notification handler is called too early to be able to
evaluate other widget's `isActive()` status. Solve this by changing order
of event handling - first register/execute `map.checkDepends` and then
`onchange`.
Fixes: openwrt/luci#4516.
Signed-off-by: Oldřich Jedlička <oldium.pro@gmail.com>
The legend HTML element is allowed only as first element in fieldset, so
use h3 instead, which is rendered the same within themes.
Fixes#3149.
Signed-off-by: Oldřich Jedlička <oldium.pro@gmail.com>
Iterate through VLANs to get the clients connected on configured wifi
VLANs (as configured by `wifi-vlan` sections in `wireless` configuration).
This is a minimum support for VLANs on wireless network. The VLAN name is
nowhere displayed, but at least clients using VLANs are visible.
Signed-off-by: Oldřich Jedlička <oldium.pro@gmail.com>
It was a cosmetic feature that doesn't work anymore with the latest
uhttpd ubus API. Adding RESTful API resulted in treating URL part
following the /ubus/ as the new API request.
Suggested-by: Rafał Miłecki <rafal@milecki.pl>
Fixes: #4465
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
We must be able to translate these values.
Fixes: fd75c2b7c ("luci-base: add default value options dhcp hostname")
Signed-off-by: Anton Kikin <a.kikin@tano-systems.com>
Sending GET request to the main RPC base URL and expecting HTTP response
code 400 had two flaws:
1. It was not verifying actual JSON-RPC interface availability
2. It did not allow implementing support for new requests
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
Acked-by: Jo-Philipp Wich <jo@mein.io>
The `getOption()` function allows to easily obtain a reference to another
option object instance within the same section.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
This commit introduces new per-section cfgvalue(), formvalue() and
getUIElement() helper functions which complement the respective per-option
functions.
Their intent is to simplify querying input data or obtaining UI widget
instances from other options within the same section.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Introduce a new, widget agnostic onchange property which allows setting
custom handler functions to react on element value changes.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Since option deletions are sent first, followed by ubus set commands,
a call sequence like:
uci.set('config', 'section', 'option', ['foo', 'bar'])
uci.set('config', 'section', 'option', ['foo'])
uci.unset('config', 'section', 'option')
... would result in the option retainining `foo` as value, instead of it
getting removed as one would expect.
Fix this issue by reverting the internal change state of the option before
storing the deletion.
While we're at it, also rework the internal tracking of deleted options to
not result in duplicate removal requests when the same option is unset
several times.
Finally change all `undefined` returns to `null` in order to comply with
the function documentation.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>