v0.14.1
Fork of warpscout with a Telegram reachability check.
New in this release:
-tgadds the TG column: once a tunnel is up and verified, Telegram's
MTProto data centres are dialled through that same tunnel and the round-trip
to the nearest one that answered is reported, or "blocked" when none did.
All five are dialled at once under one deadline, so a blocked endpoint costs
one -timeout rather than five.- Endpoints that reach Telegram rank above those that do not, so
-bestand
-confpick one that works. -tg-onlykeeps only the endpoints Telegram was reachable from.
The update check and install.sh now point at this fork rather than upstream.
Commits
- chore: point the fork at its own repository (
3af267f) - feat: check Telegram reachability for every endpoint (
7de4178) - feat: print scan progress in plain output mode (
deb82ac) - fix: put the elapsed time after the bar counters (
a27ba70) - perf: insert into the live feed instead of resorting it (
1ea0796) - feat: show elapsed time on the bar and the phase lines (
0d9503e) - feat: show working, torn and node counts next to the bar (
3560411) - fix: drop the node panel with the feed, the report prints Nodes too (
efb319b) - fix: drop the live feed once the console tables repeat it (
09b8bb2) - fix: keep the feed at 12 rows unless f expands it (
ecb1904) - feat: add f and n to expand the live feed and the node panel (
7be820e) - feat: size the live scan feed to the terminal window (
68d2035) - feat: show every region and node found so far during the scan (
9cb078b) - fix: drop host ping replies that came from another endpoint (
8ec2902) - fix: cache the latest-version answer in the temp dir, not on flash (
073baf7) - fix: return the no-endpoint failure from printBest instead of exiting inside it (
3eea39c) - fix: stop register from overwriting an account file it could not read (closes vernette#5) (
b2903f2) - fix: reject -best together with -conf - instead of mixing them on stdout (closes vernette#7) (
1daaacc) - fix: sort the picks table by status before loss (closes vernette#9) (
9f6ebae) - fix: tell a failed masque-h2 scan the same thing as masque (closes vernette#10) (
85f193a) - fix: reject a nonpositive -sample instead of widening the scan (
a78d29a) - fix: fail the scan when a requested -conf cannot be written (
430a8a1) - ci: refetch the annotated tag before reading its body (
6be5efb) - perf: back off the handshake poll instead of a flat 50ms tick (
a346aa5) - perf: resolve the meta address without a global lock (
6557ecf) - perf: send the host ping burst at once and match replies by sequence (
b414d42) - perf: probe phase 1 addresses in parallel instead of one at a time (
9e1c446) - perf: give every wg tunnel the batch-1 bind, not conn.NewDefaultBind (
58c7551) - fix: cap the Go runtime at 32MiB so a full scan is not OOM-killed (
6668e26) - ci: lead the release notes with the annotated tag body (
b71edc5) - ci: leave docs commits out of the release notes (
899590c) - fix: resolve DNS on Android, where there is no /etc/resolv.conf (
77e70f4) - refactor: keep the version cache as a single file in the cache dir (
620fce4) - feat: check for a new release on startup (
c882667) - feat: add a relay fallback to register (
e39e5a4) - feat: print the macOS quarantine hint in install.sh (
220dd06) - feat: detect Termux in install.sh and install into $PREFIX/bin (
f68b50e) - ci: build android/arm64 in the release matrix (
61e6a32) - fix: strip the path termux-exec injects into argv on Android (
558e6f8) - fix: stop repeating the country in the socks exit row (
52dc225) - feat: add -port to pin one port for the whole scan (
8930cbc) - ci: skip the test run for workflow-only changes (
0b8e3c3) - ci: skip the test run for the release and docker workflows (
4997d3f) - ci: keep only the commit list and New Contributors in release notes (
dc88f38) - feat: add -exclude-node and -exclude-country (
f0b0878) - feat: give the console table a row per node, not just per subnet (
8fcd9bd) - feat: name the chained mihomo proxies after their place in the chain (
3c86a5f) - feat: write both tunnels of the chain into the native -through config (
adf4998) - feat: render the whole chain in the mihomo config under -through (
eb02781) - feat: add socks to serve one endpoint as a local SOCKS5 proxy (
a142752) - feat: add scan -through to nest one WARP tunnel inside another (
290aa1f) - feat: carry both address families inside the WireGuard tunnel (
e2e0361) - feat: keep the WARP device's own IPv4 and IPv6 from registration (
bdce03d) - feat: add the second MASQUE v6 block, 103:: and 104:: (thanks @t-e-s-tweb) (
6d3b891) - ci: bump the Docker build image to go 1.26 (
dcb7706) - ci: skip the test workflow on doc-only changes (
e102a95) - feat: let find-sni search an SNI for either MASQUE transport (
d30063d) - refactor: name the mihomo proxy after the protocol instead of the endpoint (
634115e) - feat: add -p masque-h2, CONNECT-IP over TCP with real endpoint pools (closes vernette#3) (
4281051) - feat: add -speed to measure endpoint throughput after the scan (
2a03132) - refactor: extract nodePicks and the feed capping helpers for reuse (
8dafee7) - refactor: hoist the bubbletea program out of runScanUI into runWithUI (
7303a35) - feat: add find-sni to search a MASQUE SNI that gets through (
5c7aa92) - perf: bound the stalled MASQUE dial with quic-go's idle timeout (
3ac583c) - feat: add install.sh for Linux, macOS and OpenWrt (
5e30e8d) - feat: add a version command, with the tag injected at build time (
35c4ea2) - feat: write DNS into the generated config, with -dns and -no-dns (closes vernette#2) (
d6b27d0) - feat: print the generated config with -conf - instead of writing a file (
27651d6) - feat: add -conf-type mihomo to render the picked endpoint as a mihomo proxy (
83ab34d) - feat: add MASQUE support with -proto masque (
c6aa8c8) - refactor: make the tunnel a per-protocol interface over a shared netstack (
449c24a) - fix: use ASCII status glyphs and spinner on Windows (
899e8f7) - fix: enable virtual terminal processing on the legacy Windows console (closes vernette#1) (
a217cd0) - fix: pad the console summary labels so "Torn down:" keeps a space (
a18762a) - ci: run go test on push to master and on pull requests (
f795932) - refactor: report DPI-cut endpoints as "torn down" instead of "flaky" (
ca91881) - feat: split the ping into ENDPOINT PING and TUN PING columns and rename -ping to -tun-ping (
c107829) - feat: point at -gen-i1 quic when a scan finds no working endpoint (
992bcf2) - feat: reuse the stored id/token to rotate keys instead of re-registering (
f4ddcd5) - feat: write MTU into the generated config only with -mtu (
75d132d) - feat: drop -proto both and collapse the scan to a single run (
2b216c5) - fix: honour -emoji regardless of whether stderr is a TTY (
b5051c9) - feat: keep colour in the console tables when CLICOLOR_FORCE is set (
33eddf9) - fix: show the banner only in the final report, not in the TUI (
6e30db3) - feat: add the author credit and repo link to the banner (
2d5313f) - feat: add -no-report to skip writing the report file (
0389a40) - feat: write the report file as a flat list with a per-node summary (
120303b) - feat: print the command list for -h/--help/help instead of an error (
243ad85) - feat: filter endpoints by edge node country with -country (
f9cb7c3) - feat: read the exit region and node location from a single /meta fetch (
69fcc98) - feat: make country flag emoji opt-in with -emoji (
36d77d0) - fix: reject flag-shaped -conf/-o values and stray arguments (
839cdf5) - feat: write a ready-to-import wg/awg config with -conf (
e51c250) - feat: accept a junk set at the -threshold share of working endpoints (
f142c11) - refactor: rename TSPU to DPI (
f16254f) - feat: tune the durability burst length with -ping-count (
6fbad6a) - feat: run phase 2 at full -jt in ping mode (
9debfa9) - feat: drop -proto from register, sweeping awg first (
8223b33) - feat: require an explicit register before scanning (
a6e2f8d) - feat: split the CLI into scan, register and find-junk subcommands (
a34ff6c) - feat: sample 5 addresses per subnet by default (
34052e5) - feat: print the best endpoint as ip:port with -best (
e9ff3b6) - feat: keep only endpoints on a given colo with -node (
4a66251) - feat: scan given addresses with -target (
a8a7a0f) - feat: scan seven more WARP /24 endpoint pools (
db97c10) - feat: try generated I1 packets when tunnel registration is blocked (
d1eb9ff) - feat: skip the trace fetch during -find-junk (
a7ca4db) - feat: show the live scan dashboard during -find-junk (
c490fd7) - feat: search a fresh I1 per attempt in -find-junk (
16397e4) - feat: generate the awg init packet with -gen-i1 (
577a133) - feat: always show junk params and the I1 mode in the report (
712e861) - feat: search for working awg junk params with -find-junk (
95aa3f4) - feat: skip the awg init packet with -i1 none (
aa7357c) - feat: randomize awg junk params per run with -gen-junk (
9e54740) - fix: register through the -I interface, clamping MSS and forcing IPv4 (
4456af7) - feat: route -I/-interface through the interface via SO_BINDTODEVICE (
7d5b84b) - feat: show progress bar while probing endpoints during -register (
cd92290) - fix: register through a WARP tunnel via handshake, not a blocked direct probe (
6074c3a) - feat: scan through a chosen interface with -I/-interface (
d247801) - feat: scan IPv6 endpoint pools with -6/-ipv6 (
2c27d60) - feat: show progress bar during phase 1 port discovery (
e08c249) - ci: link commit hashes in release notes (
8c5aab0) - ci: prepend commit list to release notes (
37eb5e3) - feat: hide LOSS column unless -ping is set (
dc8c64c) - feat: measure in-tunnel RTT and packet loss, rank by loss then ping (
4cd59a0) - feat: sweep alternate WARP ports when primary ports are blocked (
547ca6e) - chore: add license (
f24275c) - ci: build and push multi-arch docker image on tag (
aa85b0d) - ci: drop redundant upx-ucl install, it is preinstalled on runners (
1847828) - fix: emit release notes once instead of per matrix job (
296fdd6) - feat: add release workflow building binaries for all platforms (
02bdad2) - perf: cut handshake-poll CPU churn in phase 2 (
5db77a6) - feat: raise default tunnel-jobs from 4 to 10 (
fa4bcc9) - feat: add -no-emoji flag to drop country flags without forcing plain output (
c28250a) - feat: drop flag emoji in plain output mode (
741eb3a) - feat: sort per-subnet summary tables by ping (
9d0f04d) - style: render --help with shared lipgloss styles instead of raw ANSI (
4e4b09a) - style: strip doc comments, keep only critical non-obvious notes (
c9efcd8) - feat: allow overriding awg junk params via CLI flags (
52b125c) - feat: split EXIT into separate EXIT and COLO columns (
8671efc) - feat: add live bubbletea scan dashboard and lipgloss report tables (
4fceeed) - style: left-align console output and slim the WARPSCOUT banner (
b7f0a36) - feat: build multi-arch Docker image for amd64 and arm64 (
fc30352) - style: add a blank line after the fresh-account notice (
74437c9) - feat: add Dockerfile with UPX-compressed scratch image (
e69fa4f) - feat: rank endpoints by direct host ICMP ping (
3815f08) - style: gofmt warp_test.go (
6b746e5) - refactor: split main.go into topical files (
384c4ce) - feat: make the wg durability ping check opt-in via -P/-ping (
7340a74) - feat: prefix exit regions and colos with country flag emoji (
548c050) - style: add a blank line after the cached-account notice (
d725666) - feat: collapse phase 1 into a single checkmark status line (
2c5c2e2) - refactor: remove the unused -j/-jobs flag (
86e81f3) - feat: probe reachable WARP ports in phase 1, verify all IPs in phase 2 (
e7bd55a) - feat: probe wg durability, flag flaky endpoints, add -proto both (
23ef59d) - feat: persist account id and token instead of hardcoded address (
ea82d7f) - feat: grouped, colorized --help with short and long flag names (
8b67461) - feat: separate and highlight the API-unreachable notice (
8d909f1) - feat: colorized output with live phase progress bars (
48fcc23) - feat: clarify empty-subnet label in report (
cc5c23f) - feat: group full report by subnet and exit colo (
a22306b) - feat: sample 10 addresses per subnet by default, -full for a complete scan (
b0fe41e) - feat: summarize report in console, save full report to timestamped file (
cf96a5a) - chore: ignore account and report files (
7dafb04) - feat: register WARP config with proxy and tunnel fallback (
ef97018) - perf: lower default timeout to 2s and poll handshake every 20ms (
053b5d0) - fix: reuse tunnels in phase 2 to bound memory (
ab330b6) - feat: initial WARP endpoint checker (
c834c4a)