Commit Graph

1512 Commits (main)

Author SHA1 Message Date
David Bauer b95b857aa8
Merge pull request #2339 from freifunk-gluon/status-page-iwinfo
gluon-status-page: use UCI + iwinfo to get channel information
2022-01-02 19:18:53 +01:00
Matthias Schiffer eaac48e20d
gluon-mesh-vpn-fastd: remove obsolete migration 2022-01-01 01:46:19 +01:00
Matthias Schiffer 97ef7889c6
gluon-core: remove more obsolete migrations 2022-01-01 01:45:52 +01:00
Matthias Schiffer 9712912904
gluon-l3roamd: remove obsolete migration code 2021-12-31 23:22:14 +01:00
Matthias Schiffer 5b40265ff2
gluon-mesh-batman-adv: remove obsolete migration code 2021-12-31 23:16:15 +01:00
Matthias Schiffer bae14abca4
gluon-core: remove obsolete proto 'batadv' -> 'gluon_mesh' migration
More migration code from 2016.
2021-12-31 22:51:29 +01:00
Matthias Schiffer 16bf5e3e5d
gluon-core: remove obsolete sysconfig.gluon_version handling
The file /lib/gluon/version/core hasn't existed since early 2014, so
this whole script is obsolete.
2021-12-31 22:51:29 +01:00
Matthias Schiffer 4019293e85
gluon-respondd: remove obsolete migration from upgrade script (#2350)
announced was renamed to respondd in 2016. Let's remove the obsolete
migration code.
2021-12-25 11:42:57 +01:00
David Bauer fdc79c5721
gluon-ebtables-limit-arp: declare clock as extern (#2343)
Declare the clock variable as extern in the header file.

Fixes compilation of gluon-ebtables-limit-arp with OpenWrt master:

multiple definition of `clock'; /gluon/openwrt/tmp/ccuynR0G.o:(.bss+0x230): first defined here

Signed-off-by: David Bauer <mail@david-bauer.net>
2021-12-20 17:37:51 +01:00
Matthias Schiffer 17e1aa4ffd
gluon-core: migrate wireless configuration from hwmode to band
The migration is done very early, as other upgrade scripts depend on the
band setting through platform.device_uses_11a().
2021-12-19 16:43:19 +01:00
David Bauer c52089fcda
treewide: use radio band option to determine frequency band
The 'hwmode' setting has been replaced with 'band' in OpenWrt to add
support for newer bands outside of 2.4G and 5G. Adjust Gluon accordingly.

[Matthias Schiffer: rebased, extended commit message]
2021-12-19 16:43:12 +01:00
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