Cuong Manh Le and Cuong Manh Le
d822bf4257
all: add pin protected deactivation
2024-02-07 14:58:38 +07:00
Cuong Manh Le and Cuong Manh Le
0826671809
cmd/cli: set DNS for all physical interfaces on Windows/Darwin
2024-02-07 14:40:51 +07:00
Cuong Manh Le and Cuong Manh Le
67d74774a9
all: include file information in Windows builds
2024-02-07 14:40:18 +07:00
Cuong Manh Le and Cuong Manh Le
71f26a6d81
Add prometheus exporter
...
Updates #6
2024-01-22 23:12:17 +07:00
Ginder Singh and Cuong Manh Le
cfaf32f71a
Added upstream proto option to mobile library
...
Changed android listener IP to 0.0.0.0
2024-01-22 23:10:02 +07:00
Cuong Manh Le and Cuong Manh Le
b82ad3720c
cmd/cli: guard against nil client info
...
Though it's only possible raised in testing, still better to be safe.
2023-12-19 01:48:07 +07:00
Cuong Manh Le and Cuong Manh Le
8d2cb6091e
cmd/cli: add QUERY/REPLY prefix to proxying log
...
So the log in INFO log is aligned, making it easier for human to
monitoring the log, either via console or running "tail" command.
2023-12-19 01:31:30 +07:00
Cuong Manh Le and Cuong Manh Le
22e97e981a
cmd/cli: ignore invalid flags for "ctrld run"
2023-12-18 21:32:01 +07:00
Cuong Manh Le and Cuong Manh Le
44484e1231
cmd/cli: add WSAEHOSTUNREACH to network error
...
Windows may raise WSAEHOSTUNREACH instead WSAENETUNREACH in case of
network not available when resuming from sleep or switching network, so
checkUpstream is never kicked in for this type of error.
2023-12-18 21:31:46 +07:00
Cuong Manh Le and Cuong Manh Le
8db28cb76e
cmd/cli: improving logging of proxying action
...
INFO level becomes a sensible setting for normal operation that does not
overwhelm. Adding some small details to make DEBUG level more useful.
2023-12-18 21:31:08 +07:00
Cuong Manh Le and Cuong Manh Le
8dbe828b99
cmd/cli: change socket dir to /var/run on *nix
2023-12-18 21:30:53 +07:00
Cuong Manh Le and Cuong Manh Le
5c24acd952
cmd/cli: fix bug causes checkUpstream run only once
...
To prevent duplicated running of checkUpstream function at the same
time, upstream monitor uses a boolean to report whether the upstream is
checking. If this boolean is true, then other calls after the first one
will be returned immediately.
However, checkUpstream does not set this boolean to false when it
finishes, thus all future calls to checkUpstream won't be run, causing
the upstream is marked as down forever.
Fixing this by ensuring the boolean is reset once checkUpstream done.
While at it, also guarding all upstream monitor operations with a mutex,
ensuring there's no race condition between marking upstream state.
2023-12-18 21:30:36 +07:00
Cuong Manh Le and Cuong Manh Le
122600bff2
cmd/cli: remove redundant return statement
2023-12-13 14:53:29 +07:00
Cuong Manh Le and Cuong Manh Le
41846b6d4c
all: add config to enable/disable answering WAN clients
2023-12-13 14:53:29 +07:00
Cuong Manh Le and Cuong Manh Le
dfbcb1489d
cmd/cli: improving loop guard test
...
We see number of failed test in Github Action, mostly on MacOS or
Windows due to the fact that goroutines are scheduled to be run
consequently.
This commit improves the test, ensuring at least 2 goroutines were
started before increasing the counting.
2023-12-13 14:53:29 +07:00
Cuong Manh Le and Cuong Manh Le
684019c2e3
all: force re-bootstrapping with timeout error
2023-12-11 22:55:16 +07:00
Cuong Manh Le and Cuong Manh Le
e92619620d
cmd/cli: doing router setup based on "--iface" flag
...
Solving downgrading issue from newer version to v1.3.1, and also easier
to explain the logic: either doing "magic stuff" or do nothing.
2023-12-11 22:55:16 +07:00
Cuong Manh Le and Cuong Manh Le
874ff01ab8
cmd/cli: ensure log time field is formated with ms
2023-12-06 22:31:35 +07:00
Cuong Manh Le and Cuong Manh Le
0bb51aa71d
cmd/cli: add loop guard for LAN/PTR queries
2023-12-06 15:33:05 +07:00
Cuong Manh Le and Cuong Manh Le
af2c1c87e0
cmd/cli: improve logging for new LAN/PTR flow
2023-12-06 15:33:05 +07:00
Cuong Manh Le and Cuong Manh Le
8939debbc0
cmd/cli: do not send test query to external upstreams
2023-12-06 15:33:05 +07:00
Cuong Manh Le and Cuong Manh Le
7591a0ccc6
all: add client id preference config param
...
So client can chose how client id is generated.
2023-12-06 15:33:05 +07:00
Cuong Manh Le and Cuong Manh Le
c3ff8182af
all: ignoring local interfaces RFC1918 IP for private resolver
...
Otherwises, the discovery may make a looping with new PTR query flow.
2023-12-06 15:33:05 +07:00
Cuong Manh Le and Cuong Manh Le
5897c174d3
all: fix LAN hostname checking condition
...
The LAN hostname in question is FQDN, "." suffix must be trimmed before
checking.
While at it, also add tests for LAN/PTR query checking functions.
2023-12-06 15:33:05 +07:00
Cuong Manh Le and Cuong Manh Le
f9a3f4c045
Implement new flow for LAN and private PTR resolution
...
- Use client info table.
- If no sufficient data, use gateway/os/defined local upstreams.
- If no data is returned, use remote upstream
2023-11-30 18:28:51 +07:00
Cuong Manh Le and Cuong Manh Le
a2cb895cdc
cmd/cli: watch changes to /etc/resolv.conf
...
On some routers, change to network may trigger re-rendering
/etc/resolv.conf file, causing requests from router itself stop using
ctrld.
Fixing this by watching changes to /etc/resolv.conf, then revert them.
2023-11-27 22:19:16 +07:00
Cuong Manh Le and Cuong Manh Le
17f6d7a77b
cmd/cli: notice writing default config in local mode
2023-11-27 22:19:16 +07:00
Cuong Manh Le and Cuong Manh Le
9e6e647ff8
Use discover_ptr_endpoints for PTR resolver
2023-11-27 22:19:16 +07:00
Cuong Manh Le and Cuong Manh Le
a2116e5eb5
cmd/cli: do not substitute MAC if empty
...
Using IPv4 as hostname is enough to distinguish clients.
2023-11-27 22:19:16 +07:00
Cuong Manh Le and Cuong Manh Le
564c9ef712
cmd/cli: use IP as hostname for ipv4 clients only
...
For Android devices, when it joins the network, it uses ctrld to resolve
its private DNS once and never reaches ctrld again. For each time, it uses
a different IPv6 address, which causes hundreds/thousands different client
IDs created for the same device, which is pointless.
2023-11-27 22:19:16 +07:00
Cuong Manh Le and Cuong Manh Le
856abb71b7
cmd/cli: only notice reading config with "ctrld start"
...
While at it, also updating the documentation of related functions.
2023-11-27 22:19:16 +07:00
Cuong Manh Le and Cuong Manh Le
4f125cf107
cmd/cli: notice users where config file is written/read
2023-11-16 20:59:12 +07:00
Cuong Manh Le and Cuong Manh Le
494d8be777
cmd/cli: skip router setup with "ctrld service start"
...
Either do magic stuff and make things work automatically (normal users),
or don't do any of it and just run ctrld as a service (power users).
2023-11-16 20:58:41 +07:00
Cuong Manh Le and Cuong Manh Le
cd9c750884
cmd/cli: do not run pre run on reload
2023-11-16 20:58:26 +07:00
Cuong Manh Le and Cuong Manh Le
91d319804b
cmd/cli: only use failover rcodes if defined
2023-11-16 20:58:10 +07:00
Cuong Manh Le and Cuong Manh Le
d01f5c2777
cmd/cli: do not stop listener when reloading
...
We could not do a reload if the listener config changes, so do not turn
them off to try updating new listener config.
2023-11-16 20:56:57 +07:00
Ginder Singh and Cuong Manh Le
c3b4ae9c79
Older android missing certificate
2023-11-16 20:56:24 +07:00
Cuong Manh Le and Cuong Manh Le
09188bedf7
cmd/cli: fix wrong generated config for nextdns resolver
...
Generating nextdns config must happen after stopping current ctrld
process. Otherwise, config processing may pick wrong IP+Port.
While at it, also making logging better when updating listener config:
- Change warn to info, prevent confusing that "something is wrong".
- Do not emit info when generating working default config, which may
cause duplicated messages printed.
2023-11-16 20:55:39 +07:00
Cuong Manh Le and Cuong Manh Le
990bc620f7
cmd/cli: strip EDNS0_SUBNET for RFC 1918 and loopback address
...
Since passing them to upstream is pointless, these cannot be used by
anything on the WAN.
2023-11-09 00:23:38 +07:00
Cuong Manh Le and Cuong Manh Le
4816a09e3a
all: use private resolver for private IP address
...
These queries could not be resolved by Control D upstreams, so it's
useless and less performance to send them to servers.
2023-11-08 23:51:18 +07:00
Cuong Manh Le and Cuong Manh Le
63f959c951
all: spoof loopback ranges in client info
...
Sending them are useless, so using RFC1918 address instead.
2023-11-06 20:01:57 +07:00
Cuong Manh Le and Cuong Manh Le
d88cf52b4e
cmd/cli: always rebootstrap when check upstream
...
Otherwise, network changes may not be seen on some platforms, causing
ctrld failed to recover and failing all requests.
While at it, also doing the check DNS in separate goroutine, prevent it
from blocking ctrld from notifying others that it "started". The issue
was seen when ctrld is configured as direct listener, requests are
flooded before ctrld started, causing the healtch process failed.
2023-11-06 20:01:25 +07:00
Cuong Manh Le and Cuong Manh Le
58a00ea24a
all: implement reload command
...
This commit adds reload command to ctrld for re-fetch new config from
ContorlD API or re-read the current config on disk.
2023-11-06 20:01:03 +07:00
Cuong Manh Le and Cuong Manh Le
712b23a4bb
cmd/cli: initialize upstream proto for mobile
2023-11-06 20:00:28 +07:00
Cuong Manh Le and Cuong Manh Le
baf836557c
cmd/cli: fix wrong checking condition in removeProvTokenFromArgs
...
The provision token is only used once, then do not have any effect after
Control D uid is fetched. So making it appears in "ctrld run" command is
useless.
2023-11-06 20:00:10 +07:00
Cuong Manh Le and Cuong Manh Le
904b23eeac
cmd/cli: add --proto flag to set upstream type in cd mode
2023-11-06 19:59:52 +07:00
Cuong Manh Le and Cuong Manh Le
6aafe445f5
cmd/cli: add nextdns mode
...
Adding --nextdns flag to "ctrld start" command for generating ctrld
config with nextdns resolver id, then use nextdns as an upstream.
2023-11-06 19:59:31 +07:00
Ginder Singh and Cuong Manh Le
ebd516855b
added safe return if error happens during resolver fetch.
2023-11-06 19:58:53 +07:00
Cuong Manh Le and Cuong Manh Le
df4e04719e
cmd/cli: relax service dependency on systemd-networkd-wait-online
...
ctrld wants systemd-networkd-wait-online starts before starting itself,
but ctrld should not be blocked waiting for it started.
2023-11-06 19:58:32 +07:00
Cuong Manh Le and Cuong Manh Le
2440d922c6
all: add MAC address base policy
...
While at it, also update the config doc to clarify the order of matching
preference, and the matter of rules order within each policy.
2023-11-06 19:57:50 +07:00