Cuong Manh Le
e9e63b0983
cmd/cli: check root privilege for log commands
2025-01-20 14:57:45 +07:00
Cuong Manh Le
4df470b869
cmd/cli: ensure all ifaces operation is set correctly
...
Since ctrld process does not rely on the global variable iface anymore
during runtime, ctrld client's operations must be updated to reflect
this change, too.
2025-01-20 14:57:34 +07:00
Cuong Manh Le
89600f6091
cmd/cli: new flow for leaking queries to OS resolver
...
The current flow involves marking OS resolver as down, which is not
right at all, since ctrld depends on it for leaking queries.
This commits implements new flow, which ctrld will restore DNS settings
once leaking marked, allowing queries go to OS resolver until the
internet connection is established.
2025-01-20 14:57:23 +07:00
Cuong Manh Le
f986a575e8
cmd/cli: log upstream name if endpoint is empty
2025-01-20 14:57:09 +07:00
Cuong Manh Le
9c2fe8d21f
cmd/cli: set running iface for stop/uninstall commands
2025-01-20 14:56:53 +07:00
Cuong Manh Le
8bcbb9249e
cmd/cli: add an internal warn level log writer
...
So important events like upstream online/offline/failed will be
preserved, and submitted to the server as necessary.
2025-01-14 14:33:27 +07:00
Cuong Manh Le
a95d50c0af
cmd/cli: ensure set/reset DNS is done before checking OS resolver
...
Otherwise, new DNS settings could be reverted by dns watchers, causing
the checking will be always false.
2025-01-14 14:33:15 +07:00
Cuong Manh Le
5db7d3577b
cmd/cli: handle . domain query
...
By returning FormErr response, the same behavior with ControlD.
2025-01-14 14:33:05 +07:00
Cuong Manh Le
c53a0ca1c4
cmd/cli: close log reader after reading
2025-01-14 14:32:54 +07:00
Cuong Manh Le
6fd3d1788a
cmd/cli: fix memory leaked when querying wmi instance
...
By ensuring the instance is closed when query finished.
2025-01-14 14:32:44 +07:00
Cuong Manh Le
3713cbecc3
cmd/cli: correct log writer initial size
2025-01-14 14:32:26 +07:00
Cuong Manh Le
6046789fa4
cmd/cli: re-initializing OS resolver before doing check upstream
...
Otherwise, the check will be done for old stale nameservers, causing it
never succeed.
2025-01-14 14:32:15 +07:00
Cuong Manh Le
3ea69b180c
cmd/cli: use config timeout when checking upstream
...
Otherwise, for slow network connection (like plane wifi), the check may
fail even though the internet is available.
2025-01-14 14:32:01 +07:00
Cuong Manh Le
a5c776c846
all: change send log to use x-www-form-urlencoded
2025-01-14 14:31:37 +07:00
Cuong Manh Le
5a566c028a
cmd/cli: better error message when log file is empty
...
While at it, also record the size of logs being sent in debug/error
message.
2025-01-14 14:31:24 +07:00
Cuong Manh Le
4a92ec4d2d
cmd/cli: fix race in Test_addSplitDnsRule
2024-12-19 22:10:34 +07:00
Cuong Manh Le
9bbccb4082
cmd/cli: get default interface once
2024-12-19 21:50:00 +07:00
Cuong Manh Le
4f62314646
cmd/cli: do API reloading if exlcude list changed
2024-12-19 21:50:00 +07:00
Cuong Manh Le
cb49d0d947
cmd/cli: perform leaking queries in non-cd mode
2024-12-19 21:50:00 +07:00
Cuong Manh Le
89f7874fc6
cmd/cli: normalize log path when sending log
...
So the correct log file that "ctrld run" process is writing logs to will
be sent to server correctly.
2024-12-19 21:50:00 +07:00
Cuong Manh Le
37d41bd215
Skip public DNS for LAN query
...
So we don't blindly send requests to public DNS even though they can not
handle these queries.
2024-12-19 21:50:00 +07:00
Cuong Manh Le
8a96b8bec4
cmd/cli: adopt FilteredLevelWriter when doing internal logging
...
Without verbose log, we use internal log writer with log level set to
debug. However, this will affect other writers, like console log, since
they are default to notice level.
By adopting FilteredLevelWriter, we can make internal log writer run in
debug level, but all others will run in default level instead.
2024-12-19 21:50:00 +07:00
Cuong Manh Le
f71dd78915
cmd/cli: move cobra commands to separated file
...
So each command initialization/logic can be read/update more easily.
2024-12-19 21:50:00 +07:00
Cuong Manh Le
cd5619a05b
cmd/cli: add internal logging
...
So in case of no logging enabled, useful data could be sent to ControlD
server for further troubleshooting.
2024-12-19 21:50:00 +07:00
Cuong Manh Le
a63a30c76b
all: add sending logs to ControlD API
2024-12-19 21:50:00 +07:00
Cuong Manh Le
09426dcd36
cmd/cli: new flow for LAN hostname query
...
If there is no explicit rules for LAN hostname queries, using OS
resolver instead of forwarding requests to remote upstreams.
2024-12-19 21:50:00 +07:00
Cuong Manh Le
17941882a9
cmd/cli: split-route SRV record to OS resolver
...
Since SRV record is mostly useful in AD environment. Even in non-AD one,
the OS resolver could still resolve the query for external services.
Users who want special treatment can still specify domain rules to
forward requests to ControlD upstreams explicitly.
2024-12-19 21:50:00 +07:00
Cuong Manh Le
70ab8032a0
cmd/cli: silent WMI query
...
The log is being printed by the wmi library, which may cause confusion.
2024-12-19 21:50:00 +07:00
Cuong Manh Le
8360bdc50a
cmd/cli: add split route AD top level domain on Windows
...
The sub-domains are matched using wildcard domain rule, but this rule
won't match top level domain, causing requests are forwarded to ControlD
upstreams.
To fix this, add the split route for top level domain explicitly.
2024-12-19 21:49:57 +07:00
Cuong Manh Le
6837176ec7
cmd/cli: get static DNS using syscall
2024-12-19 21:34:37 +07:00
Cuong Manh Le
5e9b4244e7
cmd/cli: get physical interfaces using Windows WMI
2024-12-19 21:34:26 +07:00
Cuong Manh Le
9b6a308958
cmd/cli: get AD domain using Windows API
2024-12-19 21:34:26 +07:00
Cuong Manh Le
71e327653a
cmd/cli: check local DNS using Windows API
2024-12-19 21:34:21 +07:00
Cuong Manh Le
a56711796f
cmd/cli: set DNS using Windows API
2024-12-19 21:32:49 +07:00
Cuong Manh Le
484643e114
cmd/cli: lowercase AD domain to be consistent with network rules
...
While at it, also add a note that the domain comparison are done in
case-insensitive manner.
2024-11-13 15:03:38 +07:00
Cuong Manh Le
da91aabc35
cmd/cli: ensure extra split rule is always written
...
Otherwise, the rule may not be added if ctrld does not run in cd mode.
2024-11-13 15:03:27 +07:00
Cuong Manh Le
c654398981
cmd/cli: make widcard rules match case-insensitively
...
Domain name comparisons are done in case-insensitive manner.
See: https://datatracker.ietf.org/doc/html/rfc1034#section-3.1
2024-11-13 15:03:17 +07:00
Cuong Manh Le
47a90ec2a1
cmd/cli: re-fetch pin code during deactivation checking
...
So if the pin code was updated/removed, it will be checked correctly by
ctrld during stop/uninstall commands.
2024-11-13 15:02:52 +07:00
Cuong Manh Le
2875e22d0b
cmd/cli: re-fetch deactivation pin code when reloading API config
2024-11-13 15:01:44 +07:00
Cuong Manh Le
c5d14e0075
cmd/cli: only cleanup log file if set
...
Otherwise, normalizeLogFilePath may return incorrect log file path,
causing invalid log file/backup initialization. Thus "--cleanup" will
complain about invalid files.
2024-11-13 15:01:27 +07:00
Cuong Manh Le
84e06c363c
Avoid tailscale.com/tsd dependency
...
Since it brings gvisor.dev/gvisor to the dependency graph, causing the
binary size bloating on *nix (except darwin).
2024-11-13 15:00:41 +07:00
Cuong Manh Le
9d666be5d4
all: add custom hostname support for provisoning
2024-10-24 13:05:48 +07:00
Cuong Manh Le
5ac9d17bdf
cmd/cli: simplify queryFromSelf
...
By using netmon.LocalAddresses instead of looping through interfaces
list manually.
2024-10-08 22:08:48 +07:00
Cuong Manh Le
e88372fc8c
cmd/cli: log request id when leaking
2024-09-30 18:21:30 +07:00
Cuong Manh Le
b320662d67
cmd/cli: emit warning for MacOS 15.0 in case of timeout error
2024-09-30 18:21:22 +07:00
Cuong Manh Le
ce353cd4d9
cmd/cli: write auto split rule for AD to config file
2024-09-30 18:21:11 +07:00
Cuong Manh Le
4befd33866
cmd/cli: notify log server before ctrld process exit
...
So if ctrld process terminated for any reason, other processes will get
the signal immediately instead of waiting for timeout to report error.
2024-09-30 18:20:56 +07:00
Cuong Manh Le
f507bc8f9e
cmd/cli: cache query from self result
...
So we don't waste time to compute a result which is not likely to be
changed.
2024-09-30 18:20:39 +07:00
Cuong Manh Le
14c88f4a6d
all: allow empty type for h3 and sdns
2024-09-30 18:20:39 +07:00
Cuong Manh Le
3e388c2857
all: leaking queries to OS resolver instead of SRVFAIL
...
So it would work in more general case than just captive portal network,
which ctrld have supported recently.
Uses who may want no leaking behavior can use a config to turn off this
feature.
2024-09-30 18:20:27 +07:00