12bd4115e3feat(tunnel/manager): update tunnel IP metrics statistics
Gouryella
2026-01-05 13:38:08 +08:00
d03874b3d3feat: Added Prometheus metrics support and optimized the homepage interface. Added the prometheus/client_golang dependency to support metrics collection, and refactored the proxy processor's homepage. It uses modern CSS styles and responsive design, and adds code copy functionality. BREAKING CHANGE: Removed session selection-related methods and the large buffer feature of the buffer pool in TCP connection groups.
Gouryella
2026-01-05 11:56:18 +08:00
8c8a848320docs(README): Removed v0.5.0 update content and added an acknowledgments section.
Gouryella
2026-01-04 11:31:33 +08:00
11ca454659feat(server): Adds server configuration management commands and metric monitoring functionality. - Add a new server config command to display server configuration. - Supports displaying the full token via the --full flag. - Add the metrics-token configuration option for monitoring access control. - Integrate Prometheus metrics monitoring system - Add the /metrics endpoint to provide monitoring data in Prometheus format. - Add detailed metric collection for tunnels, connections, traffic, etc. - Add a link to the metrics endpoint on the homepage refactor: Refactor the token display logic to support full display options. - Refactor the token mask logic in the configuration display - Supports controlling the token display method via the configFull flag. build: Update dependency versions - Updated github.com/spf13/cobra from v1.10.1 to v1.10.2 - Updated golang.org/x/crypto from v0.45.0 to v0.46.0 - Updated golang.org/x/net from v0.47.0 to v0.48.0 - Update golang.org/x/sys from v0.38.0 to v0.39.0 - Added several new indirect dependency packages, including Prometheus-related components. - Update the versions of several existing dependency packages.
v0.6.1-alpha
Gouryella
2026-01-03 16:50:28 +08:00
e05f128a9cfeat (tunnel/manager): Optimized concurrency security and resource management for tunnel registration. A CAS loop is used to implement atomic operations on the global tunnel counter, avoiding race conditions. Add a rollback mechanism to ensure that the occupied counter resources are properly released when registration fails. Concurrency safety for IP rate limiting is achieved by using atomic operations and locks in combination. Add appropriate resource rollback logic at each faulty branch to prevent resource leaks.
Gouryella
2025-12-24 10:13:30 +08:00
88e4525bf6perf(core): Optimizes performance configuration and resource management - Removed the manual performance optimization configuration in main.go and replaced it with a new tuning module. - Add patterned GC tuning in server.go and tunnel_runner.go - Updated yamux configuration to a unified optimized configuration to improve throughput. - Implement connection pool preheating function to eliminate cold start delay. - Optimize session selection using a min-heap, reducing the time complexity from O(n) to O(log n). - Add a bufio.Reader pool and a buffer pool to reduce memory allocation. - Implement a fragmented lock manager to improve performance under high concurrency. - Adjust heartbeat and timeout configurations to suit high-throughput scenarios BREAKING CHANGE: Manual GC tuning configuration has been removed; automatic tuning mode is now used.
v0.6.0-beta
Gouryella
2025-12-23 11:16:12 +08:00
0cff316334feat(client): Optimized connection pool scaling logic and enhanced session statistics functionality. - Reduce inspection intervals and cooling times to improve response speed - Added burst load handling mechanism to support batch expansion. - Introduced the GetSessionStats method to retrieve detailed statistics for each session. - Create data sessions concurrently to accelerate scaling. - Added a ping loop keep-alive mechanism for each session. feat(server): Enhance tunnel management and security restrictions - Implement IP-based tunnel number and registration frequency limits - Add a rate limiter to prevent malicious registration behavior. - Improved shutdown process to ensure proper exit of cleanup coroutines. - Introduce atomic operations to tunnel connections to improve concurrency performance - Track client IP addresses for access control perf(server): Improves HTTP request processing performance and resource reuse. - Use sync.Pool to reuse bufio.Writer to reduce GC pressure. - Enable TCP_NODELAY to improve response speed - Adjust HTTP server timeout configuration to balance performance and security refactor(proxy): Optimizes the stream open timeout control logic - Use context to control timeouts and avoid goroutine leaks. - Ensure that established connections are properly closed upon timeout. docs(test): Upgrade one-click test scripts to Go test service - Replace Python's built-in server with a high-performance Go implementation - Update dependency checks: Use Go instead of Python 3 - Enhanced startup log output for easier debugging chore(shared): Enhances the security and consistency of the ID generator. - Remove the timestamp fallback scheme and uniformly adopt crypto/rand. - Added TryGenerateID to provide a non-panic error handling method. - Define the maximum frame size explicitly and add comments to explain it. style(frame): Reduce memory allocation and optimize read performance - Use an array on the stack instead of heap allocation to read the frame header. - Reduced maximum frame size from 10MB to 1MB to decrease DoS risk.
v0.6.0-alpha
Gouryella
2025-12-22 16:08:24 +08:00
9e2bcafa98docs (nginx): Add proxy header configuration to support WebSocket upgrades
Gouryella
2025-12-22 14:24:46 +08:00
bad099d0f3fix(tcp): Fixed a connection reading issue during WebSocket upgrade processing. When processing HTTP streams, support for buffered readers has been added for WebSocket upgrade requests. This ensures that data not fully read before connection switching is not lost. The forwarding logic for the Host header has also been optimized. Add the X-Forwarded-Host header to preserve the original host information.
Gouryella
2025-12-19 17:48:15 +08:00
e5aaf150e3feat(proxy): Removes support for the HTTP CONNECT method. In the ServeHTTP processing logic, CONNECT requests are no longer processed, and a 405 status code is returned when such a request is received. The method was flagged as not allowed. The original handleConnect implementation code was also removed.
Gouryella
2025-12-19 10:26:38 +08:00
1c733de303feat(server): Supports HTTP CONNECT proxy and connection pooling. - Added handling for the HTTP CONNECT method, supporting HTTPS tunneling proxies. - Introducing connQueueListener to hand over HTTP connections to standard http.Server handling. - Optimized Connection struct fields and lifecycle management logic - Remove redundant comments and streamline some response writing logic - Upgrade the golang.org/x/net dependency version to support new features. - Enhanced HTTP request parsing stability and improved error logging methods. - Adjusted the TCP listener startup process to integrate HTTP/2 configuration support. - Improve the connection closing mechanism to avoid resource leakage issues.
v0.5.1-beta
Gouryella
2025-12-16 02:24:20 +08:00
7431d821d8refactor(tcp): Optimizes the TCP tunnel data connection processing logic. The data connection processing logic was refactored, and a successful response was sent in advance before upgrading to a yamux session. Redundant DataConnection structures and related management methods were removed. Adjustments were also made. In ConnectionGroup, the session selection logic prioritizes using non-primary sessions for data transmission. Only fall back to the main session when no data session is available, in order to improve forwarding efficiency and stability.
v0.5.1-alpha
Gouryella
2025-12-15 16:49:42 +08:00
f1a65ac965feat(daemon): Enhances the display of daemon startup information and the reading of configuration data. - Added support for parsing the --address/-a and --server/-s parameters. - At startup, attempt to load the server address from the configuration file. - Wait and retrieve runtime information for the daemon (such as the URL). - Optimized UI display: Shows forwarding address, server address, and access link. - Supports centering the generated tunnel URL information in the terminal. - Added the utility functions parseFlagValue and waitForDaemonInfo for parameter parsing and status waiting.
v0.5.0-beta
Gouryella
2025-12-13 21:54:43 +08:00
b92015aacedocs (readme): Updated version feature descriptions to v0.5.0
Gouryella
2025-12-13 18:10:37 +08:00
0c19c3300cfeat(tunnel): switch to yamux stream proxying and connection pooling
v0.5.0-alpha
Gouryella
2025-12-13 18:03:44 +08:00
d192c28accfix(internal/server/tcp): Adjusts the initialization order of connection handlers. Move the initialization of the mutex lock after the structure is created to ensure that the condition variable can correctly reference the mutex lock instance. This can avoid potential race conditions and improve code readability.
Gouryella
2025-12-10 20:27:25 +08:00
5940fff204feat(protocol): Added flow control frame type and support for automatic release mechanism of security frames. A new FlowControl frame type has been added for backpressure control between the client and server, and SafeFrame has been introduced. Frame resource management has been encapsulated to ensure that frame data is correctly returned to the memory pool after use. The frame processing logic has also been optimized. The way frame.Release() is called improves code security and maintainability. feat(client): Implements queue pressure monitoring and flow control signal sending functions. Add the monitorQueuePressure method to periodically check the length of the dataFrameQueue, and trigger an alarm when the queue usage exceeds a threshold. Automatically send flow control commands to the server to pause or resume writing, preventing data backlog and connection interruptions caused by slow consumption speed. feat(server): Supports receiving and responding to flow control requests from clients. The handleFlowControl and sendWithBackpressure methods have been added to enable backpressure control of received data frames on the server side. By blocking the sending process using a condition variable until the client releases the pause state, connection stability is ensured under high load. refactor(client): Reduces redundant resource release operations during frame processing. Use SafeFrame to manage frame lifecycles uniformly, replacing manual frame.Release() with defer sf.Close() in multiple frame handlers. This avoids the risk of memory leaks caused by unreleased abnormal paths. perf(client): Shorten the shutdown timeout to speed up resource reclamation. The forced shutdown wait time in the tunnel runner and connector has been adjusted from 5 seconds and 3 seconds to 2 seconds to improve the program exit response speed.
v0.4.1-beta
Gouryella
2025-12-10 17:41:07 +08:00
b3c8fc3f41fix(tunnel): Fixes the delayed display logic to correctly handle microsecond-level delays. - Adjust the delayed formatting function to prioritize checking if the delay is 0 to avoid displaying errors. - When the delay is less than 1 millisecond, it is displayed in microseconds to improve the precision of the expression. feat (constants): Shorten heart rate intervals and timeouts to improve response speed. - Adjust HeartbeatInterval from 5 seconds to 2 seconds - Adjust HeartbeatTimeout from 15 seconds to 6 seconds - Improve the sensitivity of heartbeat detection between the client and the server
v0.4.1-alpha
Gouryella
2025-12-10 16:25:45 +08:00
f6f2c6fd5bfeat (recovery): Introduced panic recovery and monitoring mechanisms. A new recovery package has been added, containing Recoverer and PanicMetrics, for capturing panics in goroutines. It records stack trace information and provides statistical metrics. This mechanism is also integrated into the TCP connector and listener. Enhance service stability and observability.
Gouryella
2025-12-10 16:10:26 +08:00
8e6f9c553afeat(proxy): Optimizes homepage response processing Convert the HTML content into byte slices and set the Content-Length header. To improve response performance and accuracy.
Gouryella
2025-12-10 15:26:24 +08:00
d21bb4897ffeat(cli): Supports stopping HTTPS tunnels and optimizes configuration display logic. - Added support for HTTPS tunnel types to the drip stop command and updated the example documentation. - Optimized token display logic to adapt to token formats of different lengths. - Adjust the alignment of FrameHandler buffer read/write and timeout configuration formats. - Move the error handling logic location to ensure data read integrity. - Introducing context to control request lifecycle and supporting cancel transfer in proxy handlers - The hop-by-hop header judgment format in the unified response header filtering rules - Add a context-aware streaming request cancellation mechanism and extend the channel cleanup timeout. - Add a context control field to the TCP connection structure to support connection lifecycle management. - Format the httpResponseWriter field comments
v0.4.0-beta
Gouryella
2025-12-08 16:57:10 +08:00
3bc7978999fix(proxy): Improves response handling for health check and statistics interfaces. Replace json.NewEncoder.Encode with json.Marshal and w.Write. Add a Content-Length header to ensure the integrity and correctness of the response data. At the same time, error handling is enhanced to avoid potential coding failures.
Gouryella
2025-12-08 15:51:02 +08:00
aa5b0bfde3feat(proxy): Adjusts the processing logic of the health check and statistics interfaces.
Gouryella
2025-12-08 15:22:25 +08:00
1a5ffce15crefactor(buffer): Optimizes TCP and HTTP streaming request processing using a buffer pool.
Gouryella
2025-12-08 12:53:56 +08:00
7283180e6aperf(client): Optimize client performance and introduce a data frame processing worker pool
v0.4.0-alpha
Gouryella
2025-12-08 12:24:42 +08:00
9e8b3b001dbuild(github): update sigstore version
v0.3.2
Gouryella
2025-12-07 13:54:23 +08:00
492ed3da9cMerge pull request #5 from Gouryella/fix/stop-laggy-stream
Gouryella
2025-12-07 13:51:26 +08:00
faa53400f5feat(docker): Refactored the Docker build and release process and added support for image signing.
Gouryella
2025-12-07 11:21:21 +08:00