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