mirror of
https://github.com/netbirdio/netbird.git
synced 2026-04-17 15:56:39 +00:00
55 lines
1.6 KiB
Go
55 lines
1.6 KiB
Go
package reverseproxy
|
|
|
|
import (
|
|
"fmt"
|
|
"net"
|
|
"sync"
|
|
"time"
|
|
)
|
|
|
|
// defaultConn is a lazy connection wrapper that uses the standard network dialer
|
|
// This is useful for testing or development when not using WireGuard tunnels
|
|
type defaultConn struct {
|
|
dialer *net.Dialer
|
|
mu sync.Mutex
|
|
conns map[string]net.Conn // cache connections by "network:address"
|
|
}
|
|
|
|
func (dc *defaultConn) Read(b []byte) (n int, err error) {
|
|
return 0, fmt.Errorf("Read not supported on defaultConn - use dial via Transport")
|
|
}
|
|
|
|
func (dc *defaultConn) Write(b []byte) (n int, err error) {
|
|
return 0, fmt.Errorf("Write not supported on defaultConn - use dial via Transport")
|
|
}
|
|
|
|
func (dc *defaultConn) Close() error {
|
|
dc.mu.Lock()
|
|
defer dc.mu.Unlock()
|
|
|
|
for _, conn := range dc.conns {
|
|
conn.Close()
|
|
}
|
|
dc.conns = make(map[string]net.Conn)
|
|
return nil
|
|
}
|
|
|
|
func (dc *defaultConn) LocalAddr() net.Addr { return nil }
|
|
func (dc *defaultConn) RemoteAddr() net.Addr { return nil }
|
|
func (dc *defaultConn) SetDeadline(t time.Time) error { return nil }
|
|
func (dc *defaultConn) SetReadDeadline(t time.Time) error { return nil }
|
|
func (dc *defaultConn) SetWriteDeadline(t time.Time) error { return nil }
|
|
|
|
// NewDefaultConn creates a connection wrapper that uses the standard network dialer
|
|
// This is useful for testing or development when not using WireGuard tunnels
|
|
// The actual dialing happens when the HTTP Transport calls DialContext
|
|
func NewDefaultConn() net.Conn {
|
|
return &defaultConn{
|
|
dialer: &net.Dialer{
|
|
Timeout: 30 * time.Second,
|
|
KeepAlive: 30 * time.Second,
|
|
},
|
|
conns: make(map[string]net.Conn),
|
|
}
|
|
}
|