Commit Graph

1144 Commits

Author SHA1 Message Date
Ruben Barkow
b9b61ed79c gluon-config-mode-theme: background grey of clicked buttons (#1492) 2018-07-25 22:36:48 +02:00
Ruben Barkow
ca2929a61f gluon-web-admin: add site-commit to info page (#1482) 2018-07-25 22:30:29 +02:00
Sven Eckelmann
b9ec173ffb ipq40xx: add support for OpenMesh A62
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.
2018-07-25 22:27:16 +02:00
Sven Eckelmann
36a5604dfe ipq40xx: add support for OpenMesh A42 2018-07-25 22:27:16 +02:00
Sven Eckelmann
3ef28a4684 gluon-client-bridge: Revert "move IPv4 local subnet route to br-client (#1312)"
The commit b3762fc61c ("gluon-client-bridge: move IPv4 local subnet route
to br-client (#1312)") moves the IPv4 prefix from the local-port interface
to br-client. A client requesting an IPv4 connection to the IPv4 anycast
address of the node (the device running gluon) will create following
packets:

1. ARP packet from client to get the MAC of the mac address of the anycast
   IPv4 address
2. ARP reply from node to client with the anycast MAC address for the IPv4
   anycast address
3. IPv4 packet from client which requires reply (for example ICMP echo
   request)
4. ARP request for the client MAC address for its IPv4 address in prefix4
   (done with the mac address of br-client and transmitted over br-client)
5. IPv4 packet from node (transmitted over br-client with br-client MAC
   address) as reply for the client IPv4 packet (for example ICMP echo
   reply)

The step 4 and 5 are problematic here because packets use the node specific
MAC addresses from br-client instead of the anycast MAC address. The client
will receive the ARP packet with the node specific MAC address and change
their own neighbor IP (translation) table. This will for example break the
access to the status page to the connected device or the anycast DNS
forwarder implementation when the client roams to a different node.

This reverts commit b3762fc61c and adds an
upgrade code to remove local_node_route on on existing installations.
2018-07-22 16:42:41 +02:00
Sven Eckelmann
fc59d5208d gluon-mesh-batman-adv: Drop IPv4 anycast related packets from/to bat0
The commit b3762fc61c ("gluon-client-bridge: move IPv4 local subnet route
to br-client (#1312)") moves the IPv4 prefix from the local-port interface
to br-client. A client requesting an IPv4 connection to the IPv4 anycast
address of the node (the device running gluon) will create following
packets:

1. ARP packet from client to get the MAC of the mac address of the anycast
   IPv4 address
2. ARP reply from node to client with the anycast MAC address for the IPv4
   anycast address
3. IPv4 packet from client which requires reply (for example ICMP echo
   request)
4. ARP request for the client MAC address for its IPv4 address in prefix4
   (done with the mac address of br-client and transmitted over br-client)
5. IPv4 packet from node (transmitted over br-client with br-client MAC
   address) as reply for the client IPv4 packet (for example ICMP echo
   reply)

The step 4 is extremely problematic here. ARP replies with the anycast IPv4
address must not be submitted or received via bat0 - expecially not when it
contains an node specific MAC address as source. When it is still done then
the wrong MAC address is stored in the batadv DAT cache and ARP packet is
maybe even forwarded to clients. This latter is especially true for ARP
requests which are broadcast and will be flooded to the complete mesh.

Clients will see these ARP packets and change their own neighbor IP
(translation) table. They will then try to submit the packets for IPv4
anycast addresses to the complete wrong device in the mesh. This will for
example break the access to the status page to the connected device or the
anycast DNS forwarder implementation. Especially the latter causes extreme
latency when clients try to connect to server using a domain name or even
breaks the connection setup process completely. Both are caused by the
unanswered DNS requests which at first glance look like packet loss.

An node must therefore take care of:

* not transmitting ARP packets related to the anycast IPv4 address over
  bat0
* drop ARP packets related to the anycast IPv4 when they are received on
  bat0 from a still broken node
* don't accept ARP packets related to the anycast IPv4 replies on local
  node when it comes from bat0

Fixes: b3762fc61c ("gluon-client-bridge: move IPv4 local subnet route to br-client (#1312)")
2018-07-22 16:42:41 +02:00
Adorfer
65d172f835
gluon-config-mode-mesh-vpn: i18n/de: fix missing comma 2018-07-19 19:28:48 +02:00
Matthias Schiffer
017bcd43ce
gluon-core: remove nixio dependency 2018-07-17 20:08:16 +02:00
Matthias Schiffer
06a9d61523
gluon-web-*: replace nixio with luaposix 2018-07-17 20:08:16 +02:00
Matthias Schiffer
92d90cdfb7
gluon-config-mode-*: replace nixio with gluon.util 2018-07-17 20:08:16 +02:00
Matthias Schiffer
90031ba97a
gluon-status-page: replace nixio with luaposix 2018-07-17 20:08:16 +02:00
Matthias Schiffer
5fc04fb34a
gluon-wan-dnsmasq: replace nixio with luaposix 2018-07-17 20:08:15 +02:00
Matthias Schiffer
32394dc694
gluon-mesh-vpn-core: replace nixio with luaposix 2018-07-17 20:08:15 +02:00
Matthias Schiffer
fd10d7cbb0
gluon-core: replace nixio with luaposix and luabitops 2018-07-17 20:08:15 +02:00
Matthias Schiffer
60a0e78a4a
gluon-core: gluon.util: remove unused function readline() 2018-07-17 20:08:15 +02:00
David Bauer
c4b1febd31 ipq40xx: add target
This commit adds support for the new ipq40xx target.
2018-07-16 01:39:36 +02:00
Matthias Schiffer
7e4bfee3c9
gluon-core: upgrade: remove unused variables 2018-07-14 13:35:28 +02:00
Matthias Schiffer
f1f2bae94f
gluon-core: remove obsolete gluon.site_config library 2018-07-13 23:16:33 +02:00
David Bauer
52bc028e6b ar71xx: add support for OCEDO Koala (#1475) 2018-07-13 01:25:58 +02:00
Matthias Schiffer
210d97c53e
Switch to OpenWrt 18.06 branch 2018-07-10 22:57:40 +02:00
Matthias Schiffer
da058c5ef9
gluon-status-page: move neighbours-batadv wrapper to batadv-specific package 2018-06-30 16:03:13 +02:00
Andreas Ziegler
5cf7c53e69
gluon-config-mode-geo-location: allow overriding geo location description text 2018-06-29 21:01:24 +02:00
Andreas Ziegler
533ea986ad
gluon-config-mode-hostname: allow overriding hostname description text 2018-06-29 20:55:32 +02:00
Ralf Jung
1649635be4
gluon-config-mode-contact-info: allow overriding contact field help and note in site 2018-06-24 19:47:52 +02:00
J0WI
ee97fe8b9e gluon-web-admin: show sha256sum to verify upgrade (#1441) 2018-06-19 19:24:27 +02:00
Sven Eckelmann
ef819cc196 ar71xx: add support for OpenMesh OM2P(-HS)v4 (#1426) 2018-06-09 13:55:38 +02:00
Sven Eckelmann
9d719a2e57 ar71xx: add support for OpenMesh A40/A60 (#1424) 2018-06-08 20:18:30 +02:00
Jan-Philipp Litza
e909d45ab0 gluon-radv-filterd: Invalidate originators cache after some time (#1343) 2018-06-05 21:55:30 +02:00
Matthias Schiffer
603912dd0d
gluon-config-mode-contact-info: restore datatype definition
optional = true does not make sense without a datatype. When no datatype is
set, the empty string will be a valid value, so data is never unset in the
write function. Restore the minlength(1) datatype so the contact setting is
deleted as intended when no value is provided.
2018-06-04 23:37:32 +02:00
Matthias Schiffer
b8fa1b2a99
gluon-config-mode-contact-info: remove useless description
The first half was just the package title, the second was outdated.
2018-06-04 23:15:59 +02:00
Matthias Schiffer
f51eac7582
gluon-status-page: add contact information again
The field was accidentally removed during the status-page rewrite.

Fixes #1401
2018-05-22 22:48:27 +02:00
Christof Schulze
ab7f1acd0c gluon-config-mode-contact-info: provide enhancements for german, english and french translation to comply with DSGVO (#1394)
* do not allow to obligatorily require contact information
* add remark that the data is provided voluntarily
* mention how to delete the data
* be very clear about the fact that the data being entered is public and
  can be downloaded and processed by anyone.
2018-05-19 19:26:33 +02:00
David Bauer
ed7d68490d gluon-config-mode: add platform on config-mode reboot (#1397)
This commit adds the ability to show information about the platform on
config-mode reboot.
2018-05-17 02:30:29 +02:00
lemoer
73c30b0916 gluon-respondd: fix whitespace after "if" 2018-05-05 15:09:30 +02:00
lemoer
dde708692c gluon-respondd: use %SCNu64 instead of %llu for uint64_t 2018-05-05 15:09:30 +02:00
lemoer
6ac7e97fae gluon-respondd: add information from /proc/stat to "statistics"
This commit adds information about:
- how cpu time is spent since boot in jiffies (1/100*sek) (cpu)
    - the value is summed for all cores, so in 10 seconds the
      summed values will increase by 4000, if the cpu has
      4 cores
- context switches since boot (ctxt)
- interrupt counters since boot (intr, softirq)
- forks since boot (processes)

    { "stat": {
       "cpu": {
         "user": 219403,
         "nice": 1714,
         "system": 75159,
         "idle": 2727739,
         "iowait": 2943,
         "irq": 0,
         "softirq": 571
       },
       "intr": 8426340,
       "ctxt": 50992590,
       "processes": 10549,
       "softirq": 5161884
    } }
2018-05-05 15:09:30 +02:00
Matthias Schiffer
1f7ed28b76
gluon-core: set VXLAN/legacy mode in site config
In multidomain setups, VXLAN is enabled by default, but can be disabled in
domain configs using the mesh/vxlan option. In single domain setups, the
mesh/vxlan option is mandatory.

The UCI option for legacy mode is removed.

Fixes #1364
2018-04-27 18:05:50 +02:00
Matthias Schiffer
5d92f125cd
gluon-web-network: remove legacy option for wired mesh 2018-04-27 17:48:36 +02:00
Matthias Schiffer
3519f4e61b
gluon-radv-filterd: correct call to ebtables-tiny
Fixes: 8e5abf02ae ("treewide: switch to ebtables-tiny")
2018-04-27 14:38:01 +02:00
Christof Schulze
2465a103f6
gluon-status-page: when prettifying undefined numbers, show - instead of NaN 2018-04-16 10:23:15 +02:00
Matthias Schiffer
62943f9ca1
gluon-mesh-vpn-tunneldigger: fix typo in description 2018-04-15 22:48:23 +02:00
Matthias Schiffer
6304a317e4
gluon-l3roamd: fix interface checks in initscript
The local_node ifstatus must be checked for local-node, not client. While
we're at it, also clean up the syntax a bit.
2018-04-15 12:49:52 +02:00
Christof Schulze
8959d8c3ea
gluon-status-page: make status page mesh protocol agnostic
batman-adv-specific parts are moved to a new package
gluon-status-page-mesh-batman-adv.
2018-04-15 12:46:01 +02:00
Christof Schulze
b70d4ce20a
gluon-core, gluon-l3roamd: introduce script gluon-list-mesh-interfaces that lists all currently active mesh interfaces 2018-04-15 12:41:01 +02:00
Christof Schulze
6dff120e3c
gluon-status-page: reduce usage of absolute paths in cgi-bin scripts neighbours-nodeinfo and stations 2018-04-15 12:39:36 +02:00
Matthias Schiffer
35ade80f1c
gluon-status-page: move mesh protocol specific definitions into a separate file 2018-04-15 11:36:37 +02:00
Matthias Schiffer
3282a63ea7
gluon-status-page: remove "lastseen" field from neighbours-batadv output
The field is unused.
2018-04-15 10:09:36 +02:00
Matthias Schiffer
433af56f99
gluon-status-page: fix code indentation 2018-04-15 10:01:25 +02:00
Matthias Schiffer
994c94918a
treewide: automatically set SECTION and CATEGORY for Gluon packages 2018-04-14 00:01:04 +02:00
Matthias Schiffer
6f0d9f1e2d
gluon-status-page: fix typo in comment 2018-04-13 22:50:37 +02:00
Matthias Schiffer
74f4119c1b
treewide: add support for building kernel modules used by Gluon into the kernel 2018-04-13 17:32:20 +02:00
Matthias Schiffer
8e5abf02ae
treewide: switch to ebtables-tiny 2018-04-13 16:00:58 +02:00
Matthias Schiffer
543eb17882
gluon-core: remove DNS cache feature
dnsmasq's caching is severly broken and does not handle all answer records
equally. In particular, its cached answers are missing DNSKEY and DS
records, breaking DNSSEC validation on clients.

Remove the cache for now. It may return if dnsmasq is fixed or we switch to
a different resolver.
2018-04-13 15:15:40 +02:00
Matthias Schiffer
395266e404
gluon-core: remove obsolete dnsmasq upgrade script
The script cleaned up an old setting that was removed in 2014.
2018-04-13 15:01:43 +02:00
Matthias Schiffer
ba9fc94e85
gluon-core: get rid of old sysctl settings 2018-04-13 14:41:01 +02:00
Matthias Schiffer
9b937a8c64
gluon-core: remove unused gluon.sysctl Lua module 2018-04-13 14:41:01 +02:00
Matthias Schiffer
25b32ec2fe
treewide: move sysctl settings to /etc/sysctl.d
net.ipv6.conf.br-client.forwarding is moved from gluon-client-bridge to
gluon-mesh-batman-adv, as the setting is not useful with non-bridged
protocols.
2018-04-13 14:41:01 +02:00
Matthias Schiffer
46c5effae3
gluon-core: reduce mac80211 fq_codel memory limit to 256KB on devices with 32MB RAM 2018-04-11 08:33:30 +02:00
Linus Lüssing
951b6632bc gluon-ebtables-limit-arp: do not add multicast addresses to filter
With the batman-adv multicast support compiled back in again we end up
with multicast addresses in the batman-adv translation table.

Currently we wrongly interpret multicast addresses returned by TT as a
unique host, too, which adds them with a source address filter to
ebtables as well. However, the source address of an ethernet frames is
never supposed to be a multicat one.

This leads to unnecessary entries in ebtables. Fixing this by ignoring
those MAC addreses returned by TT which have the multicast bit set.

Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
2018-04-01 03:26:50 +02:00
Jan-Tarek Butt
d5ef9b67c9
gluon-mesh-vpn-tunneldigger: only allow in domain config
Signed-off-by: Jan-Tarek Butt <tarek@ring0.de>
2018-03-28 18:38:01 +02:00
Matthias Schiffer
f17bb94ad7
gluon-config-mode-theme: fix styling of select elements
* Use correct width
* Don't display focus outline (Webkit)
* Don't let option elements inherit error colors (Webkit)
2018-03-27 20:38:26 +02:00
Matthias Schiffer
6dc9369715
gluon-status-page: suppress "broken pipe" syslog message
Some HTTP endpoints were writing annoying "broken pipe" messages to stderr.
2018-03-27 19:48:04 +02:00
Martin Weinelt
946b42e234
gluon-config-mode-domain-select: allow hiding of individual domain codes 2018-03-20 18:05:38 +01:00
Matthias Schiffer
532b57011f
gluon-core, gluon-client-bridge: allow 0-character ESSIDs/mesh IDs 2018-03-17 15:38:24 +01:00
Jan-Tarek Butt
dda1b2a127
gluon-client-bridge: check AP SSID length to be in range of 1-32 characters 2018-03-17 15:33:40 +01:00
Jan-Tarek Butt
9a9024843b
gluon-core: check mesh ID and IBSS SSID length to be in range of 1-32 characters 2018-03-17 15:33:12 +01:00
Matthias Schiffer
7827f8960f
gluon-config-mode-hostname: add config_mode.hostname.optional site option
This setting allows to enforce manually setting a hostname.

In the initial configuration, the hostname field is now left empty; when
setting the hostname is not enforced, the default hostname is shown as the
field placeholder.

Fixes #1139
2018-03-17 12:51:14 +01:00
Matthias Schiffer
486c2e4821
gluon-config-mode-contact-info: change "mandatory" site option to "optional"
Also add documentation about config mode settings.
2018-03-17 12:27:57 +01:00
Matthias Schiffer
87ded4c3d8
gluon-config-mode-hostname: improve English node name explanation 2018-03-17 11:48:25 +01:00
Matthias Schiffer
9f86bf3155
gluon-core: add default_hostname helper 2018-03-17 11:44:33 +01:00
Matthias Schiffer
d87a798ac3
gluon-core: disable VXLAN checksums
Our VXLAN setup was changed to accept VXLAN packets without checksum almost
2 months ago, so we can disable sending the checksums now as well. Slightly
improves performance.
2018-03-16 20:17:03 +01:00
Matthias Schiffer
7f812e8754
package/features: never implicitly enable gluon-web-mesh-vpn-fastd
This package only provides the choice between "security" and "performance
mode". It should only be enabled when specified in site.mk.
2018-03-12 13:57:57 +01:00
Matthias Schiffer
c80c294b3f
gluon-mesh-batman-adv: increase bridge multicast querier robustness to 9
The RFC standard multicast querier interval is 120s. Our querier uses in
interval of 20s for better support of roaming clients, but our robustness
setting of 3 leads to external queriers using the standard interval to be
timeout after only 60s, leading to frequent "querier appeared/disappeared"
messages. Increase robustness so that external queriers with any interval
<180s are supported.
2018-03-11 12:36:54 +01:00
Matthias Schiffer
68a706a948
gluon.mk: remove GLUON_PKG_MAKE option 2018-03-09 10:05:44 +01:00
Matthias Schiffer
5e086da608
gluon-respondd: remove Gluon-specific provider directory
Our provider modules are prefixed with gluon- now, and the log message
about a missing provider dir was confusing users.
2018-03-08 21:46:05 +01:00
Matthias Schiffer
60522ee253
treewide: move package Makefile boilerplate to gluon.mk 2018-03-08 19:49:41 +01:00
Ruben Barkow
ee14a03e70 treewide: french translation: WLAN -> Wi-Fi (#1342) 2018-03-08 11:26:10 +01:00
Matthias Schiffer
ca43e9058f
gluon-radv-filterd: add missing build dependency on respondd 2018-03-07 21:26:11 +01:00
Matthias Schiffer
934221b86f
treewide: remove redundant definitions from package Makefiles 2018-03-07 21:23:41 +01:00
Matthias Schiffer
17370d8462
gluon-ebtables: unconditionally segment IGMP/MLD
We must ensure that each node becomes IGMP/MLD querier for its local
clients; having only a single querier for the whole mesh is generally
unreliable, leading to frequent "IGMP/MLD querier appeared/disappeared"
messages from batman-adv and unreliable snooping.

In smaller meshes it might be interesting only segment querier domains, but
allow membership reports to pass through the mesh, in order to support
snooping switches outside the mesh without special configuration. A
site.conf switch is provided to control this behaviour.

Fixes #1320
2018-03-07 08:12:30 +01:00
rubo77
d4bfa6c4e0 gluon-config-mode-hostname: clarify the use of the nodename 2018-03-02 02:57:59 +01:00
Matthias Schiffer
208cd4d98c
gluon-client-bridge: allow WLAN configs without ap section again
Fixes: 7ccdacd294 ("treewide: rework check_site_lib.lua")
2018-03-01 01:18:39 +01:00
Matthias Schiffer
3e88331137
gluon-status-page: add dependency on libubus-lua 2018-02-26 18:55:51 +01:00
Matthias Schiffer
27f7ce444f
gluon-status-page: when visiting via a next-node address, redirect to a unique address
A downside of this behaviour is that the page does not work for IPv4-only
clients, as the redirect will always point at an IPv6 address.

Still, it seems like a good idea to enforce the redirect even from the IPv4
next-node address, as switching nodes while being connected to the status
page would lead to unexpected behaviour.
2018-02-26 03:25:01 +01:00
Matthias Schiffer
fdf823a3a2
gluon-status-page-api: merge back into gluon-status-page
All Access-Control-Allow-Origin are removed to improve users' privacy. As
the status page API is thus not useful without the status page anymore,
merge them back into a single package.

The status-page-api respondd provider is removed as well.

Fixes #1194
2018-02-26 02:20:38 +01:00
Matthias Schiffer
88906f238b
gluon-status-page: reimplement based on gluon-web
This new status page is significantly smaller than the old one. It always
loads its resources from the same host as the page itself, not requiring
cross-origin requests anymore.

It also uses the common i18n infrastructure of gluon-web.

Fixes #914
2018-02-26 02:20:38 +01:00
Matthias Schiffer
b1aa5390a7
gluon-config-mode-core: move gluon-web base path to /lib/gluon/config-mode
- CGI script and index.html are moved from gluon-web to
  gluon-config-mode-core, the script is renamed to 'config'
- gluon-web and gluon-web-model base views and i18n files are symlinked
  into the new path
- gluon-web-theme is renamed to gluon-config-mode-theme and installs
  directly into the new path
- all gluon-web-* models, controllers and views are moved into the new
  path
2018-02-26 00:07:13 +01:00
Matthias Schiffer
3925344292
gluon-setup-mode: move HTTP server support to gluon-config-mode-core, add gluon-lock-password 2018-02-26 00:07:12 +01:00
Matthias Schiffer
9648489a01
gluon-web: reorganize layout handling
Also bring back gluon-web-theme's i18n strings.
2018-02-26 00:07:12 +01:00
Matthias Schiffer
c3e4ceed28
gluon-web: split out model support into a separate package 2018-02-26 00:07:08 +01:00
Matthias Schiffer
83a6847fbd
gluon-web: remove unneeded functions from gluon.web.util
exec() is moved to gluon.util.
2018-02-25 17:13:30 +01:00
Matthias Schiffer
5dcb784308
gluon-core: remove unused lock and exec functions 2018-02-25 17:13:30 +01:00
Matthias Schiffer
987eef011a
gluon-core: remove unused user/group management functions, call lock command directly 2018-02-25 17:13:30 +01:00
Matthias Schiffer
6ae1af9694
gluon-mesh-vpn-core: use OpenWrt's user/group management 2018-02-25 17:13:30 +01:00
Matthias Schiffer
218de7e0ae
gluon-web: pass base path from CGI script 2018-02-25 17:13:30 +01:00
Matthias Schiffer
661e4dee9f
gluon-config-mode-core, gluon-web-*: do not access dispatcher directly 2018-02-25 17:13:30 +01:00
Matthias Schiffer
4a8283b5ab
gluon-web: remove unused files 2018-02-25 17:13:30 +01:00
Matthias Schiffer
93c1d77e07
gluon-web-theme: add missing dependencies 2018-02-25 17:13:30 +01:00
Matthias Schiffer
37cdea9733
gluon-web-*: consistently use <%| tag 2018-02-23 20:05:07 +01:00
Matthias Schiffer
dd23a805c2
gluon-web: add new <%| tag for escaped expressions 2018-02-23 19:45:28 +01:00