mirror of
https://github.com/netbirdio/netbird.git
synced 2024-11-23 16:43:29 +01:00
50 lines
1.2 KiB
Go
50 lines
1.2 KiB
Go
|
package proxy
|
||
|
|
||
|
import (
|
||
|
log "github.com/sirupsen/logrus"
|
||
|
"github.com/wiretrustee/wiretrustee/iface"
|
||
|
"net"
|
||
|
)
|
||
|
|
||
|
// NoProxy is used when there is no need for a proxy between ICE and Wireguard.
|
||
|
// This is possible in either of these cases:
|
||
|
// - peers are in the same local network
|
||
|
// - one of the peers has a public static IP (host)
|
||
|
// NoProxy will just update remote peer with a remote host and fixed Wireguard port (r.g. 51820).
|
||
|
// In order NoProxy to work, Wireguard port has to be fixed for the time being.
|
||
|
type NoProxy struct {
|
||
|
config Config
|
||
|
}
|
||
|
|
||
|
func NewNoProxy(config Config) *NoProxy {
|
||
|
return &NoProxy{config: config}
|
||
|
}
|
||
|
|
||
|
func (p *NoProxy) Close() error {
|
||
|
// noop
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
// Start just updates Wireguard peer with the remote IP and default Wireguard port
|
||
|
func (p *NoProxy) Start(remoteConn net.Conn) error {
|
||
|
|
||
|
log.Debugf("using NoProxy while connecting to peer %s", p.config.RemoteKey)
|
||
|
addr, err := net.ResolveUDPAddr("udp", remoteConn.RemoteAddr().String())
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
addr.Port = iface.DefaultWgPort
|
||
|
err = p.config.WgInterface.UpdatePeer(p.config.RemoteKey, p.config.AllowedIps, DefaultWgKeepAlive,
|
||
|
addr, p.config.PreSharedKey)
|
||
|
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func (p *NoProxy) Type() Type {
|
||
|
return TypeNoProxy
|
||
|
}
|