Commit Graph

4020 Commits

Author SHA1 Message Date
Matthias Schiffer
a671b5081c
gluon-core: preserve explicitly marked network and system sections
A section can be marked as preseved by setting the gluon_preserve option
to 1. In addition the following conditions must hold:

- The preserved section must not already exist after OpenWrt's and
  Gluons setup scripts run. Modifying existing sections is currently
  unsupported.
- Preserved sections must be named, so it can be detected whether a
  section conflicts with a preexisting one.
2022-02-22 18:52:15 +01:00
Matthias Schiffer
6dcee2e324
gluon-web-network: update wired mesh settings for new role-based configuration 2022-02-22 18:52:15 +01:00
Matthias Schiffer
316e96a467
gluon-core, gluon-setup-mode: reset ifname sysconfigs on each update, introduce single_ifname
Allow interface names to change on updates to handle hwconfig -> DSA and
similar migrations.

On devices with only a single interface, a sysconfig single_ifname is
created instead of wan_ifname or lan_ifname to allow separate
configuration in site.conf.
2022-02-22 18:52:15 +01:00
Matthias Schiffer
c779d12369
treewide: use interface roles as basis for network configuration
With the new role-based interface configuration, it would be better to
rename the wan/wan6 interfaces to uplink/uplink6, but that would cause
unnecessary churn for the firewall configuration, so it is left for a
later update.

As all interfaces with the 'uplink' role are in the br-wan bridge, it is
not possible to assign these to the 'mesh' role independently - instead,
br-wan is added as a mesh interface as soon as a single interface has
both the 'uplink' and 'mesh' roles. The UCI section for this
configuration is now called 'mesh_uplink' instead of 'mesh_wan'.

For all interfaces that have the 'mesh', but not the 'uplink' role a
second configuration 'mesh_other' is created. If there is more than one
such interface, all these interfaces are bridged as well (creating a
bridge 'br-mesh_other'). This replaces the 'mesh_lan' section with its
optional 'br-mesh_lan' bridge, but can also include interfaces that were
not considered "LAN" when interfaces roles are modified (via site.conf
or manually).
2022-02-22 18:52:15 +01:00
Matthias Schiffer
4b8251c988
gluon-core: initialize interfaces role configuration
The new configuration generates sections iface_single/lan/wan in
/etc/config/gluon. These sections usually refer to a sysconfig-controlled
interface list, but adding custom sections with verbatim interfaces names
is also possible.

Each interface section contains a list of roles. The supported roles are
'client', 'uplink' and 'mesh'. Multiple roles can be configured on the
same interface (for example the old 'mesh_on_wan' setting would become
'uplink'+'mesh').

'client' is subsumed by any other role configured on the same interface
('client'+'mesh' is equivalent to 'mesh'). This property is important, as
it allows the Wired Mesh settings in gluon-web-network to simply add and
remove the mesh role without having to care what other roles are set -
so in the default setup, this would switch between 'client' and
'client'+'mesh' for the LAN interface.

By default, the WAN interface has role 'uplink' and the LAN interface
'client'; if only a single interface exists, the roles from the WAN
interface are used by default. The default for each of the three
interfaces (WAN/LAN/single) can be changed separated in site.conf,
superseding the old mesh_on_wan, mesh_on_lan and single_as_lan settings.
2022-02-22 18:52:15 +01:00
Matthias Schiffer
05c29512ec
gluon-core: sysconfig: avoid unnecessary writes
Do not write files when the content is unchanged.

Avoids a few unnecessary filesystem writes when resetting ifname
sysconfigs on each upgrade.
2022-02-22 18:52:15 +01:00
Matthias Schiffer
c2a5f57c40
treewide: regenerate network and system configs on every reconfigure 2022-02-22 18:52:15 +01:00
Matthias Schiffer
eea49a2834
gluon-config-mode-core: discard gluon-reconfigure output (#2395)
The stdout output of gluon-web scripts is directly sent to uhttpd,
becoming a part of the HTML output or even replacing HTTP status or
headers. The output of gluon-reconfigure is not supposed to end up
there.

While we're at it, also add an exec to avoid an unnecessary shell
process.
2022-02-22 18:51:45 +01:00
Igor Scheller
bbc00017a9
gluon-web-osm: Fix " rendering in attribution with CDATA tag (#2398) 2022-02-20 11:51:58 +01:00
Martin Weinelt
65f5a3b0dd
Merge pull request #2394 from freifunk-gluon/update-ol 2022-02-15 15:51:24 +01:00
Matthias Schiffer
62b24ed7ce
gluon-web-osm: update OpenLayers default URL to 5.3.0
The OpenLayers JS/CSS download URL is dead. Update it to make the map
work again:

- Update from OpenLayers 5.2.0 to 5.3.0
- Switch from the obsolete rawgit.com URL to jsdelivr.net (rawgit.com
  was only redirecting to jsdelivr.net for the last few years anyways)
- Set a fixed commit in the URL, so the URL doesn't become outdated again
2022-02-13 22:07:36 +01:00
Martin Weinelt
545d1cbb11
patches: build perl single-threaded (#2392)
Prevents spurious build failures.
2022-02-11 21:40:22 +01:00
David Bauer
2729293058
Merge pull request #2359 from freifunk-gluon/x86-separate-images
x86: copy separate kernel and rootfs images to "other" directory
2022-02-08 20:43:34 +01:00
Matthias Schiffer
68e8d32570
Merge pull request #2383 from freifunk-gluon/web-fixes
gluon-web: prohibit cross-origin POST requests
2022-02-03 16:49:22 +01:00
Matthias Schiffer
b6e498ba06
Merge pull request #2381 from freifunk-gluon/patch-cleanup
Update OpenWrt base, clean up patches
2022-02-03 16:48:54 +01:00
Matthias Schiffer
db80146093
Merge pull request #2368 from freifunk-gluon/lint-sh-fixes
lint-sh fixes
2022-02-03 16:37:18 +01:00
Matthias Schiffer
1041014cf3
Merge pull request #2382 from freifunk-gluon/cleanup
Removal of more obsolete migrations, minor cleanup and improvements to lsupgrade.sh
2022-02-01 23:31:41 +01:00
Matthias Schiffer
a83466be6e gluon-web: prohibit cross-origin POST
As gluon-web uses standard multipart/form-data requests, browsers don't
enforce any cross-origin restrictions. To prevent malicious injection of
POST requests into the config mode, match the Origin header against the
Host header of the request.
2022-02-01 23:27:38 +01:00
Matthias Schiffer
f3960eeb47 gluon-web: improve error handling of parse_message_body()
Actually raise an error and turn it into an HTTP 400 return code when
something goes wrong, rather than ignoring the error.

We also improve the conditions under which errors are thrown before
pump() is called: We don't need to check for the multipart/form-data
content-type twice, and a POST without this content-type is now always
an error.
2022-02-01 23:27:38 +01:00
Matthias Schiffer
de43b306d4 gluon-web: add CRLF to text/plain Internal Server Error output
Having a trailing newline is nice when viewing the returned data in a
terminal.
2022-02-01 23:27:38 +01:00
Matthias Schiffer
94519cfc56
gluon-web-*: remove unused "token" form value
This was a remnant of LuCI that was never used in gluon-web.
2022-02-01 23:22:08 +01:00
Matthias Schiffer
c75d90d9ab
workflows: lint: switch from apt to apt-get -y, add update
Using apt in scripts is discouraged. Also add an update to hopefully fix
the lua-check installation failure in CI.
2022-02-01 23:22:08 +01:00
Martin Weinelt
ae1187a29e
Merge pull request #2387 from freifunk-gluon/backport-action 2022-02-01 01:26:56 +01:00
Martin Weinelt
139c56073a
workflows: add backports action
By applying a label `backport <branch>` the action will automatically
try to cherry-pick the change to the target branch after the pull
request was successfully merged.
2022-02-01 01:26:30 +01:00
Matthias Schiffer
3ea770db73
ath79-generic: swap interfaces on TP-Link WBS210 v2 (#2385)
Swap the interfaces so than the PoE input port LAN0 is used for WAN and
config mode, and LAN1 becomes LAN.

To this end, the code previously used for ar71xx and removed in
commit 9fdc57c175 ("treewide: drop ar71xx platform specific code") is
reintroduced.

Fixes #2384
2022-01-28 19:45:34 +01:00
Matthias Schiffer
578daf5f87
gluon-core: remove obsolete config file 2022-01-23 14:44:07 +01:00
Matthias Schiffer
12127813c5
gluon-core: move preserve_channels setting to /etc/config/gluon
/etc/config/gluon-core is used for nothing else.

As /etc/config/gluon uses a named wireless section, also change the
get_first() to get().
2022-01-23 14:44:06 +01:00
Matthias Schiffer
b68a07e930
gluon-mesh-vpn-fastd: merge secret generation setup into main upgrade script
There wasn't really a reason to have a separate script to set a single
value.

In addition, the old script was using the identifier 'c' instead of
'uci' for the UCI cursor. Following the convention of the other scripts
is helpful so it is easy to grep for all uses of a certain config file/
option.
2022-01-23 14:44:06 +01:00
Matthias Schiffer
d8f6ed2406
gluon-node-info: remove obsolete migration/fixup 2022-01-23 14:44:06 +01:00
Matthias Schiffer
225e8692bd
gluon-radvd: remove obsolete migration 2022-01-23 14:44:06 +01:00
Matthias Schiffer
c530070e96
gluon-mesh-vpn-tunneldigger: remove obsolete migration 2022-01-23 14:44:06 +01:00
Matthias Schiffer
84f4c164f4
gluon-setup-mode: remove obsolete migration 2022-01-23 14:44:06 +01:00
Matthias Schiffer
c7e38fdc2c
contrib: lsupgrade: optimize output
- Use printf instead of echo for better portability
- Print whole path without reordering components
- Deduplicate code
2022-01-23 14:44:06 +01:00
Matthias Schiffer
c0afb9cc39
contrib: lsupgrade: do not search the OpenWrt "packages" feed
Iterating over all the package directories in the OpenWrt feed takes a
while, even though it doesn't contain any upgrade scripts. Skip the
whole directory.
2022-01-23 14:44:06 +01:00
Matthias Schiffer
1e50966b84
kernel: drop obsolete ebtables patches
We are on Linux 5.4, so these patches for Linux 4.14 don't do anything.
2022-01-23 11:39:02 +01:00
Matthias Schiffer
0db3c58329
modules: update OpenWrt base
97b95ef8b918 uci: update to the latest master

Replace the downstream UCI patch with a proper OpenWrt 21.02 backport.
2022-01-23 11:36:08 +01:00
David Bauer
2924afe562
Merge pull request #2378 from freifunk-gluon/master-updates
modules: updates
2022-01-21 21:10:34 +01:00
Martin Weinelt
5e1d46e2b7 modules: update gluon
5bca036 pretty-hostname: instantly apply hostname
a85fa33 treewide: change Github URLs from git:// to https:// (#252)
2022-01-20 12:44:27 +01:00
Martin Weinelt
afc9d6b235 modules: update routing
c2e138d olsrd: add ubus ipc integration to olsrd
7d07ef9 CI: fix runtime testing for non master branch
61cd00c naywatch: introduce kick-count
440e7af naywatch: fix mode without watchdog
c8b613e olsrd: fix meshing via wireguard tunnels
2022-01-20 12:44:26 +01:00
Martin Weinelt
6149057072 modules: update packages
444b64e36 cryptsetup: update to version 2.4.3
a259a4aaa git: update to version 2.34.1
0cdffbaf9 crowdsec: update from upstream latest release 1.2.3
031fbb16a smcroute: update to 2.5.5
fcf163335 smcroute: update to 2.5.4
c7470d1d8 wg-installer: switch to ubus call for olsrd hotplug
8c3ce87fd wg-installer: rework iproute2 commands
3f88edfa5 2to3: add package host tool
bb09bc37b CI: fix runtime testing for non master branch
bbd3d70cd i2pd: Update to 2.40.0 and update package sources
19d32003c i2pd: remove unneeded functions.sh
8d150985c i2pd: Update to 2.38.0
5ee9fb98d i2pd: update to 2.36
d0bb48741 mariadb: Add sudo dependency
f4d8f9c98 mariadb: Check and fix datadir owner issues during upgrade
7a3f41af4 mariadb: update to version 10.4.22
d3e6dc51e mg: bump to 7.0
15b41a675 zerotier: add configuration reload trigger
2bca94d83 netdata: Update init script to use -D rather than -nd
c7fef6db5 atlas-probe: update to version 2.4.1
98c1fe435 atlas-sw-probe: update to version 5040
1a40e3c89 crowdsec-firewall-bouncer: update to 0.0.21
432140a36 crowdsec: update to 1.2.2
b5443ccdf apache: fixup apxs
19451ec86 apache: security bump to 2.4.51
6fe1b64e7 wg-installer: fix shell typo
f21f39cfd wg-installer: allow defining link costs for hotplugs
995251746 wg-installer: private key as parameter
652ebf1a3 wg-installer: generate new keys for every connection
5f517cc58 golang: Update to 1.17.6
92e357ebd wg-installer: fix using symlinks for conf files
caa72e5c5 fail2ban: fix 2to3 error
b3764db33 wg-installer: fix cleanup script
1e179f92a haveged: update to 1.9.17
d36455277 wg-installer: fix get_usage function
49f898044 wg-installer: delete old interfaces
335ad2a4d wg-installer: fix dependencies
f2745c85a wg-installer: fix typo in cleanup function
1de352b60 wg-installer: fix ipv4 meshing via olsr
efb5bdf07 wg-installer: add link-local to client interface
bf1c780af wg-installer: add cleanup script
032d0157c wg-installer: add ipv4 support
33d6705d2 getdns: remove maintainer
b1dfbf975 getdns: bump to 1.7.0
f755690b0 wg-installer: add hotplug script for olsr
85b6d750d radicale2: Update to 2.1.12
2415cbb9b radicale: Update to 1.1.7
4e1bfe4e9 inadyn: update to 2.9.1
2022-01-20 12:44:24 +01:00
Martin Weinelt
da6965c391 modules: update openwrt
1472a8fa42 procd: update to git HEAD
015f170fe6 procd: update to git HEAD
cd5ba0cfbb ustream-ssl: variants conflict with each other
6eced97ce4 lantiq: flag FritzBox 7360 family buttons active-low
b59f3b08b4 firmware-utils: tplink-safeloader: fix Archer A7v5 factory flashing from vendor fw > v1.1.x
43d105ec2a kernel: bump 5.4 to 5.4.171
1db847488d ath79: rb912: fix pll init issues
6ced8cad8e kernel: backport workaround for Realtek RTL8672 and RTL9601C chips
77ee281a3e kernel: add kmod-ledtrig-pattern
aa2de44cdd kernel: fix AutoLoad parameter for uleds module
bc37a699e5 kernel: add kmod-leds-uleds
96b5962704 mvebu: remove patch that was applied into linux stable
5beaa75d94 openssl: bump to 1.1.1m
93842b20dc bcm4908: include ATF in bootfs images
18b10db2f1 arm-trusted-firmware-bcm63xx: add ATF for Broadcom devices
739e359241 kernel: backport support for multicolor & RGB LEDs to 5.4
608c7dccf2 bcm4908: sysupgrade: add pkgtb format support
b6ed2641df busybox: backport dd support for iflag=count_bytes
7e4485fd5b bcm4908: add uboot-envtools to default packages
4cd5d11fa3 bcm4908: add fdt-utils to default packages
1d4a28d5e1 dtc: support printing binary data with fdtget
ce5d0378bf dtc: import package for dtc & fdt from packages feed
6292d1e354 bcm4908: sysupgrade: refactor handling different firmware formats
a00854040d ipq40xx: specify FritzBox 7530 LAN port label numbers
27225e3538 kernel: ath10k: provide a build variant for small RAM devices
104774c3b0 mvebu: puzzle: wan LED and fix default network
47d82f0710 mvebu: enable Aquantia phy driver for Puzzle devices
164ed6069c mvebu: add id for AQR112 Ethernet phy variants
daf4301071 mvebu: import patch enabling AQR113 PHY
ee5750043c mvebu: import patch enabling AQR112 and AQR412 PHY
a03840a1a9 mvebu: puzzle-m901: add LEDs, fan and reset button
280bb7c10c mvebu: puzzle-m902: add GPIO reset button
1e5df4d550 mvebu: puzzle-mcu: improve led driver
99a1e88297 mvebu: puzzle-m902: add driver for MCU driving LEDs, fan and buzzer
3b14ddf8d2 build: fix opkg install step for large package selection
2022-01-20 12:44:18 +01:00
Luflosi
55e95dd49b
ath79-generic: add support for TP-Link Archer A7 v5 (#2374) 2022-01-14 23:20:22 +01:00
Matthias Schiffer
a9f11e36bd
Merge pull request #2373 from mkg20001/infobinary
gluon-core: add gluon info binary
2022-01-14 20:19:08 +01:00
Maciej Krüger
a8d6a99f5b
gluon-mesh-vpn-wireguard: fix empty string key
Co-Authored-By: Matthias Schiffer <mschiffer@universe-factory.net>
2022-01-14 04:53:28 +01:00
Maciej Krüger
78ca654c5c
gluon-mesh-vpn-fastd: fix empty string key
Co-Authored-By: Matthias Schiffer <mschiffer@universe-factory.net>
2022-01-14 04:53:28 +01:00
Maciej Krüger
08a8ef0bcd
gluon-web-admin: remove pubkey empty string workarround
Co-Authored-By: Matthias Schiffer <mschiffer@universe-factory.net>
2022-01-14 04:53:25 +01:00
Maciej Krüger
816d2796be
gluon-core: add gluon info binary
This copies the code from web-admin and uses it to create a neat
cli-accessible summary about a node

This could also be extended or possibly have all the data the status
page has

Co-Authored-By: Matthias Schiffer <mschiffer@universe-factory.net>
2022-01-14 04:53:19 +01:00
J. Burfeind
7427ba2280
gluon-status-page: split bwlimit into two lines (#2371)
Fixes: 1cb0fc84fc ("gluon-status-page: swap bandwidth limits (#2304)")
Resolves #2370
2022-01-07 21:35:15 +01:00
Matthias Schiffer
f32c683601
scripts: lint-sh: ignore warnings about POSIX sh compatiblity
The following features are available in Busybox ash, so we don't need to
warn about them for runtime scripts:

- local keyword
- echo -n / -e
- String indexing

These warnings are new in shellcheck 0.7.2, which would otherwise fail
for various scripts.
2022-01-03 03:25:27 +01:00
Matthias Schiffer
24682a3197
contrib: push_pkg: fix lint issues with shellcheck 0.7.1
0.7.1 complains about unescaped backslashes in double quotes (which are
intepreted by printf in the two affected places). While the warning was
retired with shellcheck 0.7.2, it seems like a good idea to fix it
anyways.
2022-01-03 03:25:27 +01:00