Commit Graph
100 Commits
Author SHA1 Message Date
Michael Stapelberg d57b44ab51 README: swap travis badge with GitHub Actions badge 2021-09-19 11:47:51 +02:00
Michael Stapelberg 3ad9d03460 gofmt for go:build 2021-09-19 11:46:57 +02:00
Michael Stapelberg e07002721d teelogger: make writes to /dev/console non-blocking
fixes https://github.com/rtr7/router7/issues/68
2021-09-19 11:45:19 +02:00
Michael Stapelberg a5a012dd96 dhcp4: increase number of unhealthy cycles 2021-09-19 11:45:04 +02:00
Michael Stapelberg 575a14c394 dyndns: add zone to record name
Otherwise, already existing records are not recognized correctly.
2021-09-01 09:37:12 +02:00
Michael Stapelberg 20dd872fbe backup: skip “nobackup” and “srv” directories 2021-09-01 09:27:49 +02:00
Michael Stapelberg b88ddd41c3 netconfig: don’t try to add bridge to itself 2021-06-12 22:24:38 +02:00
Michael Stapelberg bfb94377f4 netconfig: move bridge creation into its own function
also don’t short-circuit the rest of the configuration if bridge config fails
2021-06-12 18:25:37 +02:00
Michael Stapelberg cffd872346 netconfig: implement bridge configuration
fixes https://github.com/rtr7/router7/issues/65
2021-06-06 15:43:55 +02:00
Michael Stapelberg d0f963def3 fix integration test: explicitly install iproute2 in container 2021-06-03 21:18:51 +02:00
Michael Stapelberg e34a5ae0f3 update go.mod and go.sum 2021-06-03 21:12:13 +02:00
Michael Stapelberg cbadfe5128 dhcp4: ensure MQTT topic names are printable (for mosquitto_sub) 2021-06-03 21:06:03 +02:00
Michael Stapelberg 3834acfa2b dhcp4d: ensure MQTT topic names are valid UTF-8
https://twitter.com/zekjur/status/1347295676909158400
2021-01-07 22:52:58 +01:00
Michael Stapelberg c30bf38438 bump dependencies 2020-12-31 22:13:25 +01:00
Michael Stapelberg 5f25043b94 dhcp4d: only publish to MQTT when channel is ready to prevent deadlocks 2020-12-31 16:42:12 +01:00
Michael Stapelberg c3c531931c retry MQTT connections, even if initial connection attempt fails 2020-12-31 16:42:01 +01:00
Michael Stapelberg 32b0dc7d59 Makefile: Go 1.16’s go install wants the @latest suffix 2020-12-19 13:52:03 +01:00
Michael Stapelberg 04f2be01d9 dhcp4d: optionally publish DHCP leases to MQTT
Enable using:

  mkdir -p /perm/dhcp4d
  echo 'tcp://10.0.0.54:1883' > /perm/dhcp4d/mqtt-broker.txt
2020-12-19 13:34:46 +01:00
Michael Stapelberg e5ea79aef8 update go.{mod,sum} with Go 1.16beta1 2020-12-18 10:10:17 +01:00
Michael Stapelberg 7f135438b8 dhcp4d: mention apple-suggested lease time of 1 hour 2020-11-01 19:24:24 +01:00
Michael Stapelberg a8fce3cbbc diag: drain ping reply channel to avoid goroutine leak 2020-09-14 22:10:09 +02:00
Michael Stapelberg 99c4046ebf diagd: import net/http/pprof 2020-09-14 22:10:07 +02:00
Michael Stapelberg efbe826a4e diagd: -interface flag for easier testing 2020-09-14 22:10:07 +02:00
Michael Stapelberg 416c1a58f6 diag: plug socket leak by adding missing Close() 2020-09-14 22:10:07 +02:00
Michael Stapelberg f8d79d0ecc dhcp4: close healthiness checking connection 2020-09-14 12:54:14 +02:00
Michael Stapelberg fddfe80222 dhcp4: start from scratch after 5 minutes of continued unhealthiness
fixes #58
2020-09-14 09:06:05 +02:00
Michael Stapelberg ee17db29b6 GitHub actions: also exit early if gofmt reports syntax errors 2020-08-01 09:46:19 +02:00
Michael Stapelberg 5573c4dde7 GitHub actions: fix gofmt check 2020-08-01 09:28:02 +02:00
Michael Stapelberg cf1e1dd480 re-generate website to pick up previous commit 2020-07-06 09:50:52 +02:00
Michael Stapelberg f86e20be53 dhcp6: port dhcp4 backoff logic 2020-07-02 22:07:26 +02:00
Michael Stapelberg ae8cfee616 dhcp6: inspect server advertisment IAPD and report error, if any
The fiber7 DHCPv6 servers (sometimes?) use this field for reporting errors.
2020-07-02 22:06:55 +02:00
Michael Stapelberg 281f876834 integration/netconfig: verify wg(8) is available
The kernel used on GitHub actions now allows creating wireguard interfaces
apparently.
2020-07-02 21:14:35 +02:00
Michael Stapelberg 8c1b3676ab gokr-packer invocations: set empty -eeprom_package=
We don’t need Raspberry Pi 4 EEPROM files on router7 on amd64,
and this makes the build easier.

fixes #54
2020-07-02 21:06:22 +02:00
Michael Stapelberg dff392e558 website: bundle assets for faster loading/privacy 2020-06-21 10:06:18 +02:00
Michael Stapelberg 876a3308d2 style tables with bootstrap table styles
as per https://willschenk.com/articles/2020/styling_tables_with_hugo/
2020-06-21 09:52:38 +02:00
Michael Stapelberg cb95bb6df8 move README into (hugo-powered) website router7.org 2020-06-21 09:43:13 +02:00
Michael Stapelberg 1250211381 github actions: try caching the module cache 2020-06-16 23:41:21 +02:00
Michael Stapelberg 9c7e626f7d switch from travis to GitHub actions 2020-06-16 23:22:34 +02:00
Michael Stapelberg b090fa2924 qemu: enable i6300esb watchdog device
For the corresponding kernel change, see:
https://github.com/rtr7/kernel/commit/0f4dcc4a8739bb42448b9876b0fd786db5f66936
2020-06-16 23:09:35 +02:00
Michael Stapelberg 1fd5468bab first start of a qemu target 2020-06-04 09:59:24 +02:00
Michael Stapelberg aa14d119e6 dyndns: add log message when records are updated
Now both cases are covered.
2020-05-28 17:24:51 +02:00
Michael Stapelberg decb0978d7 dyndns: update to newer libdns/cloudflare, remove workaround 2020-05-28 17:22:24 +02:00
Michael Stapelberg f1e4ee0662 dyndns: don’t crashloop when config does not exist
related to #46
2020-05-28 09:46:37 +02:00
Michael Stapelberg 7950291db6 dyndns: tweak up-to-date message output 2020-05-28 09:42:55 +02:00
Michael Stapelberg 4a5f55a5de defense in depth: verify hex.DecodeString length
related to #49
2020-05-27 09:50:04 +02:00
Michael Stapelberg 53c495091e quirk: enforce minimum lease time of 1 hour for Nintendo devices
The Nintendo Switch has been observed to hold on to IP addresses even after
their expiration. My guess is that this is an oversight: likely the device
enters power saving mode with a configured IP address and just sleeps through
the expiration time.

As the device seems to wake up once every hour, we enforce a minimum lease time
of 1 hour, but only for affected devices. The rest of the network gets short
lease times.

https://twitter.com/zekjur/status/1263949112036282374
2020-05-23 09:07:17 +02:00
Michael Stapelberg 9b6271749b fix Makefile/go.mod 2020-05-09 22:40:49 +02:00
Michael Stapelberg 46327c5105 update go.mod 2020-05-09 22:17:10 +02:00
Michael Stapelberg 4e6a7016de commit Makefile 2020-05-09 22:14:37 +02:00
Michael Stapelberg 2b6ab5b2bd dhcp4d: make hostname override settable from status page 2020-04-12 10:33:11 +02:00
Michael Stapelberg e67fb4dd71 diagd: make output look good in a terminal, too
curl diagd.router7/
2020-03-11 22:12:00 +01:00
Michael Stapelberg 989bfadc88 travis: switch to Go 1.14 2020-03-07 08:14:06 +01:00
Michael Stapelberg 5936d954dd go mod tidy 2020-02-16 00:16:10 +01:00
Michael Stapelberg dba1dad718 wireguard: switch to wgctrl package
related to #14
2020-02-16 00:15:23 +01:00
Michael Stapelberg bfba9f17af netconfigd: collect all errors but keep going 2020-02-15 23:38:37 +01:00
Michael Stapelberg 96b626897a netconfigd: work not only with uplink0, but also eth0 and ens3
This makes it possible to use netconfigd on gokrazy Raspberry Pi installations.
2020-02-15 23:37:29 +01:00
Michael Stapelberg ef60a01f3f netconfigd: continue if interfaces.json does not exist 2020-02-15 23:35:51 +01:00
Michael Stapelberg 23961749ef declare go.mod 2020-02-15 20:41:54 +01:00
Michael Stapelberg 3e17ed7697 travis: bump to go 1.13 2020-02-15 09:55:44 +01:00
Michael Stapelberg e34148d4e7 dhcp4d: add some leeway for lease activity 2020-02-06 18:48:19 +01:00
Michael Stapelberg a543cb9a34 dhcp4d: add header describing whether lease is active
Should be interpreted by the DHCP server so that other programs don’t need to
hard-code the lease time.
2020-01-31 19:11:08 +01:00
Michael Stapelberg a2ea8c2f95 cmd/dhcp4d: refactor for testing, add /lease/ test 2020-01-31 19:00:51 +01:00
Michael Stapelberg 4558cb61b4 dhcp4d: serve lease json data at /lease/<hostname> 2020-01-31 18:30:18 +01:00
Michael Stapelberg 3707ba290c dhcp4d: move http.HandleFunc into logic 2020-01-31 18:25:02 +01:00
Michael Stapelberg 41985d6378 dhcp4d: reduce lease period to 20 minutes
This forces devices to renew the lease more often, which is nice when you want
to tie home automation behavior to DHCP lease validity.
2020-01-31 18:23:50 +01:00
Michael Stapelberg e76886dab4 dhcp4d: protect leases with a mutex
The HTTP handler runs in a separate goroutine.
2020-01-31 18:23:19 +01:00
Michael Stapelberg 73bd5c6a50 dhcp6: T1 is now already a time.Duration
see https://github.com/insomniacslk/dhcp/pull/347
2020-01-03 08:06:17 +01:00
Michael Stapelberg 70edcab16b dns: return NXDOMAIN for DHCP leases once they expire 2019-09-07 19:27:12 +02:00
Michael Stapelberg fa82132962 dhcp4d: add HostnameOverride field
This can be used to permanently override a hostname, regardless of whether the
lease is static or not. We use a separate field because we want devices to be
able to change their hostname themselves, until we override it.
2019-08-30 09:06:21 +02:00
Michael Stapelberg 4cde5ec6fc dns: fix resolution of uppercase host names, add test 2019-08-07 18:18:51 +02:00
Michael Stapelberg 9fe38edec0 netconfig_test: force an order for IP address golden output 2019-08-07 18:13:52 +02:00
Michael Stapelberg 8fb81f90b1 dns: make more recent DHCP leases overwrite older ones
fixes #20
2019-07-20 12:23:48 +02:00
Michael Stapelberg 36995097b9 make local name resolution case-insensitive
fixes #34
2019-07-20 12:07:30 +02:00
Michael Stapelberg 975f05d7ac fix dhcp4d_test.go 2019-07-20 11:30:52 +02:00
Michael Stapelberg 323cc42b8e dhcp4d: polish status page, actually update it upon changes 2019-07-20 11:07:11 +02:00
Michael Stapelberg c602f1d6b6 dhcp4d: introduce -interface flag 2019-07-20 10:50:30 +02:00
Michael Stapelberg c211763b5d dhcp4d: indent leases.json for easier human editing 2019-07-20 10:49:53 +02:00
Michael Stapelberg c0067c5aa5 change diff order to -want +got
This is easier to read and consistent with how we do things at work.
2019-07-11 08:42:21 +02:00
Michael Stapelberg 414a7c025b use nft’s --numeric flag for stable output across 0.9.0 and 0.9.1
nftables 0.9.1 started printing e.g. “priority 0” as “priority filter”.
2019-07-11 08:39:08 +02:00
Michael Stapelberg 554d7fa8bf netconfig_test: fix goldens after nftables change
The nftables package started honoring the rule position (insert vs. append), and
it turns out our goldens have been wrong all along. Now the configured order
matches the golden order.
2019-07-11 08:28:33 +02:00
Michael Stapelberg fa91770b09 integration/dns: 8.8.8.8’s RDNS changed to dns.google. 2019-07-01 08:55:10 +02:00
Michael Stapelberg 373c83196d dhcp4: make interface and state directory configurable
This is useful for manual testing on separate interfaces.
2019-06-06 07:52:08 +02:00
Michael Stapelberg 54843950dd dhcp6: allow overriding hardwareaddr in test
This fixes the breakage introduced by commit
https://github.com/insomniacslk/dhcp/commit/8166b9a9db9b180c02622ebf3dcff01ff2b2e0a6
2019-04-29 19:16:19 +02:00
Michael Stapelberg 02741e8d28 travis: remove debugging statements 2019-04-29 19:09:08 +02:00
Michael Stapelberg 4a1d06f5f8 travis: list links/addresses for debugging 2019-04-29 19:02:39 +02:00
Michael Stapelberg ea8efe1978 log hardwareAddr for debugging travis 2019-04-29 19:02:39 +02:00
Michael Stapelberg 82b41d1cc3 travis: switch to go vet 2019-04-29 18:42:29 +02:00
Michael Stapelberg 844f528ed8 travis: enable IPv6 before running tests 2019-04-29 18:42:15 +02:00
Michael Stapelberg 1a65f972c6 dhcp6: only call net.InterfaceByName when client is constructed 2019-04-16 08:36:06 +02:00
Michael Stapelberg 3765287e97 dhcp4: use SetReadDeadline, not SetDeadline
fixes https://github.com/rtr7/router7/issues/25

related to https://github.com/mdlayher/raw/issues/42
2019-03-21 09:18:32 +01:00
Michael Stapelberg 7b1fcc9017 travis: use go1.12
https://github.com/mdlayher/raw/pull/40 requires go1.12
2019-03-03 16:36:25 +01:00
Michael Stapelberg 8906854211 fix compilation after https://github.com/mdlayher/netlink/pull/127 2019-03-03 16:09:20 +01:00
Michael Stapelberg 3dad1e9a23 dhcp4: use the configured (not the current) MAC address
This fixes a race where dhcp4 started before netconfigd had a chance to change
the hardware address on the uplink0 interface.

fiber7’s port security feature may result in an about hour-long internet outage
without this commit.
2019-02-19 09:39:16 +01:00
Michael Stapelberg 66942bd4f7 dns: steer traffic toward the most response upstream
There is not much of a difference between IPv4 and IPv6 on my fiber7 link, but
in other networks, there might well be.

For my connection, this commit results in hitting different upstreams all the
time because the list isn’t stable. But, this is the opposite of a problem: we
are spreading the DNS query load over all configured IPs, as good netizen do.
2019-02-19 09:37:38 +01:00
Michael Stapelberg a05f027765 dns: fallback only once, i.e. prefer the working server next time 2019-02-19 08:49:40 +01:00
Michael Stapelberg ccaf6ad452 dns: fallback to next upstream upon failure 2019-02-19 08:38:52 +01:00
Michael Stapelberg abeddabbb7 dhcp4d: restrict lease details page to internal IPs 2019-02-19 07:50:39 +01:00
Michael Stapelberg 13926217d9 oui_test: fix data race when overriding ouiURL 2019-01-06 18:07:59 +01:00
Michael Stapelberg 6320b6c3a7 dhcp4d: display MAC vendor of each lease’s HardwareAddr 2019-01-06 18:02:01 +01:00
Michael Stapelberg 8df6329209 use renameio to write files atomically 2019-01-06 15:25:33 +01:00