Cuong Manh Le
46509be8a0
cmd/ctrld: start service before restart on Windows
...
On Windows, calling s.Restart will fail if service is not running,
ensure ctrld is started before calling restart.
2023-08-09 23:57:08 +07:00
Cuong Manh Le
d3d2ed539f
cmd/ctrld: correct syscall.Errno for Windows
...
On Windows, the syscall error numbers are different, so correct the
value so we can detect right errors we want.
2023-08-09 23:56:55 +07:00
Cuong Manh Le
8496adc638
cmd/ctrld: make self-check process more resilient
2023-08-09 23:56:41 +07:00
Cuong Manh Le
e1d078a2c3
Ignoring RFC 1918 addresses for ControlD upstream
2023-08-09 23:56:31 +07:00
Cuong Manh Le
0dee7518c4
cmd/ctrld: validate UID during start command
2023-08-09 23:56:20 +07:00
Cuong Manh Le
774f07dd7f
internal/router: only do cleanup in cd mode on freebsd
2023-08-09 23:56:07 +07:00
Cuong Manh Le
c271896551
all: add support for provision token
2023-08-09 23:55:56 +07:00
Cuong Manh Le
82d887f52d
cmd/ctrld: preserve OS error when updating listener config
2023-08-09 23:55:45 +07:00
Cuong Manh Le
6e27f877ff
internal/clientinfo: use ptr cache when listing clients
2023-08-09 23:55:29 +07:00
Cuong Manh Le
39a2cab051
internal/clientinfo: only do self discover with client id
...
While at it, also ensure that client info table was initialized before
doing any lookup.
2023-08-09 23:55:13 +07:00
Cuong Manh Le
72d2f4e7e3
internal/controld: add support for parsing client id from raw UID
2023-08-09 23:54:44 +07:00
Cuong Manh Le
19bc44a7f3
all: prevent data race when accessing zerolog.Logger
2023-08-09 23:54:23 +07:00
Cuong Manh Le
59dc74ffbb
internal: record correct interfaces for queries from router on Firewalla
2023-08-09 23:54:23 +07:00
Cuong Manh Le
12c8ab696f
cmd/ctrld: use RFC1918 addresses as nameservers if required
2023-08-09 23:54:23 +07:00
Cuong Manh Le
28f32bd7e5
cmd/ctrld: use controlServer register method
2023-08-09 23:54:23 +07:00
Cuong Manh Le
6b43639be5
cmd/ctrld: wait until ctrld listener ready to do self-check
2023-08-09 23:54:23 +07:00
Cuong Manh Le
6be80e4827
internal/router: generalize freebsd-like router support
2023-08-09 23:54:23 +07:00
Cuong Manh Le
437fb1b16d
all: add clients list command to debug Mac discovery
2023-08-09 23:54:23 +07:00
Cuong Manh Le
61b6431b6e
cmd/ctrld: trim os version on freebsd
2023-08-09 23:54:23 +07:00
Cuong Manh Le
7ccecdd9f7
cmd/ctrld: add more debugging information when self-check failed
2023-08-09 23:54:23 +07:00
Cuong Manh Le
e43b2b5530
internal/clientinfo: add doc comments for mdns operations
...
While at it, also remove un-used channel argument of probe function.
2023-08-09 23:54:23 +07:00
Cuong Manh Le
2cd8b7e021
internal/clientinfo: remove dhcp from refresher list
...
dhcp lease files are watched separately using fsnotify, it does not need
to be in refresher list.
2023-08-09 23:54:23 +07:00
Cuong Manh Le
d6768c4c39
internal/clientinfo: use default route IP as self client info
2023-08-09 23:54:23 +07:00
Cuong Manh Le
59a895bfe2
internal/clientinfo: improving mdns discovery
...
- Prevent duplicated log message.
- Distinguish in case of create/update hostname.
- Stop probing if network is unreachable or invalid.
2023-08-09 23:54:23 +07:00
Cuong Manh Le
cacd957594
internal/clientinfo: do not lower case hostname
2023-08-09 23:54:23 +07:00
Cuong Manh Le
2cd063ebd6
cmd/ctrld: do client info table init in separated goroutine
...
So it won't cause the listener take more times to be ready.
2023-08-09 23:54:23 +07:00
Cuong Manh Le
9ed8e49a08
all: make router setup/cleanup works more generally
2023-08-09 23:54:23 +07:00
Cuong Manh Le
66cb7cc21d
cmd/ctrld: general UX improvement
2023-08-09 23:54:23 +07:00
Cuong Manh Le
4bf09120ff
cmd/ctrld: spawn RFC1918 listeners if listen on 127.0.0.1:53
2023-08-09 23:54:23 +07:00
Cuong Manh Le
be0769e433
cmd/ctrld: do not create config dir if not necessary
2023-08-09 23:54:23 +07:00
Cuong Manh Le
7b476e38be
cmd/ctrld: do not spawn extra listener if conflicted in cd mode
2023-08-09 23:54:23 +07:00
Cuong Manh Le
0a7d3445f4
all: use 127.0.0.1 as nameserver when ctrld is an upstream
2023-08-09 23:54:23 +07:00
Cuong Manh Le
76d2e2c226
Improving Mac discovery
2023-08-09 23:54:23 +07:00
Cuong Manh Le
3007cb86ec
cmd/ctrld: add control server/client via unix socket
2023-08-09 23:54:23 +07:00
Cuong Manh Le
fa3af372ab
Use ControlD anycast IP if no system DNS found
2023-08-09 23:54:23 +07:00
Cuong Manh Le
48a780fc3e
cmd/ctrld: add workaround for default iface name on Ubios
2023-08-09 23:54:23 +07:00
Cuong Manh Le
28df551195
cmd/ctrld: prefix log with listener number when update listener config
2023-08-09 23:54:23 +07:00
Cuong Manh Le
e65a71b2ae
cmd/ctrld: do not try random local ip if IP is v4/v6 zero
2023-08-09 23:54:23 +07:00
Cuong Manh Le
dc61fd2554
all: update handling of local config
...
For local config, we don't want to alter what user explicitly set, and
only try filling in missing value.
While at it, also remove the dnsmasq port delete on openwrt, we don't
need that hack anymore.
2023-08-09 23:54:23 +07:00
Cuong Manh Le
a4edf266f0
all: workaround problem with EdgeOS dnsmasq config
2023-08-09 23:54:23 +07:00
Cuong Manh Le
7af59ee589
all: rework fetching/generating config in cd mode
...
Config fetching/generating in cd mode is currently weird, error prone,
and easy for user to break ctrld when using custom config.
This commit reworks the flow:
- Fetching config from Control D API.
- No custom config, use the current default config.
- If custom config presents, but there's no listener, use 0.0.0.0:53.
- Try listening on current ip+port config, if ok, ctrld could be a
direct listener with current setup, moving on.
- If failed, trying 127.0.0.1:53.
- If failed, trying current ip + port 5354
- If still failed, pick a random ip:port pair, retry until listening ok.
With this flow, thing is more predictable/stable, and help removing the
Config interface for router.
2023-08-09 23:54:23 +07:00
Cuong Manh Le
3f3c1d6d78
Fix Ping upstream cause ctrld crash
...
dohTransport returns a http.RoundTripper. When pinging upstream, we do
it both for doh and doh3, and checking whether the transport is nil
before performing the check.
However, dohTransport returns a concrete *http.Transport. Thus
dohTransport will always return a non-nil http.Roundtripper, causing
invalid memory dereference when upstream is configured to use doh3.
Performing ping upstream separately will fix the issue.
2023-08-09 23:54:23 +07:00
Cuong Manh Le
ab1d7fd796
cmd/ctrld: lower status string before checking
...
Depending on system, the output of `/etc/init.d/ctrld status` can be
either "Running" or "running", we must do in-sensitive comparison to get
the right status of ctrld.
2023-08-09 23:54:23 +07:00
Cuong Manh Le
6c2996a921
cmd/ctrld: use sysv service wrapper for "unix-systemv" platform
2023-08-09 23:54:23 +07:00
Cuong Manh Le
de32dd8ba4
cmd/ctrld: better error message for parsing/validation error
2023-08-09 23:54:23 +07:00
Cuong Manh Le
d43e50ee2d
cmd/ctrld: produce better message when "ctrd start" failed
...
The current error message is not much helpful, not all users are able to
investigate system log file to find the reason.
Instead, gathering the log output of "ctrld run" command, and if error
happens or self-check failed, print the log to users.
2023-08-09 23:54:23 +07:00
Cuong Manh Le
aec2596262
all: refactor router code to use interface
...
So the code is more modular, easier to read/maintain.
2023-08-09 23:54:23 +07:00
Cuong Manh Le
78a7c87ecc
cmd/ctrld: only overwrite listener if not defined in cd mode
2023-08-09 23:54:23 +07:00
Cuong Manh Le
1d3f8757bc
internal/router: fix missing EdgeOS in router ListenPort
...
The EdgeOS case was removed unintentionally when adding Firewalla.
2023-08-09 23:54:23 +07:00
Cuong Manh Le
c0c69d0739
cmd/ctrld: do not assume iface "auto" in cd mode
2023-08-09 23:54:23 +07:00