mirror of
https://github.com/netbirdio/netbird.git
synced 2024-11-22 16:13:31 +01:00
Merge remote-tracking branch 'origin/main' into lint-warns
# Conflicts: # connection/engine.go
This commit is contained in:
commit
f0048d16fb
@ -15,9 +15,10 @@ type Config struct {
|
|||||||
Peers []connection.Peer
|
Peers []connection.Peer
|
||||||
StunTurnURLs []*ice.URL
|
StunTurnURLs []*ice.URL
|
||||||
// host:port of the signal server
|
// host:port of the signal server
|
||||||
SignalAddr string
|
SignalAddr string
|
||||||
WgAddr string
|
WgAddr string
|
||||||
WgIface string
|
WgIface string
|
||||||
|
IFaceBlackList []string
|
||||||
}
|
}
|
||||||
|
|
||||||
//Write writes configPath to a file
|
//Write writes configPath to a file
|
||||||
|
@ -38,7 +38,11 @@ var (
|
|||||||
//todo proper close handling
|
//todo proper close handling
|
||||||
defer func() { signalClient.Close() }()
|
defer func() { signalClient.Close() }()
|
||||||
|
|
||||||
engine := connection.NewEngine(signalClient, config.StunTurnURLs, config.WgIface, config.WgAddr)
|
iFaceBlackList := make(map[string]struct{})
|
||||||
|
for i := 0; i < len(config.IFaceBlackList); i += 2 {
|
||||||
|
iFaceBlackList[config.IFaceBlackList[i]] = struct{}{}
|
||||||
|
}
|
||||||
|
engine := connection.NewEngine(signalClient, config.StunTurnURLs, config.WgIface, config.WgAddr, iFaceBlackList)
|
||||||
|
|
||||||
err = engine.Start(myKey, config.Peers)
|
err = engine.Start(myKey, config.Peers)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -31,6 +31,8 @@ type ConnConfig struct {
|
|||||||
RemoteWgKey wgtypes.Key
|
RemoteWgKey wgtypes.Key
|
||||||
|
|
||||||
StunTurnURLS []*ice.URL
|
StunTurnURLS []*ice.URL
|
||||||
|
|
||||||
|
iFaceBlackList map[string]struct{}
|
||||||
}
|
}
|
||||||
|
|
||||||
// IceCredentials ICE protocol credentials struct
|
// IceCredentials ICE protocol credentials struct
|
||||||
@ -93,6 +95,13 @@ func (conn *Connection) Open(timeout time.Duration) error {
|
|||||||
a, err := ice.NewAgent(&ice.AgentConfig{
|
a, err := ice.NewAgent(&ice.AgentConfig{
|
||||||
NetworkTypes: []ice.NetworkType{ice.NetworkTypeUDP4},
|
NetworkTypes: []ice.NetworkType{ice.NetworkTypeUDP4},
|
||||||
Urls: conn.Config.StunTurnURLS,
|
Urls: conn.Config.StunTurnURLS,
|
||||||
|
InterfaceFilter: func(s string) bool {
|
||||||
|
if conn.Config.iFaceBlackList == nil {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
_, ok := conn.Config.iFaceBlackList[s]
|
||||||
|
return !ok
|
||||||
|
},
|
||||||
})
|
})
|
||||||
conn.agent = a
|
conn.agent = a
|
||||||
|
|
||||||
@ -289,7 +298,7 @@ func (conn *Connection) listenOnConnectionStateChanges() error {
|
|||||||
log.Errorf("failed selecting active ICE candidate pair %s", err)
|
log.Errorf("failed selecting active ICE candidate pair %s", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
log.Debugf("closed to peer %s via selected candidate pair %s", conn.Config.RemoteWgKey.String(), pair)
|
log.Infof("will connect to peer %s via a selected connnection candidate pair %s", conn.Config.RemoteWgKey.String(), pair)
|
||||||
} else if state == ice.ConnectionStateDisconnected || state == ice.ConnectionStateFailed {
|
} else if state == ice.ConnectionStateDisconnected || state == ice.ConnectionStateFailed {
|
||||||
// todo do we really wanna have a connection restart within connection itself? Think of moving it outside
|
// todo do we really wanna have a connection restart within connection itself? Think of moving it outside
|
||||||
err := conn.Close()
|
err := conn.Close()
|
||||||
|
@ -24,6 +24,8 @@ type Engine struct {
|
|||||||
wgIface string
|
wgIface string
|
||||||
// Wireguard local address
|
// Wireguard local address
|
||||||
wgIP string
|
wgIP string
|
||||||
|
// Network Interfaces to ignore
|
||||||
|
iFaceBlackList map[string]struct{}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Peer is an instance of the Connection Peer
|
// Peer is an instance of the Connection Peer
|
||||||
@ -33,13 +35,15 @@ type Peer struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewEngine creates a new Connection Engine
|
// NewEngine creates a new Connection Engine
|
||||||
func NewEngine(signal *signal.Client, stunsTurns []*ice.URL, wgIface string, wgAddr string) *Engine {
|
func NewEngine(signal *signal.Client, stunsTurns []*ice.URL, wgIface string, wgAddr string,
|
||||||
|
iFaceBlackList map[string]struct{}) *Engine {
|
||||||
return &Engine{
|
return &Engine{
|
||||||
stunsTurns: stunsTurns,
|
stunsTurns: stunsTurns,
|
||||||
signal: signal,
|
signal: signal,
|
||||||
wgIface: wgIface,
|
wgIface: wgIface,
|
||||||
wgIP: wgAddr,
|
wgIP: wgAddr,
|
||||||
conns: map[string]*Connection{},
|
conns: map[string]*Connection{},
|
||||||
|
iFaceBlackList: iFaceBlackList,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -113,6 +117,7 @@ func (e *Engine) openPeerConnection(wgPort int, myKey wgtypes.Key, peer Peer) (*
|
|||||||
WgKey: myKey,
|
WgKey: myKey,
|
||||||
RemoteWgKey: remoteKey,
|
RemoteWgKey: remoteKey,
|
||||||
StunTurnURLS: e.stunsTurns,
|
StunTurnURLS: e.stunsTurns,
|
||||||
|
iFaceBlackList: e.iFaceBlackList,
|
||||||
}
|
}
|
||||||
|
|
||||||
signalOffer := func(uFrag string, pwd string) error {
|
signalOffer := func(uFrag string, pwd string) error {
|
||||||
|
Loading…
Reference in New Issue
Block a user