mirror of
https://github.com/Gouryella/drip.git
synced 2026-05-10 04:12:42 +00:00
refactor/server-hardening
- 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
Drip
Your Tunnel, Your Domain, Anywhere
A self-hosted tunneling solution to securely expose your services to the internet.
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
Languages
Go
76.5%
Shell
22.7%
Makefile
0.8%
