Commit Graph

  • 2ec2f9c127 fix: harden server concurrency safety and clean up dead code v0.7.7-alpha refactor/server-hardening Gouryella 2026-04-23 17:55:24 +08:00
  • 2ef802f6e8 fix: harden server concurrency safety and clean up dead code Gouryella 2026-04-23 17:55:14 +08:00
  • 5f656edc2a Merge pull request #24 from Gouryella/fix/stability-fixes main v0.7.6 Gouryella 2026-02-27 14:56:00 +08:00
  • caa7f80a86 refactor(tcp): remove unused netutil packages and optimize remote IP handling Gouryella 2026-02-27 14:55:41 +08:00
  • 364b6ea435 fix(tcp): Fix remote IP tracking and connection management optimization Gouryella 2026-02-27 11:49:29 +08:00
  • 9adad60c28 Merge pull request #23 from Gouryella/feat/qos-bandwidth-limiting-v2 v0.7.5 Gouryella 2026-02-15 03:04:28 +08:00
  • 6f1f4da5d9 feat(client): Add tunnel bandwidth verification and error handling fix(server): Improve burst value calculation of bandwidth limiter Gouryella 2026-02-15 03:04:15 +08:00
  • 89f67ab145 feat(client): Add bandwidth limit function support Gouryella 2026-02-15 02:39:50 +08:00
  • 8edb792f13 Merge pull request #21 from Gouryella/feat/bearer-auth-refactor v0.7.4 Gouryella 2026-01-29 14:53:58 +08:00
  • dfb19930c7 refactor(pool): optimize bufio pool's type definition and reset logic Gouryella 2026-01-29 14:53:23 +08:00
  • 307cf8e6cc feat: Add Bearer Token authentication support and optimize code structure zhiqing 2026-01-29 14:40:53 +08:00
  • 3256a3486f Merge pull request #20 from Gouryella/feat/502-error-page v0.7.3 Gouryella 2026-01-16 20:43:26 +08:00
  • dc560580fc feat(tcp): Improved local service unavailability error response Gouryella 2026-01-16 20:42:43 +08:00
  • 3872bd9326 Merge pull request #19 from Gouryella/fix/subdomain-routing-and-404 v0.7.2 Gouryella 2026-01-16 17:30:17 +08:00
  • 10aa65065a feat(proxy): Support independent configuration for service domain and tunnel domain Gouryella 2026-01-16 17:18:43 +08:00
  • 73fa51480d Merge pull request #18 from Gouryella/fix/protocol-determination Gouryella 2026-01-16 14:58:13 +08:00
  • bb1ba6d4b2 feat(tcp): add transmission protocol control functionality Gouryella 2026-01-16 14:50:18 +08:00
  • 761c170642 docs(readme): Update document links and navigation structure Gouryella 2026-01-16 12:34:47 +08:00
  • 00a3ced765 docs: Update document link address Gouryella 2026-01-16 12:23:39 +08:00
  • d1f1147dc4 fix(ci): Update Docker image tag generation rules Gouryella 2026-01-15 20:40:03 +08:00
  • bc2254bd73 docs(readme): Update document link text and URL v0.7.1 Gouryella 2026-01-15 17:34:42 +08:00
  • 18a0e6f1ce Merge pull request #17 from Gouryella/feat/config-file-management Gouryella 2026-01-15 17:32:21 +08:00
  • 5459d952be feat(server): Optimize configuration priority processing logic Gouryella 2026-01-15 17:32:08 +08:00
  • 37d1bfc089 feat(client): Support predefined tunnel configuration and management commands Gouryella 2026-01-15 17:18:27 +08:00
  • ba4c1761dc feat(install-scripts): support more architectures and improve download logic Gouryella 2026-01-14 16:08:18 +08:00
  • eb2f168226 build(release): Ignore unsupported platform architecture combinations v0.7.0 Gouryella 2026-01-14 15:41:54 +08:00
  • a3cad40196 fix: Update goreleaser-action version to improve stability Gouryella 2026-01-14 15:26:42 +08:00
  • 2815e267be feat: add goreleaser configuration file Gouryella 2026-01-14 15:22:21 +08:00
  • 6c3fb1130d Merge pull request #16 from Gouryella/feat/add-wss-transport Gouryella 2026-01-14 14:58:54 +08:00
  • b8d1002d35 feat(tcp): add TCP transmission protocol check Gouryella 2026-01-14 14:50:45 +08:00
  • 4b2dcc0ee1 feat(workflow): Use GoReleaser to simplify the release process Gouryella 2026-01-14 13:30:25 +08:00
  • 6139a9c0ed feat: add transport protocol option supporting TCP and WebSocket connections v0.7.0-alpha Gouryella 2026-01-14 12:49:08 +08:00
  • 81f156f49c Merge pull request #15 from Gouryella/feat/http-auth v0.6.3 Gouryella 2026-01-13 11:05:21 +08:00
  • 029044a9ba feat(proxy): Implement HTML escaping in login pages to prevent XSS attacks Gouryella 2026-01-13 11:03:20 +08:00
  • f75bd9f0d2 feat(cli): add proxy authentication support Gouryella 2026-01-13 10:41:12 +08:00
  • 0d1b72d19f Merge pull request #14 from Gouryella/feat/ip-access-control v0.6.2 Gouryella 2026-01-12 11:51:49 +08:00
  • 852dbb2ee6 feat(netutil): extend IP access checker blacklist from single IP to CIDR ranges Gouryella 2026-01-12 11:50:34 +08:00
  • d7b92a8b95 feat(server): Add server configuration validation and optimize connection handling Gouryella 2026-01-12 10:55:27 +08:00
  • 85a0f44e44 feat: Add IP access control functionality Gouryella 2026-01-11 14:22:41 +08:00
  • 4b0e15dfb5 Merge pull request #13 from Gouryella/feat/prometheus-monitoring v0.6.1 Gouryella 2026-01-05 14:08:46 +08:00
  • 12bd4115e3 feat(tunnel/manager): update tunnel IP metrics statistics Gouryella 2026-01-05 13:38:08 +08:00
  • d03874b3d3 feat: 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
  • 8c8a848320 docs(README): Removed v0.5.0 update content and added an acknowledgments section. Gouryella 2026-01-04 11:31:33 +08:00
  • 11ca454659 feat(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
  • fa92896d7e Merge pull request #12 from Gouryella/perf/pool-scaling-and-latency-fix v0.6.0 Gouryella 2025-12-24 10:14:01 +08:00
  • e05f128a9c feat (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
  • 88e4525bf6 perf(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
  • 0cff316334 feat(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
  • 9e2bcafa98 docs (nginx): Add proxy header configuration to support WebSocket upgrades Gouryella 2025-12-22 14:24:46 +08:00
  • 2ea604a55e Merge pull request #11 from Gouryella/fix/reconnect-sticky-endpoint v0.5.3 Gouryella 2025-12-20 10:47:05 +08:00
  • b75a098f99 feat(tcp): Fix reconnect behavior to keep stable subdomain and TCP port Gouryella 2025-12-20 10:25:13 +08:00
  • ddefbbdbd9 Merge pull request #10 from Gouryella/fix/websocket-error v0.5.2 Gouryella 2025-12-19 17:56:39 +08:00
  • bad099d0f3 fix(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
  • b1393e5e0f Merge pull request #9 from Gouryella/fix/http-proxy v0.5.1 Gouryella 2025-12-19 10:34:34 +08:00
  • e5aaf150e3 feat(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
  • 1c733de303 feat(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
  • 7431d821d8 refactor(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
  • be4fe2059c Merge pull request #8 from Gouryella/refactor/protocol-v2 v0.5.0 Gouryella 2025-12-14 11:13:57 +08:00
  • f1a65ac965 feat(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
  • b92015aace docs (readme): Updated version feature descriptions to v0.5.0 Gouryella 2025-12-13 18:10:37 +08:00
  • 0c19c3300c feat(tunnel): switch to yamux stream proxying and connection pooling v0.5.0-alpha Gouryella 2025-12-13 18:03:44 +08:00
  • 3c93789266 Merge pull request #7 from Gouryella/perf/fix-something v0.4.1 Gouryella 2025-12-10 20:42:16 +08:00
  • d192c28acc fix(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
  • 5940fff204 feat(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
  • b3c8fc3f41 fix(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
  • f6f2c6fd5b feat (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
  • 8e6f9c553a feat(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
  • 600e6141d5 Merge pull request #6 from Gouryella/perf/improve-performance v0.4.0 Gouryella 2025-12-08 20:33:54 +08:00
  • d21bb4897f feat(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
  • 3bc7978999 fix(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
  • aa5b0bfde3 feat(proxy): Adjusts the processing logic of the health check and statistics interfaces. Gouryella 2025-12-08 15:22:25 +08:00
  • 3d1479900c fix(tcp): Prevent slow handshake attacks and optimize TLS configuration Gouryella 2025-12-08 13:29:57 +08:00
  • 1a5ffce15c refactor(buffer): Optimizes TCP and HTTP streaming request processing using a buffer pool. Gouryella 2025-12-08 12:53:56 +08:00
  • 7283180e6a perf(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
  • 9e8b3b001d build(github): update sigstore version v0.3.2 Gouryella 2025-12-07 13:54:23 +08:00
  • 492ed3da9c Merge pull request #5 from Gouryella/fix/stop-laggy-stream Gouryella 2025-12-07 13:51:26 +08:00
  • faa53400f5 feat(docker): Refactored the Docker build and release process and added support for image signing. Gouryella 2025-12-07 11:21:21 +08:00
  • 0fee9569d2 ci(docker): Removes Docker Hub login and image push configuration Gouryella 2025-12-07 00:14:33 +08:00
  • b5629a1cf7 docs(readme): Updated badge display to use div tags Gouryella 2025-12-06 23:59:58 +08:00
  • bbef7efb5e feat(client): Implements a response cancellation mechanism to improve resource management v0.3.2-alpha Gouryella 2025-12-06 23:58:31 +08:00
  • 47ac5c7c22 Merge pull request #4 from Gouryella/fix/windows-daemon v0.3.1 Gouryella 2025-12-06 23:23:11 +08:00
  • 133a3892af fix: smooth table layout for Windows CLI Gouryella 2025-12-06 23:04:49 +08:00
  • dface89e78 Documents (Readme): Updated installation instructions and merged client and server installation scripts Gouryella 2025-12-06 22:18:35 +08:00
  • 522c092d8d feat(install-scripts): Enhanced installation script functionality and added uninstallation support Gouryella 2025-12-06 13:27:34 +08:00
  • bec13a9e51 feat(install.sh): Refactored message handling functions for compatibility with bash 3.2 and zsh Gouryella 2025-12-06 12:34:01 +08:00
  • eb0b36164b Translate comments in nginx configuration file Gouryella 2025-12-06 03:26:25 +08:00
  • eee2d570f1 Add TLSv1.3 support to proxy configuration Gouryella 2025-12-06 03:25:16 +08:00
  • c67cba6625 feat (client): Added system dependencies and optimized Windows process check logic Gouryella 2025-12-05 23:43:15 +08:00
  • 531c5fcbec Merge pull request #3 from Gouryella/feat/major-performance-improvements v0.3.0 Gouryella 2025-12-05 22:21:46 +08:00
  • 1e477879c5 feat(proxy): Adds last activity time tracking for streaming responses Gouryella 2025-12-05 22:20:04 +08:00
  • aead68bb62 feat: Add HTTP streaming, compression support, and Docker deployment enhancements Gouryella 2025-12-05 22:09:07 +08:00
  • b538397a00 Merge pull request #2 from Gouryella/perf/adaptive-pool-and-binary-protocol v0.2.0 Gouryella 2025-12-03 18:33:05 +08:00
  • 8086657b7a refactor(writer): Optimizes the FrameWriter write logic and cleans up irrelevant comments. Gouryella 2025-12-03 18:32:38 +08:00
  • 35e6c86e1f feat(client): Added the --short option to the version command to support plain text output. Gouryella 2025-12-03 18:11:37 +08:00
  • bb5ed1739e docs(readme): Updated the structure and content of the English and Chinese README documents Gouryella 2025-12-03 11:09:06 +08:00
  • 729911d2cf Merge pull request #1 from Gouryella/perf/improve-flow v0.1.1 Gouryella 2025-12-03 10:53:30 +08:00
  • 0aa438e202 feat(protocol): Enhanced the heartbeat control mechanism of the frame writer Gouryella 2025-12-03 10:52:53 +08:00
  • fbd910b3a2 Improve client config validation Gouryella 2025-12-03 10:28:57 +08:00
  • dd54e79ad7 perf (client): Refactored the command-line interface and enhanced user experience Gouryella 2025-12-03 10:18:52 +08:00
  • 37d1c4e005 ci(release): Optimizes the way Git commit information is retrieved in the build workflow. v0.1.0 Gouryella 2025-12-02 16:55:30 +08:00