Gouryella 2ec2f9c127 fix: harden server concurrency safety and clean up dead code
- Enforce connSem limit on WebSocket connections (bypassed maxConns)
- Fix data race in authRateLimiter.isRateLimited (copy fields under lock)
- Use RLock fast path in sessionStore.validate
- Clean up per-tunnel Prometheus labels on unregister (cardinality leak)
- Fix potential deadlock in CleanupStale (lock ordering vs RegisterWithIP)
- Replace time.After with time.NewTimer in tunnel Send (timer leak)
- Cache tunnelTypeStr to avoid lock contention on hot path
- Use atomic connID sequence to prevent sync.Map key collision
- Add http.Flusher to httpResponseWriter
- Unify TCP socket buffer sizes (256KB → 512KB)
- Extract utils.ContainsIgnoreCase, deduplicate IsTransportAllowed
- Hoist reserved subdomain map to package-level var
- Rename ambiguous bufioWriterPool → httpRespWriterPool
- Remove unused: scalerLoop, ensureSessions, handleProxyLogin,
  cleanupShutdownOnce, initCleanupShutdown, sessionIdx, errorAfterConn
- Fix staticcheck: redundant type assertion, single-case select,
  redundant CanonicalHeaderKey
2026-04-23 17:55:24 +08:00
2025-12-02 16:17:36 +08:00

Drip Logo

Drip

Your Tunnel, Your Domain, Anywhere

A self-hosted tunneling solution to securely expose your services to the internet.

Documentation | 中文文档

Go License TLS

Drip is a quiet, disciplined tunnel. You light a small lamp on your network, and it carries that light outward—through your own infrastructure, on your own terms.

Why Drip?

  • Control your data - No third-party servers, traffic stays between your client and server
  • No limits - Unlimited tunnels, bandwidth, and requests
  • Actually free - Use your own domain, no paid tiers or feature restrictions
  • Open source - BSD 3-Clause License

Recent Changes

2025-02-14

  • Bandwidth Limiting (QoS) - Per-tunnel bandwidth control with token bucket algorithm, server enforces min(client, server) as effective limit
  • Transport Protocol Control - Support independent configuration for service domain and tunnel domain
# Client: limit to 1MB/s
drip http 3000 --bandwidth 1M
# Server: global limit (config.yaml)
bandwidth: 10M
burst_multiplier: 2.5

2025-01-29

  • Bearer Token Authentication - Added bearer token authentication support for tunnel access control
  • Code Optimization - Refactored large modules into smaller, focused components for better maintainability

Quick Start

Install

bash <(curl -sL https://driptunnel.app/install.sh)

Basic Usage

# Configure (first time only)
drip config init

# Expose local HTTP server
drip http 3000

# With custom subdomain
drip http 3000 -n myapp
# → https://myapp.your-domain.com

Documentation

For complete documentation, visit Docs

License

BSD 3-Clause License - see LICENSE for details

Description
No description provided
Readme BSD-3-Clause 2.2 MiB
Languages
Go 76.5%
Shell 22.7%
Makefile 0.8%