Commit graph

133 commits

Author SHA1 Message Date
fatedier
a88e0e9a49
refactor: clean up code (#5308)
Some checks failed
golangci-lint / lint (push) Has been cancelled
2026-05-12 11:13:50 +08:00
fatedier
8666e3643f
protocol: add AEAD encryption negotiation to v2 wire control channel (#5304)
Some checks failed
golangci-lint / lint (push) Has been cancelled
2026-05-06 10:43:47 +08:00
fatedier
410c4861c4
update Release.md (#5295) 2026-04-27 01:31:10 +08:00
fatedier
e9464919d1
protocol: add v2 wire protocol with binary framing and capability negotiation (#5294) 2026-04-27 00:17:00 +08:00
fatedier
a9a4416ecf
vhost/http: fix auth bypass when routeByHTTPUser is used with proxy-style requests (#5285) 2026-04-14 00:58:19 +08:00
fatedier
ff4ad2f907
auth/oidc: fix eager token fetch at startup, add validation and e2e tests (#5234) 2026-03-15 22:29:45 +08:00
Oleksandr Redko
c2454e7114
refactor: fix modernize lint issues (#5215) 2026-03-07 23:10:19 +08:00
fatedier
c70ceff370
fix: three high-severity bugs across nathole, proxy, and udp modules (#5214)
- pkg/nathole: add RLock when reading clientCfgs map in PreCheck path
  to prevent concurrent map read/write crash
- server/proxy: fix error variable shadowing in GetWorkConnFromPool
  that could return a closed connection with nil error
- pkg/util/net: check ListenUDP error before spawning goroutines
  and assign readConn to struct field so Close() works correctly
2026-03-07 13:36:02 +08:00
fatedier
bb3d0e7140
deduplicate common logic across proxy, visitor, and metrics modules (#5213)
- Replace duplicate parseBasicAuth with existing httppkg.ParseBasicAuth
- Extract buildDomains helper in BaseProxy for HTTP/HTTPS/TCPMux proxies
- Extract toProxyStats helper to deduplicate ProxyStats construction
- Extract startVisitorListener helper in BaseProxy for STCP/SUDP proxies
- Extract acceptLoop helper in BaseVisitor for STCP/XTCP visitors
2026-03-07 12:00:27 +08:00
fatedier
f2d1f3739a
pkg/util/xlog: fix AddPrefix not updating existing prefix due to range value copy (#5206)
In AddPrefix, the loop `for _, p := range l.prefixes` creates a copy
of each element. Assignments to p.Value and p.Priority only modify
the local copy, not the original slice element, causing updates to
existing prefixes to be silently lost.

This affects client/service.go where AddPrefix is called with
Name:"runID" on reconnection — the old runID value would persist
in log output instead of being updated to the new one.

Fix by using index-based access `l.prefixes[i]` to modify the
original slice element, and add break since prefix names are unique.
2026-03-06 20:44:40 +08:00
fatedier
cb459b02b6
fix: WebsocketListener nil panic and OIDC auth data race (#5204)
- pkg/util/net/websocket.go: store ln parameter in struct to prevent
  nil pointer panic when Addr() is called
- pkg/auth/oidc.go: replace unsynchronized []string with map + RWMutex
  for subjectsFromLogin to fix data race across concurrent connections
2026-03-06 16:51:52 +08:00
fatedier
fbeb6ca43a
refactor: restructure API packages into client/http and server/http with typed proxy/visitor models (#5193) 2026-03-04 17:38:43 +08:00
fatedier
381245a439
build: add noweb tag to allow building without frontend assets (#5189) 2026-03-02 01:32:19 +08:00
fatedier
01997deb98
add persistent proxy/visitor store with CRUD API and web UI (#5188) 2026-03-02 01:09:59 +08:00
fatedier
7a1c248b67
bump version to 0.67.0 (#5146) 2026-01-31 13:49:29 +08:00
fatedier
ed13141c56
refactor: separate API handlers into dedicated packages with improved HTTP utilities (#5127) 2026-01-14 19:50:55 +08:00
fatedier
ef96481f58
update version and release notes (#5106) 2025-12-25 10:15:40 +08:00
fatedier
e025843d3c
vnet: add exponential backoff for failed reconnections (#5035) 2025-10-29 01:08:48 +08:00
Zachary Whaley
ee3cc4b14e
Fix CloseNotifyConn.Close function (#5022)
The CloseNotifyConn.Close() function calls itself if the closeFlag is equal to 0 which would mean it would immediately swap the closeFlag value to 1 and never call closeFn.  It is unclear what the intent of this call to cc.Close() was but I assume it was meant to be a call to close the Conn object instead.
2025-10-17 10:53:43 +08:00
fatedier
b5e90c03a1
bump version to v0.65.0 and update release notes (#4998) 2025-09-25 20:11:17 +08:00
fatedier
610e5ed479
improve yamux logging (#4952) 2025-08-25 17:52:58 +08:00
fatedier
f795950742
bump version to v0.64.0 (#4924) 2025-08-10 23:11:50 +08:00
fatedier
61330d4d79
Update quic-go dependency from v0.48.2 to v0.53.0 (#4862)
- Update go.mod to use github.com/quic-go/quic-go v0.53.0
- Replace quic.Connection interface with *quic.Conn struct
- Replace quic.Stream interface with *quic.Stream struct
- Update all affected files to use new API:
  - pkg/util/net/conn.go: Update QuicStreamToNetConn function and wrapQuicStream struct
  - server/service.go: Update HandleQUICListener function parameter
  - client/visitor/xtcp.go: Update QUICTunnelSession struct field
  - client/connector.go: Update defaultConnectorImpl struct field

Fixes #4852

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2025-07-01 18:56:46 +08:00
fatedier
43cf1688e4 update golangci-lint version (#4817) 2025-06-25 11:40:23 +08:00
fatedier
720c09c06b update test package (#4814) 2025-06-25 11:40:23 +08:00
fatedier
3fa76b72f3 add proxy protocol support for UDP proxies (#4810) 2025-06-25 11:40:23 +08:00
fatedier
8eb525a648 feat: support YAML merge in strict configuration mode (#4809) 2025-06-25 11:40:23 +08:00
fatedier
b41d8f8e40 update release notes (#4772)
Some checks failed
Build Image and Publish to Dockerhub & GPR / Build Image from Dockerfile and binaries (release) Has been cancelled
2025-04-27 15:46:22 +08:00
fatedier
3c8d648ddc vnet: fix issues (#4771) 2025-04-27 15:46:22 +08:00
fatedier
a78814a2e9
virtual-net: initial (#4751) 2025-04-16 16:05:54 +08:00
fatedier
773169e0c4
update version (#4699) 2025-03-07 17:22:51 +08:00
fatedier
e0dd947e6a
frps: release resources in service.Close() (#4667) 2025-02-12 12:22:57 +08:00
Gabriel Marin
092e5d3f94
client, pkg, server, test: replaced 'interface{}' with 'any' (#4611) 2025-01-02 11:24:08 +08:00
fatedier
f47d8ab97f
update Release.md (#4589) 2024-12-16 19:33:58 +08:00
Sword
bb912d6c37
enable h2c for vhost server (#4582) 2024-12-13 14:37:07 +08:00
fatedier
f7a06cbe61
use go1.23 (#4495) 2024-10-17 17:22:41 +08:00
fatedier
ae73ec2fed
added a 30s timeout for frpc subcommands to avoid long delays (#4359) 2024-07-30 18:12:22 +08:00
fatedier
b4d5d8c756
plugin https2http&https2https: return 421 if host not match sni (#4323) 2024-07-09 10:50:16 +08:00
fatedier
e680acf42d
android: only use google dns server when the default dns server cannot be obtained (#4236) 2024-05-23 16:09:58 +08:00
fatedier
301515d2e8
update the default value of transport.tcpMuxKeepaliveInterval (#4231) 2024-05-21 12:00:35 +08:00
fatedier
92cb0b30c2
update version (#4204) 2024-05-07 18:05:36 +08:00
fatedier
e81b36c5ba
support responseHeaders.set for proxy type http (#4192) 2024-04-29 15:53:45 +08:00
fatedier
dd7e2e8473
return 504 instead of 404 for proxy type http request timeout (#4151) 2024-04-11 20:19:08 +08:00
fatedier
d2d03a8fd9
bump deps version (#4136) 2024-04-09 11:39:21 +08:00
fatedier
590ccda677
fix x-forwarded-for header (#4111) 2024-03-28 16:47:27 +08:00
fatedier
f16ef00975
set CompatibilityMode for android (#4091) 2024-03-21 17:34:09 +08:00
fatedier
b36f3834eb
use math/rand/v2 (#4020) 2024-03-20 15:48:31 +08:00
fatedier
acf33db4e4
update release notes (#4074) 2024-03-15 17:50:58 +08:00
fatedier
e0c979e98e
fix release scripts (#4057) 2024-03-12 17:37:14 +08:00
fatedier
e6ec5a509b
update release notes (#4055) 2024-03-12 15:14:13 +08:00