Commit Graph

1601 Commits

Author SHA1 Message Date
Matthias Schiffer
b40b1c82e0
Merge pull request #2312 from freifunk-gluon/gluon-web-wifi-cleanup
Hide WLAN config on devices without WLAN + related cleanup
2021-12-16 20:03:27 +01:00
Matthias Schiffer
1013dcb148
gluon-ebtables-filter-ra-dhcp: disable DHCPv4 filter when gw_mode == 'server' (#2324)
In meshes without VPN or supernodes, it may be desirable to connect a
router providing IPv4 addresses directly to a regular Gluon node. For
this to work, it was necessary to remove the gluon-ebtables-filter-ra-dhcp
package from the node, so the autoupdater also needed to be disabled.

To avoid this, make gluon-ebtables-filter-ra-dhcp disable the DHCPv4
filter rules when gw_mode is set to 'server'.

No solution is provided for RA/DHCPv6, but this seems less pressing for
local meshes, as nodes can already provide working IPv6 connectivity
by themselves through gluon-radvd.
2021-12-16 20:01:57 +01:00
Matthias Schiffer
201e1597b1
gluon-status-page: use UCI + iwinfo to get channel information
The network.wireless status ubus call only returns the configured
channel from UCI, breaking the status page in outdoor mode, where the
configuration contains 'auto' instead of a number.

Fixes: 0d3fa6b59b ("gluon-status-page: use ubus to get radio channels")
Closes #2336
2021-12-15 22:48:13 +01:00
aiyion.prime
1944ea0e01 gluon-status-page: fix lastImage in Signal() 2021-11-12 12:23:37 +01:00
aiyion.prime
8c85be2125 gluon-status-page: fix address_to_groups()
In js `return` does behave like `continue` in a forEach() iteration.
The fixed function was intended to return nothing on error and does so
now, instead of a shorter (useless) array like before.
2021-11-12 12:19:47 +01:00
Matthias Schiffer
51a1708453
gluon-neighbour-info: avoid recv() with NULL buffer (#2323)
Calling functions like recv() with a NULL buffer is not explicitly
allowed by the POSIX standard, so it must be avoided to be portable
across different libc implementations. Allocate an initial buffer before
handling requests, and also pass this buffer to the peek recv() call.

Fixes: 531937cf6f ("gluon-neighbour-info: fix broken output with large results")
2021-10-16 14:01:34 +02:00
Matthias Schiffer
f419db58a2 Set PKG_VERSION in gluon.mk
This removes PKG_VERSION and PKG_RELEASE from most Makefiles, as the
value was never useful for Gluon packages; instead, PKG_VERSION is set
to 1 in gluon.mk.

It also removes two other weird definitions:

- gluon-iptables-clamp-mss-to-pmtu replicating the old PKG_VERSION logic
  from gluon-core, but without the fixed PKG_BUILD_DIR to prevent
  unnessary rebuilds
- gluon-hoodselector set GLUON_VERSION=3
2021-10-07 23:42:38 +02:00
Matthias Schiffer
a6187cce70
gluon-core, gluon-site: get version numbers from .config
Calling git describe directly breaks isolation between the build system
and packages. Replace this with proper .config variables, like we
already do for GLUON_RELEASE.

Also replace the PKG_VERSION hack with a static '1', as we do for other
packages - while having those version numbers in opkg was cute, it was
also entirely useless. Having a fixed PKG_VERSION allows us to remove
the PKG_BUILD_DIR override as well.
2021-10-05 21:48:07 +02:00
T-X
531937cf6f
gluon-neighbour-info: fix broken output with large results (#2322)
Currently a buffer with a fixed size of 8192 bytes is used. However the
result can potentially be larger, which leads to a truncated JSON
output on stdout. UDP packets, without compression and with IP
fragmentation, can be up to 64KiB large.

Instead of using a fixed size buffer on the stack ask the kernel first
about the size of the UDP data and allocate a buffer of appropriate size
on the heap before receiving the UDP data.

The issue was observed with a custom respondd provider.

Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
2021-10-04 21:23:29 +02:00
lemoer
3f7c0b3ae8
gluon-mesh-vpn-wireguard: add package (#2168)
The address of the vpn interface is calculated in the style of
modified EUI-64, based on a virtual mac address. This virtual mac
address consists of 0x00 as first byte and the other five bytes
are taken from the first bytes of md5sum(base64 encoded public key).

The algorithm was taken by the ffmuc, with a slight difference. ffmuc
calculated the result of md5sum(base64 encoded public key + '\n')
which was interpreted as accidential fault and therefore dropped.

Example:
- Public-Key: "gP3VJnTTvnQut+z4O+m0N9RgMyXbgyUbUkF3E3TKX2w="
- Address: "fe80::02ca:b8ff:fedc:2eb3"

The following interfaces are used for wireguard:
- wg_mesh  -> wireguard interface
- mesh-vpn -> vxlan iface on top of wg_mesh

If you use this new feature, make sure the NTP servers in your site
config are publicly reachable. This is necessary, since wireguard
requires correct time before the vpn connection is established.
Therefore gluon performs ntp time synchronisation via WAN before it
establishes the vpn connection. Therefore the NTP servers have to
be publicly reachable (and not only via mesh).
2021-09-15 01:25:59 +02:00
Matthias Schiffer
a40a89d906
gluon-web-wifi-config, gluon-web-private-wifi: hide pages on devices without WLAN
Fixes: #2311
2021-09-13 18:10:49 +02:00
Matthias Schiffer
5f1f960753
gluon-core: introduce device_uses_wlan() helper 2021-09-13 17:47:04 +02:00
Matthias Schiffer
ed7134fae6
gluon-web-wifi-config: reuse device_uses_11a() instead of reimplementing it less efficiently 2021-09-13 17:43:16 +02:00
Matthias Schiffer
7a2cd66cb9
gluon-core: move a few WLAN-specific functions from gluon.platform to gluon.wireless
Avoid requiring gluon.wireless from gluon.platform, and requiring
gluon.platform from various other scripts.
2021-09-13 17:41:15 +02:00
lemoer
077439de46
treewide: remove duplicate i18n translations (#2309)
Before this commit, some *.po files contained the same translation
twice within the same file. While this did not led to errors in
gluon yet, it is still invalid. This commit fixes that and removes
the duplicates.
2021-09-11 22:47:11 +02:00
Matthias Schiffer
1ae7046958
treewide: clean up site checks for prefix[46] and extra_prefixes6
- Move site check for prefix4 and extra_prefixes6 to gluon-core, so the
  rules don't need to be duplicated in several packages. This also fixes
  gluon-respondd not checking extra_prefixes6 at all when
  gluon-ebtables-source-filter is not installed as well.
- A redundant check for prefix6 is removed from gluon-l3roamd (this was
  already checked by gluon-core)
- A separate check for prefix4 remains in gluon-client-bridge, as the
  setting in mandatory there
2021-09-04 21:17:29 +02:00
Matthias Schiffer
90fe74bf4d
Merge pull request #2289 from freifunk-gluon/status-page-improvements
Status page improvements
2021-09-04 21:11:05 +02:00
Martin Weinelt
c132c5abb7
Merge pull request #2301 from herbetom/eap225-outdoor
ath79-generic: add support for TP-Link EAP225-Outdoor v1
2021-09-01 15:12:55 +02:00
Tom Herbers
1cb0fc84fc
gluon-status-page: swap bandwidth limits (#2304) 2021-08-31 20:07:17 +02:00
Tom Herbers
5a034be6b3
ath79-generic: add support for TP-Link EAP225-Outdoor v1 2021-08-28 18:52:52 +02:00
citronalco
34fc9544b8
ath79-generic: add support for TP-Link WBS210 v2 (#2299) 2021-08-27 23:15:04 +02:00
J. Burfeind
6e09539539
gluon-mesh-batman-adv: implement neighbour and default_gw4 check (#2274) 2021-08-12 21:02:58 +02:00
micw
a1b961994a
Add support for tp-link CPE510 V2 (#2287)
Co-authored-by: Michael Wyraz <michael.wyraz@evermind.de>
2021-08-12 17:14:38 +02:00
micw
6b699f376c
Add support for tp-link CPE510 V3 (#2283) 2021-08-11 19:15:37 +02:00
David Bauer
14b1224f97
ipq40xx: add support for Aruba AP-365 / InstantOn AP17 (#2290) 2021-08-11 01:14:30 +02:00
J. Burfeind
38d6f75dd3
gluon-state-check: implement state checker (#2245) 2021-08-10 16:22:34 +02:00
Matthias Schiffer
a357278464
gluon-status-page: fix display of non-string values from respondd data
Fixes the display of client counts, which are numbers and not strings
in the respondd data.

Fixes: 3a885a1b22 ("gluon-status-page: make "gateway nexthop" a link (#2278)")
2021-08-08 12:11:20 +02:00
Matthias Schiffer
0d3fa6b59b
gluon-status-page: use ubus to get radio channels
Do not depend on the respondd-airtime module just to get the configured
channels. This removes the display of the frequency in addition to the
channel, as it is not readily available.

In addition, the translation string is improved to allow for text after
the channel number.
2021-08-08 12:11:20 +02:00
Matthias Schiffer
f2e0f7e3a8
gluon-status-page: avoid complex math
This code is usually running on an embedded CPU without FPU. In
addtition to its inefficience, the algorithm is also much harder to
understand.

Replace the logarithm formula with a simple loop.
2021-08-08 12:11:20 +02:00
Matthias Schiffer
dcb8738a5a
gluon-status-page: fix indentation 2021-08-08 12:11:20 +02:00
Matthias Schiffer
f4a3afe8fb
treewide: correctly specify conffiles (#2276)
Specify conffiles for our packages, so they aren't overwritten during
opkg updates. While this only matters during development, it is
unintended to have different behaviour for opkg update and full firmware
updates.
2021-07-23 19:48:58 +02:00
lemoer
3a885a1b22
gluon-status-page: make "gateway nexthop" a link (#2278)
With this commit, the gateway nexthop is now a clickable link, that leads
to the status page of the nexthop.
2021-07-23 19:10:27 +02:00
Matthias Schiffer
bfec08546b
gluon-core: use uci:delete_all() instead of foreach()+delete() (#2273) 2021-07-17 23:24:01 +02:00
David Bauer
f01c62e594
gluon-core: wireless: support PHY lookup for multi-PHY devices (#2267)
The PHY lookup helper "find_phy_by_path" could not lookup the PHY name
for paths from multi-phy devices.

An example for such a path would be:
'1e140000.pcie/pci0000:00/0000:00:01.0/0000:02:00.0+1'

The integer after the plus (+) character determines the PHY index of the
specific device in relation to the PHY with the lowest index of the
device.

For example, if the device provides phy2 and phy3, the above path would
describe phy3. In case the device provides phy0 and phy1, it would
describe phy1.

Rewrite the "find_phy_by_path" function to support those paths as well
as regular device paths in a universal manner.

Signed-off-by: David Bauer <mail@david-bauer.net>
2021-07-17 22:50:02 +02:00
aiyion.prime
c2e27196de
gluon-web-admin: use util.popen3 in remote.lua
[Matthias Schiffer: whitespace changes, error handling]
2021-07-15 17:55:08 +02:00
aiyion.prime
e410a9c2e5 gluon-core: implement popen3() in gluon/util.lua
[Matthias Schiffer: simplify close_fds() helper and use in child process]
2021-07-15 17:53:07 +02:00
Matthias Schiffer
14236ed8f6
Merge pull request #2237 from freifunk-gluon/installed-check-site
Run site check for manual package installations
2021-07-14 16:20:20 +02:00
Matthias Schiffer
76a242b595
Merge pull request #2271 from freifunk-gluon/tiny-flash-cleanup
Remove ramips-rt305x and now unused build features
2021-07-14 16:20:01 +02:00
David Bauer
5ec8676b28
gluon-core: delete all network device sections (#2263)
Delete all default network device sections upon first boot.

Only LAN & WAN networks are defined at this point. We are using the
legacy way of definiting bridges via the interface sections ifname
option.

The prior filtering was based upon a single device and didn't take into
consideration that DSA interface names can be named arbitrarily.

Signed-off-by: David Bauer <mail@david-bauer.net>
2021-07-14 01:49:33 +02:00
Matthias Schiffer
c23bc293ef treewide: remove GLUON_SPECIALIZE_KERNEL
With the removal of ramips-rt305x, the last user of
GLUON_SPECIALIZE_KERNEL is gone.
2021-07-13 21:37:39 +02:00
Matthias Schiffer
09c9b78e30 ramips-rt305x: drop target
VoCores aren't exactly useful mesh nodes except for experimentation.
They certainly aren't worth maintaining a whole target, in particular
one that has a WLAN driver not used by any other target.
2021-07-13 21:37:39 +02:00
Martin Weinelt
76185e3a2a
gluon-status-page: relax nodeinfo query timeout (#2262)
It was found that a one second timeout for nodeinfo data may be too low,
so that when a node is otherwise occupied that timeout may be reached
too often.

The nodeinfo query response is also vital to the status-page base
template, so that when it times out, the site will be turned in a broken
state, that it cannot recover from.

Fixes: #2256
2021-07-12 19:23:29 +02:00
Matthias Schiffer
3a2d176df8
build: run site checks for manual package installations 2021-07-12 17:07:40 +02:00
Matthias Schiffer
298723c22b
gluon-core: gluon-check-site: do not fail when IPKG_INSTROOT is unset 2021-07-12 17:06:49 +02:00
Matthias Schiffer
eb3fad4bae
build: move check_site.lua main script into gluon-core package
Installing the script into the image allows site checks to run for
manual package installations via opkg.
2021-07-12 17:06:35 +02:00
Matthias Schiffer
3386221ef1
gluon.mk: fix indentation
A leading tab character usually marks recipe lines in Makefiles;
non-recipe lines must be indented using spaces.

The incorrect tab character doesn't seen to have caused any issues in
this case, but it should be fixed nonetheless, if only for consistency.
2021-07-11 22:39:48 +02:00
Martin Weinelt
97f6710d45
Merge pull request #2259 from blocktrron/bugfix-util-file-contains-line-exists
gluon-core: util: check if file exists prior to reading
2021-07-01 03:42:36 +02:00
David Bauer
ff9f295f7d gluon-core: util: check if file exists prior to reading
The file_contains_line helper function was not testing whether a file
exists or not prior attempting to read from it.

Add this check to circumvent errors on the private WiFi config in
case the hwflags file is missing.

Reported-by: Tom Herbers <freifunk@tomherbers.de>
Tested-by: Tom Herbers <freifunk@tomherbers.de>
Signed-off-by: David Bauer <mail@david-bauer.net>
2021-07-01 03:14:08 +02:00
David Bauer
439b3e0208 gluon-core: read NanoPi R2S primary MAC from LAN board data
The relevant entry for the primary MAC location was lost when rebasing
the patch on OpenWrt 21.02.

Fixes commit ded4b8a711 ("rockchip-armv8: add FriendlyARM NanoPi R2S")

Signed-off-by: David Bauer <mail@david-bauer.net>
2021-07-01 03:05:50 +02:00
David Bauer
260a75cd59 gluon-core: use HE radio mode if available
Configure a radio for HE (802.11ax) operation in case it's supported by
the hardware. This can be the case for 2.4 GHz as well as 5 GHz.

Signed-off-by: David Bauer <mail@david-bauer.net>
2021-06-29 22:23:05 +02:00
Martin Weinelt
4f53b9848c
Merge pull request #2248 from blocktrron/pr-ar71xx-cleanup 2021-06-26 23:53:23 +02:00
David Bauer
69ba8e3cfe gluon-core: fix handling of multi-port interfaces
Multi-port interfaces are stored in the network config as an array using
the ports key.
2021-06-26 19:56:17 +02:00
David Bauer
98b16933d3 gluon-core: update board.json interface path
Single LAN and WAN interfaces are now stored in the network configs
"device" key.
2021-06-26 19:55:38 +02:00
David Bauer
9fdc57c175 treewide: drop ar71xx platform specific code 2021-06-26 02:17:15 +02:00
David Bauer
38a11eaca8 gluon-core: remove default bridge devices 2021-06-22 01:59:48 +02:00
David Bauer
102fcac799 gluon-core: update ramips boardnames 2021-06-22 01:59:48 +02:00
David Bauer
a38f2a4cf1 packages: fix missing argument to posix.glob 2021-06-21 16:28:15 +02:00
David Bauer
4f68ddf0d0
Merge pull request #2242 from Dark4MD/master
ramips-mt76x8: add Xiaomi Mi Router 4A (100M Edition)
2021-06-21 16:17:25 +02:00
Matthias Schiffer
7e45878b4e
Merge pull request #2240 from blocktrron/pr-gluon-mesh-vpn-respondd-fix
gluon-mesh-vpn-core: fix potential null pointer dereferences
2021-06-16 17:29:15 +02:00
David Bauer
344f8a47db gluon-mesh-vpn-core: fix two more missing NULL checks
read_stdout can return NULL and thus the return value need to be checked
prior to accessing it.

Signed-off-by: David Bauer <mail@david-bauer.net>
2021-06-16 10:31:49 +02:00
Dark4MD
0b00ed9193 ramips-mt76x8: add Xiaomi Mi Router 4A (100M Edition) 2021-06-15 20:12:35 +02:00
Matthias Schiffer
f7e473edfa
gluon-mesh-vpn-tunneldigger: fix Lua mesh-vpn provider module location 2021-06-15 16:32:37 +02:00
David Bauer
7e1e9fe2bd gluon-mesh-vpn-core: avoid reading null pointer
In case the limit_ingress or limit_egress options are not present in
gluon's mesh_vpn section the respondd provider compares a string literal
with a NULL pointer, crashing respondd.

Check both pointers prior to comparing them in order to mitigate this
issue.

Suggested-by: Matthias Schiffer <mschiffer@universe-factory.net>
Signed-off-by: David Bauer <mail@david-bauer.net>
2021-06-14 11:08:38 +02:00
Matthias Schiffer
8a422ac0cb treewide: use lua-jsonc instead of lua-cjson for JSON handling during build 2021-06-12 23:30:47 +02:00
Martin Weinelt
c97be1e18a
Merge pull request #2209 from T-X/pr-batman-adv-noflood+mcast-fw-relax 2021-06-08 01:40:12 +02:00
aiyion.prime
b973c8f133 gluon-status-page: show bandwidth limits 2021-06-07 21:21:42 +02:00
aiyion.prime
c71959df68 gluon-mesh-vpn-core: add simple-tc respondd-provider
omit unlimited bandwidth limit
A value of '-' marks a streamdirection as unlimited.
2021-06-07 11:27:12 +02:00
aiyion.prime
b53997836f gluon-status-page: show vpn protocol 2021-06-05 21:39:34 +02:00
aiyion.prime
b0b80a32b7 gluon-mesh-vpn-core: add vpn protocol respondd provider 2021-06-04 18:41:10 +02:00
David Bauer
98a1c196ed mesh-vpn: fully abstract VPN methods
This fully abstracts VPN methods, making gluon-mesh-vpn-fastd and
gluon-mesh-vpn-tunneldigger completely self-contained.

Provide a LUA interface for generic interacting with VPN methods in
gluon-mesh-vpn-core and web packages.

This also adds the ability to install tunneldigger and fastd to the same
image, selecting the VPN method based on the selected domain.

Signed-off-by: David Bauer <mail@david-bauer.net>
2021-05-22 06:54:23 +02:00
David Bauer
436b29d767 gluon-config-mode-core: add missing uci save
A missing uci save for gluon-setup-mode caused the initial setup-process
to be stuck in a config-mode loop.
2021-05-18 19:16:18 +02:00
Matthias Schiffer
42335a07c9
gluon-config-mode-core: unconditionally run gluon-reconfigure
Simplify the individual form providers by always running reconfigure. This
also commits all UCI packages, so we can remove all tracking of UCI
sections from the wizard code.

Instead of returning a list of packages to commit, the providers just
save their settings directly. Explicit runs of upgrade scripts are
removed, as they are now run by reconfigure.
2021-05-15 00:03:02 +02:00
Matthias Schiffer
16fab561db
gluon-config-mode-mesh-vpn: override Section:write() instead of Section:handle() 2021-05-15 00:03:02 +02:00
Matthias Schiffer
df9fa32d58
gluon-web-model: add state tracking to sections
This add support for a write() method on sections, in addition to the
value and form level write(). write() is only called when the section is
valid and visible. In addition, write() is empty by default, so it can be
overridden more easily.
2021-05-15 00:02:44 +02:00
Martin Weinelt
0ac3061225
Merge pull request #2214 from AiyionPrime/status_page_mesh_protocol 2021-05-09 16:53:49 +02:00
aiyion.prime
5c12b037d7 libgluonutil: free getline
Co-Authored-By: lemoer <git@irrelefant.net>
2021-05-08 20:35:24 +02:00
David Bauer
1c38906eef
Merge pull request #2163 from lemoer/pr_vpn_as_gluon_wired
Generalize proto "gluon_wired.sh"
2021-05-07 00:10:27 +02:00
aiyion.prime
a683486514 fixup! gluon-status-page: add mesh protocol to status-page 2021-05-06 19:03:06 +02:00
aiyion.prime
77a6b9a947 gluon-status-page: add mesh protocol to status-page 2021-05-06 16:37:32 +02:00
lemoer
bbecd44be1 gluon-core: extend gluon_wired proto for l3 devices
This is a preparation to use the gluon_wired.sh proto on top of
layer 3 tunnel interfaces.
2021-05-06 00:43:01 +02:00
lemoer
c14b4c0b4b gluon-core: add vxlan option to gluon_wired proto
Before this commit the decision whether a vxlan layer will be
introduced between the lower interface before the interface is
added to batman was inside the proto. Now the decision is moved
to the user of the proto.
2021-05-06 00:43:01 +02:00
David Bauer
9e09d08cf6
Merge pull request #2177 from blocktrron/pr-wan-radio-ifname
gluon-web-private-wifi: define ifname for WAN radio
2021-05-03 17:39:31 +02:00
David Bauer
e729b81312 gluon-private-wifi: add package
Add a package for handling upgrade-scripts speific for the WAN radio
operation.

This way, the config mode interface can be removed seperately from the
core functionality to perform tasks on system upgrade. This can be
useful when the setup-mode is removed entirely for space preservation.
2021-05-02 23:25:32 +02:00
David Bauer
a922944fee mesh-wireless-sae: drop unused function parameters
Drop these unused parameters in the function description, as only the
first parameter is referenced within the function block.
2021-05-02 02:20:00 +02:00
Linus Lüssing
98f3f63842 gluon-ebtables-filter-multicast: relax IPv6 multicast firewall rules
Allow the transmission of IPv6 multicast packets as long as they are not
flooded through the whole mesh.

Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
2021-05-01 22:36:14 +02:00
David Bauer
f4adb66772 gluon-web-private-wifi: define ifname for WAN radio
Set the ifname for the WAN radio (Private WLAN) to wanX, X being the
radio index.

All other radios created by Gluon already have their ifname defined
following this pattern.

Signed-off-by: David Bauer <mail@david-bauer.net>
2021-05-01 20:57:15 +02:00
David Bauer
d0551c2dcd web-admin: fix firmware partition name
The rudimentary flash size determination function expects the partition
for the devices firmware to be called "linux" while it is (since quite
some time) "firmware".

Fix this error to display available flash size as well as more useful
error message in case the uploaded firmware image exceeds the flash
space.

Signed-off-by: David Bauer <mail@david-bauer.net>
2021-05-01 03:15:51 +02:00
Linus Lüssing
288daf5a47 gluon-mesh-batman-adv: reenable batman-adv multicast optimizations
With batman-adv 2020.4 and the according backports to batman-adv v2019.2
several more bugs were found and fixed regarding the batman-adv
multicast optimizations feature.

Also a "wakeup-call" feature was added to the Linux bridge IGMP/MLD
snooping code in Gluon to work around issues with Android devices.

With batman-adv now at v2019.2, multicast-to-multi-unicasts conversion
is supported, too. Which means that even if there are a few outdated nodes
these and all other recipients will be served multicast packets via unicast,
too, as long as the sum of receiving nodes does not exceed the multicast
fanout setting (default: 16). If is exceeded, then batman-adv will revert
back to broadcast flooding automatically.

Long story short, with all these extra measures in place, let's reenable
the batman-adv multicast optimizations to reduce the layer 2 overhead
and in preparation for multicast applications in the future.

The default is enabled for this feature anyway, so removing the
"batctl multicast_mode 0" overwrite is sufficient.

Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
2021-04-29 00:40:39 +02:00
Jan-Tarek Butt
9826a12b38 ath79-generic: add Archer D50 v1
Signed-off-by: Jan-Tarek Butt <tarek@ring0.de>
Signed-off-by: David Bauer <mail@david-bauer.net>
2021-04-28 00:30:25 +02:00
David Bauer
490c522351
Merge pull request #2200 from AiyionPrime/status_page_role
gluon-status-page: add role to status-page
2021-04-28 00:11:26 +02:00
aiyion.prime
e6bdbe811a gluon-status-page: use sitetranslation for role 2021-04-23 15:57:37 +02:00
aiyion.prime
f14707cfa2 gluon-status-page: use mac80211 identifier (phy) 2021-04-22 22:43:48 +02:00
aiyion.prime
dc400c9220 gluon-status-page: reformat spaces 2021-04-22 21:43:55 +02:00
aiyion.prime
344d3ab686 gluon-status-page: add channels to status-page 2021-04-22 21:43:55 +02:00
aiyion.prime
b6ec181c80 gluon-status-page: add role to status-page 2021-04-12 12:08:04 +02:00
aiyion.prime
5e2525f573 statuspage: fix tq width
overflow for 'DejaVu Sans'.
2021-04-07 13:02:33 +02:00
J. Burfeind
2c0f8292c6
gluon-neighbour-info: end before timeout (#2185)
End the process after one result in case -l is not given
and destination address is unicast.
Reduces singleshot execution time from timeout seconds to around 150ms.

resolves #2184
2021-03-15 17:52:34 +01:00
Matthias Schiffer
2ecbe488bc
gluon-core: remove unneeded KERNEL_L2TP_IP config symbol
No package uses l2tp_ip.
2021-03-07 18:48:06 +01:00
Sven Eckelmann
50537e5474 ipq40xx: add support for Plasma Cloud PA2200
This device is a dual 5GHz device. It is recommended to manually change the
radio of the first device to the lower 5GHz channels and the second radio
to the upper 5GHz channels
2021-01-13 08:28:12 +01:00
Sven Eckelmann
17baf0f415 ipq40xx: add support for Plasma Cloud PA1200 2021-01-13 08:28:12 +01:00
David Bauer
db9768310a
Merge pull request #2153 from FreifunkVogtland/pa300
ath79: Add support for Plasma Cloud PA300(E)
2021-01-12 15:22:03 +01:00
Matthias Schiffer
17123aa420
gluon-respondd: fix count_stations() arguments
Fixes warnings about implicit pointer-to-int and int-to-pointer casts.

Fixes: 59a4cd63b8 ("gluon-respondd: expose OWE clients in nodeinfo")
2021-01-12 04:32:23 +01:00
Matthias Schiffer
52ee93f160
libgluonutil: add missing gluonutil_get_primary_domain() prototype
Fixes respondd on 64bit archs, as gluonutil_get_primary_domain() was
assumed to return int without the prototype.

Fixes: bcf57467dd ("libgluonutil: implement gluonutil_get_primary_domain()")
2021-01-12 04:29:08 +01:00
Sven Eckelmann
6e2faecb4e ath79: add support for Plasma Cloud PA300E 2021-01-10 09:06:02 +01:00
Sven Eckelmann
a9039229d6 ath79: add support for Plasma Cloud PA300 2021-01-10 09:05:58 +01:00
David Bauer
fd3ecea953
gluon-core: use OpenWrt label-mac as fallback (#2170)
This adds the OpenWrt label-mac device selection as the most preferred
fallback.

While this is only used on OpenWrt 19.07 for backports, we can also use
the label-mac device when backporting device support. This way, we have
to deal with less device-sepcific code downstream.

Signed-off-by: David Bauer <mail@david-bauer.net>
2021-01-10 00:51:15 +01:00
CodeFetch
50313697c7 packages: introduce syslog function in gluon.util
This commit introduces a simple function for writing to the syslog and
replaces the custom function used by gluon-hoodselector.
2020-12-29 01:33:29 +01:00
David Bauer
430c0ecc60 wireless-encryption mesh-wireless-sae: depend on OpenSSL daemons
This switches the used wireless daemons for OWE / SAE to the OpenSSL
flavors. The WolfSSL implementation currently seems to be broken.

THis switch may be reverted at a later point in time when hostapd /
wpa_supplicant implementations for WolfSSL have matured.
2020-12-16 00:52:27 +01:00
Martin Weinelt
277718887d
ath79-generic: add support TP-Link Archer C2 v3 (#2145)
CPU: 750 MHz QCA9563
Flash: 8 MB
RAM: 64 MB
Radio 1: Qualcomm Atheros QCA9563 (b/g/n)
Radio 2: Qualcomm Atheros QCA9887 (a/n/ac)
2020-11-11 22:44:11 +01:00
Steffen Förster
954f31a761 ramips-mt7620: add support for Netgear EX3700/EX3800
Specifications:
* SoC: MT7620A
* RAM: 64 MB DDR
* Flash: 8MB NOR SPI flash
* WiFi: MT7612E (5Ghz) and builtin MT7620A (2.4GHz)
* LAN: 1x100M

The -factory images can be flashed from the device's web
interface or via nmrpflash.

Both devices differ by a additional power outlet for the EX3800.
This patch has been tested on a EX3800 device.
2020-10-06 00:04:22 +02:00
Andreas Ziegler
ab2f82ca73
clean up old cleanup code lines (#2119)
* gluon-core: remove obsolete file 100-core-reset-sysctl

* gluon-core: remove obsolete cleanup line

* gluon-client-bridge: remove obsolete cleanup line
2020-09-17 18:19:59 +02:00
David Bauer
5b068d7c47
treewide: rename local_client zone (#2115)
This renames the local_client zone to loc_client, as local_clint exceeds
the maximum zone length allowed for firewall3, which is 11 bytes.

This worked previously due to firewall3 using unsafe string operations.
Now creation of the chain fails (latest OpenWrt master).
2020-09-13 05:24:33 +02:00
Andreas Ziegler
37a40cbca2
Merge pull request #2111 from freifunk-gluon/features-fix
Fix two feature handling bugs
2020-08-30 17:20:51 +02:00
T-X
d73c6b2bcf
gluon-ebtables-filter-multicast: allow respondd queries (#2103)
This allows running a respondd querier and map server behind a Gluon
node.

For instance at Freifunk Lübeck we now moved the map server
behind a Gluon VM and removed batman-adv and fastd from the
map server VM to reduce the maintenance work.

Increased multicast overhead should be minimal / non existent, as it is
unlikely to accidentally have respondd queriers running behind a Gluon
node.

Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
2020-08-29 09:52:55 +02:00
Matthias Schiffer
13b743d51e features: fix handling of logical expressions
The rewrite of the feature handling introduced multiple major bugs. One
of them was caused by the way Lua's logical operators work:

An expression of the form

    _'autoupdater' and _'web-advanced'

would return 'web-advanced' rather than the boolean true when _ returned
both strings unchanged (because the features are enabled).

As entries with more than a single feature name in their expressions did
not set no_default, Gluon would then attempt to add gluon-web-advanced to
the package selection, as web-advanced is a "pure" feature.

To fix this, and get rid of the annoying nodefault, separate handling of
"pure" feature and handling of logical expressions into two separate
functions, called feature() and when(). To simplify the feature
definitions, the package list is now passed directly to these functions
rather than in a table with a single field 'packages'.

Fixes: ee5ec5afe5 ("build: rewrite features.sh in Lua")
2020-08-28 22:27:38 +02:00
Martin Weinelt
b1294472c6
Merge pull request #2065 from freifunk-gluon/early-reconfigure
Domain switch during reboot/gluon-reload
2020-08-22 19:50:55 +02:00
Jan-Tarek Butt
94f5bd23b9 gluon-core: 200-wireless simplify if conditions
Signed-off-by: Jan-Tarek Butt <tarek@ring0.de>
2020-08-19 17:16:22 +02:00
Martin Weinelt
78f4d0a348
Merge pull request #2099 from mweinelt/sae-wolfssl
gluon-mesh-wireless-sae: switch to wpa-supplicant-mesh-wolfssl
2020-08-16 01:50:58 +02:00
Martin Weinelt
e9e22f60e7
Merge pull request #2042 from blocktrron/wpa3-wolfssl
gluon-wireless-encryption-wpa3: switch to hostapd-wolfssl
2020-08-16 01:50:44 +02:00
Martin Weinelt
882595cc21
gluon-mesh-wireless-sae: switch to wpa-supplicant-mesh-wolfssl 2020-08-16 01:14:22 +02:00
Matthias Schiffer
d82ffb4f81
gluon-autoupdater: make site.conf branch setting optional
Default to the alphabetically smallest branch if none is set in
site.conf.

Also prevent enabling the autoupdater when no branches exist.
2020-08-15 16:36:27 +02:00
Matthias Schiffer
ee53357580
gluon-autoupdater: split CONFIG_GLUON_BRANCH into two separate options
The new options are CONFIG_GLUON_AUTOUPDATER_BRANCH and
CONFIG_GLUON_AUTOUPDATER_ENABLED and allow to control the default branch
and default enable status separately.

The `or ''` fallback in targets/generic is removed, as GLUON_ENV will
set all variables in GLUON_VARS, making previously non-existing
variables exist with an empty value.
2020-08-15 16:36:27 +02:00
Matthias Schiffer
26f02a4eb3
gluon-site: print better error message for domain code conflicts (#2098)
We already have a proper message when the creation of an alias fails
because of a name conflict. Also add a message when the primary filename
of a domain config is already occupied by another domain's alias.

Also add an 'Error:' prefix to the existing message to easier to see.
2020-08-15 16:11:49 +02:00
Matthias Schiffer
de5ebfa44c
gluon-core: run firewall upgrade script after basic network setup (#2091)
Reorder scripts so that the mesh_lan interface is accounted for.

Two other firewall upgrade scripts (mesh-babel and l3roamd) are
reordered as well. While there seems to be no hard dependency at the
moment, it makes sense to run the basic setup first, also to avoid
problems with future changes.

Closes: #2090
Fixes: ed094bc68c ("gluon-core: firewall: Allow custom gluon_wired interfaces (#2041)")
2020-08-14 21:02:55 +02:00
Matthias Schiffer
e06081c3fc
Merge pull request #2069 from freifunk-gluon/web-theme-cleanup
gluon-config-mode-theme: cleanup and select box theming
2020-08-10 21:33:40 +02:00
Andreas Ziegler
6346d20b2d
Merge pull request #2058 from freifunk-gluon/board-json-ifnames
Use LAN/WAN interfaces from board.json, add lantiq special case
2020-08-09 00:37:40 +02:00
Andreas Ziegler
892405b9e0
Merge pull request #2043 from freifunk-gluon/iface-type
Fix tunnel interface detection in respondd nodeinfo
2020-08-09 00:36:14 +02:00
David Bauer
64f4095c1c
gluon-status-page: add wireless client count (#2085)
This adds the wireless client count for 2.4GHz and 5 GHz radios to the
status page. Previously, only the total client count advertised by
the mesh protocol was visible.
2020-08-09 00:34:23 +02:00
David Bauer
73b830eb32
gluon-web: don't display outdoor mode on preserve_channels (#2074)
This will hide the outdoor mode setting on compatible devices in case
the defined channels should be preserved.

Otherwise a user might be under the impression their device is compliant
with outdoor operation when in reality it still uses prohibited
channels.
2020-07-05 19:05:27 +02:00
Matthias Schiffer
1fc71a73b3
gluon-config-mode-geo-location-osm, gluon-web-osm: add support for custom tile layers (#2072)
Allow replacing the default OSM layer with a custom XYZ layer in
site.conf.
2020-07-05 17:06:59 +02:00
Matthias Schiffer
9b3ee477fa
Rewrite features.sh in Lua (#2045)
* build: target_config_lib: introduce concat_list helper

* build: rewrite features.sh in Lua

The `features` file is converted to a Lua-based DSL.

A helper function `_` is used in the DSL; this will return the original
string for enabled features, and nil for disabled features. This allows
to use boolean operations on features without making the code too
verbose.

Besides having more readable and robust code, this also fixes the bug
that all files `packages/*/features` were evaluated instead of only
using the feature definitions of currently active feeds.

* build: add luacheck support for package/features
2020-07-04 22:07:55 +02:00
Matthias Schiffer
f75f40d29a
gluon-config-mode-theme: add cross-browser styling for <select> elements
Replace the ugly arrow shown in Firefox with a custom SVG arrow. Tested
and working in Firefox, Chrome and Edge. The arrow doesn't show in IE, but
the gluon-web-model JavaScript is already severely broken in IE, so we
don't care.
2020-07-03 21:53:51 +02:00
Matthias Schiffer
5263583b74
gluon-config-mode-theme: clean up SCSS
Remove unused and obsolete code.
2020-07-02 23:45:34 +02:00
Matthias Schiffer
7360e97a9c
gluon-web-*: remove non-existing CSS classes 2020-07-02 23:43:23 +02:00
Matthias Schiffer
c2f9c28e0e
gluon-config-mode-theme: indent scss using tabs 2020-07-02 22:57:13 +02:00
Matthias Schiffer
02c8650bae gluon-scheduled-domain-switch: use gluon-switch-domain 2020-07-02 22:35:05 +02:00
Matthias Schiffer
6ab9d3415d gluon-hoodselector: use gluon-switch-domain 2020-07-02 22:35:05 +02:00
Matthias Schiffer
6750aef017 gluon-core: add gluon-switch-domain utility 2020-07-02 22:35:05 +02:00
Matthias Schiffer
e32fa5bc64
gluon-radv-filterd: add string.h and guard to mac.h
- #pragma once include guard
- include string.h to get memset and memcmp prototypes to fix respondd
  provider build warning
2020-07-02 00:17:50 +02:00
Matthias Schiffer
fcd07de676
gluon-radv-filterd: downgrade frequent messages to DEBUG_MSG
When the network connectivity is bad, routers may not appear in the
translation tables, or there may be no originator with TQ >0. Such
conditions to not warrant spamming the log with error messages.
2020-07-02 00:10:45 +02:00
Matthias Schiffer
e384f899b7
gluon-radv-filterd: remove unneeded memset 2020-07-02 00:10:29 +02:00
Matthias Schiffer
ee5ec5afe5 build: rewrite features.sh in Lua
The `features` file is converted to a Lua-based DSL.

A helper function `_` is used in the DSL; this will return the original
string for enabled features, and nil for disabled features. This allows
to use boolean operations on features without making the code too
verbose.

Besides having more readable and robust code, this also fixes the bug
that all files `packages/*/features` were evaluated instead of only
using the feature definitions of currently active feeds.
2020-07-01 20:35:22 +02:00
Matthias Schiffer
8a79d0249f
gluon-scheduled-domain-switch: move gluon-switch-domain to /lib/gluon/scheduled-domain-switch
This script is an implementation detail - let's not clutter the global
$PATH namespace with a script with such a generic name.
2020-06-30 23:49:01 +02:00
Matthias Schiffer
60351a1f19
gluon-core: allow to switch domains during reconfiguration
When gluon.core.switch_domain is set, it replaces the old domain.

This also replaces an unnecessary uci:commit() with uci:save().
2020-06-30 23:49:01 +02:00
Matthias Schiffer
62e71fbc40
gluon-core: run gluon-reconfigure on boot when gluon.core.need_reconfigure is set 2020-06-30 23:49:00 +02:00
Matthias Schiffer
cf0dc24463
gluon-setup-mode: create symlinks in install script
The package rebuild logic of OpenWrt only checks regular files. Avoid
symlinks in the files directory to make rebuilds more robust.
2020-06-30 23:48:55 +02:00
David Bauer
9be7a5cad7
gluon-wan-dnsmasq: read interfaces to update from flag-files (#2060)
This commit changes the behavior for the wan-dnsmasq to read the
interfaces to update the DNS servers on from flag-files.

This way, external custom packages which add a custom VPN WAN interface
can update the DNS server gluon is using for WAN resolving.
2020-06-30 16:37:09 +02:00
Matthias Schiffer
fa0e2d06b6
gluon-core: lantiq: use WAN interface from switch0 configuration
On lantiq, the default WAN ifname is 'dsl0' even on devices that have a
separate WAN port. At least on devices using swconfig we can override
this with the switch port labelled as 'wan'.
2020-06-21 17:47:45 +02:00
Matthias Schiffer
5e44f7cdde
gluon-core: get LAN and WAN interfaces from board.json
Instead of looking at the initial UCI config, we can read this
information from board.json.
2020-06-14 12:38:53 +02:00
David Bauer
baa53b4d8b
Merge pull request #2052 from blocktrron/rt2x00-80211w
mac80211: rt2800: enable MFP support unconditionally
2020-06-13 19:07:52 +02:00