32 Commits
Author SHA1 Message Date
Markson GuGa Beyond 5506fe1c86 test: fix the Windows socket-option readback
getsockopt(IP_UNICAST_IF) hands the interface index back in host order while
setsockopt wants it in network byte order, so the second swap in
boundProbeInterface compared 0x01000000 against 1 and the IPv4 cases of
TestBoundDirectDialerSocketOptions failed on Windows.
2026-09-29 19:39:10 +08:00
Mikhail Levin cef8fbc939 fix: bind dashboard probes to TUN egress on macOS and Windows 2026-09-25 21:34:00 +03:00
Mikhail Levin fd7a587dc2 fix: keep interception during dashboard TCP probes 2026-09-25 16:12:43 +03:00
Zakk 833af7dc74 refactor: use what the dependencies already provide
A read of the tree for home-grown code that a dependency or the platform
covers. Each item names what replaces it.

- IPv4 CIDR membership was a binary-string trie (infra/dataStructure/trie)
  fed with CIDRs rendered as bit strings; net.IPNet.Contains, which the
  same file already used for IPv6, does it. The trie package is gone.
- The response replay cache was an LRU with its own linked list, indexes
  and timeout strategy (infra/dataStructure/lru), of which one fixed-size
  instance existed; hashicorp/golang-lru/v2, already in go.mod, is that
  cache, typed. go mod tidy also dropped go-nanoid, which nothing imported.
- The HTTP client for subscription updates through the local proxy carried
  a CONNECT dialer of its own (pkg/util/proxyWithHttp); http.Transport's
  Proxy handles socks5:// and http:// URLs, resolves hostnames on the
  SOCKS proxy and uses CONNECT for https. Verified on the VM: a
  subscription update succeeds in both "pac" and "proxy" modes.
- core/dns/qtype.go listed nine type names in two switches before falling
  back to miekg/dns tables that contain the same names; dns.Type.String
  and dns.StringToType are the tables.
- The GUI tracked prefers-color-scheme with its own media query and
  toggled a theme-dark class nothing reads any more; Vuetify's "system"
  theme follows the OS itself. Verified in headless Chrome: auto follows
  the OS in both directions, an explicit choice overrides it.
- The AUR packages carried .INSTALL hooks whose only content was a
  coloured "Completed!" banner, duplicated in the deb/rpm after-install
  scripts; pacman and apt report that themselves. The hooks are gone, the
  release workflow stops copying them, and after_install/after_upgrade
  keep only daemon-reload and the restart.
- The tap release job downloaded eight artifacts in eight steps;
  actions/download-artifact takes a pattern with merge-multiple.
2026-09-20 16:40:34 +10:00
Zakk ad509ce51b fix(service): the confirmed findings of four independent backend scans
A custom latency test URL that http.NewRequest rejects made a spawned
goroutine dereference nil and exit the process; the URL is validated
before any goroutine starts and the request error is handled. A
Shadowsocks link whose plugin field has no ";" panicked the parser, and
from the automatic subscription update that goroutine was unrecovered;
the parser accepts it and each updater recovers and logs.

The DNS module took the last non-bootstrap upstream as the fallback
while the template emitted upstreams in rule order with deduplication,
so a catch-all rule anywhere but last, or one whose upstream was
deduplicated, was not the fallback. The template names the fallback in
a new default_upstream field and the module honours it.

PUT /routingA stored the rules without regenerating the running core.
It goes through ApplyCoreConfig like the other config writers, with
restore on failure. UpdateSubscription logged a failed core reload and
answered success; it returns the error. PATCH /subscription joins the
mutation turn.

Subscription fetching retried through a direct connection when the
selected proxy failed, leaking the subscription URL; it returns the
error. Subscription documents are capped at 32 MiB and downloaded
assets at 256 MiB. PUT /gfwList validates the downloaded file as a
geosite list before replacing the working one.

The login handler took its one-at-a-time semaphore before reading the
body, so a client sending headers and no body blocked every login; the
body is read first and the HTTP server has header and idle timeouts.

Share links: a VLESS or VMess link without a numeric port is rejected
at parse time instead of producing port 0; an SSR link with a password
that is not base64 is rejected instead of importing empty; the SIP003
path gets its leading slash prepended, not a trailing one appended.

The macOS system proxy quoted shell arguments with strconv.Quote,
which leaves $(...) live; values are single-quoted. The Windows system
proxy snapshot includes AutoConfigURL, which teardown deleted and never
restored. Latency test responses with a non-2xx status are closed. The
version response carries the docker flag the GUI's port hints read.
2026-09-20 09:59:29 +10:00
Zakk d66c3927a5 fix(server): requests that change state apply or restore; requests that fetch have deadlines
PUT /dnsRules regenerates the running core's config and restores the
previous rules when that fails; SetPorts restores the previous ports
when the restart fails. The HTTP latency test drops subscription
entries as intended. The remote GFWList version request has a deadline
and its cache a one-hour TTL. CheckUpdate picks the index of the running
architecture and closes the body on every path.
2026-09-19 22:04:11 +10:00
Zakk ac79c92d6c fix(service): make API error messages say what was rejected and why
Errors that reach the GUI were written for the log: "ResolveURL failed:
invalid parameters", "httpGetUsingSpecificClient: response is nil",
"LocateServerRaw: invalid TYPE", "bad request", "illegal base64 data at
input byte 18". Reword the messages that can reach a user so each names
the input that was rejected (link scheme, missing password, port, server
id, request field), states the expected form for malformed input, drops
Go function names, keeps the %w chain so errors.Is/As still work, and
never echoes passwords, tokens or full share links (hosts only).
Messages the GUI string-matches ("invalid config", "the last request is
being processed") are unchanged.
2026-09-18 02:53:32 +10:00
Markson Joe Hon 47f1462baf feat: init a new for v2raya core and fix a firewall mistake 2026-07-02 13:10:12 +08:00
Markson Hon fd7162e88f feat(service): add custom inbound APIs and strengthen outbound/account flows 2026-05-04 19:07:22 +08:00
mzz2017 18dcfd94f9 fix: not delete tables rules after http test 2023-03-30 20:54:02 +08:00
mzz2017 b02666bd19 optimize: remove gopeed to avoid 429 2022-03-13 18:05:24 +08:00
mzz2017 1eafeef243 feat(macOS,windows): support system proxy. Thanks @Johnshall #338 2022-01-25 21:18:24 +08:00
mzz2017 367b15d119 feat: support print connection report 2021-09-24 23:11:42 +08:00
mzz2017 159c542272 fix(transparent proxy): conflict mark 2021-09-07 22:21:37 +08:00
mzz2017 e4dd0eaa76 refactor: server, subscription, api, plugin 2021-09-06 12:32:47 +08:00
mzz2017 0d16bd32a7 feat: organize project structure, change log package to beego log and remove v2ray/log package 2021-08-27 14:09:08 +08:00
mzz2017 17aef44d34 feat: support add a VLESS-GRPC inbound for external incoming connection 2021-08-18 19:46:08 +08:00
mzz2017 58250f9cce feat: multiple outbounds, keep latency results, routing log #214 2021-07-31 11:42:13 +08:00
mzz2017 d34ba11db9 refactor/feat: universal mode by default; try using xray first but v2ray recommended.
support param --v2ray-confdir #122
support param --v2ray-bin
v2rayA will not control v2ray by systemd but subprocess way
2020-12-23 20:06:21 +08:00
mzz2017 8bb7428aab fix: a problem that cannot view/edit ipv6 servers 2020-12-19 13:57:21 +08:00
mzz2017 0e9dbb311f optimize: add user-agent 2020-10-29 13:59:19 +08:00
mzz2017 3d45f4bf1f feat: support import by scaning QRCode 2020-10-20 11:59:36 +08:00
mzz2017 f6e7c6983b fix: docker not work and aid issue of shadowrocket subscription 2020-10-16 19:59:47 +08:00
mzz2017 79b56345c6 docs: remove mzz2017 in most files due to repo's transfer 2020-10-16 16:43:08 +08:00
mzz2017 52588d6d6d feat: support vboard status 2020-10-13 16:52:23 +08:00
mzz2017 ecf74fc945 feat: support cutomizing dns servers 2020-06-06 23:25:12 +08:00
mzz2017 272e734ccd optimize: switch storage source from json to nutsdb 2020-06-06 03:29:53 +08:00
mzz2017 1e230ed1fd some fixes and features
1. use http://www.alibaba.com instead of https://www.youtube.com to test more accurate latency
2. now will report transparent proxy error
3. shorter timeout of closing SSR
4. optional enhanced mode and closed dns anti-pollution
5. use another port for transparent proxy instead of 12345
6. some other adjustments
2020-05-12 13:10:56 +08:00
mzz2017 b2de124709 rename project 2020-04-19 03:30:00 +08:00
mzz2017 0f17fb7ff4 fix(build): circle import 2020-04-14 12:44:46 +08:00
mzz2017 fb2a5226d1 test: log system 2020-03-31 13:48:11 +08:00
mzz2017 7e240e3cf8 optimize: performance 2020-03-22 22:31:33 +08:00