diff --git a/client/internal/connect.go b/client/internal/connect.go index c4840b4bb..d4d17e30b 100644 --- a/client/internal/connect.go +++ b/client/internal/connect.go @@ -3,7 +3,6 @@ package internal import ( "context" "fmt" - "runtime" "strings" "time" @@ -44,12 +43,11 @@ func RunClientMobile(ctx context.Context, config *Config, statusRecorder *peer.S return runClient(ctx, config, statusRecorder, mobileDependency) } -func RunClientiOS(ctx context.Context, config *Config, statusRecorder *peer.Status, fileDescriptor int32, networkChangeListener listener.NetworkChangeListener, dnsManager dns.IosDnsManager, interfaceName string, engineReadyListener listener.EngineReadyListener) error { +func RunClientiOS(ctx context.Context, config *Config, statusRecorder *peer.Status, fileDescriptor int32, networkChangeListener listener.NetworkChangeListener, dnsManager dns.IosDnsManager, interfaceName string) error { mobileDependency := MobileDependency{ FileDescriptor: fileDescriptor, InterfaceName: interfaceName, NetworkChangeListener: networkChangeListener, - EngineReadyListener: engineReadyListener, DnsManager: dnsManager, } return runClient(ctx, config, statusRecorder, mobileDependency) @@ -191,10 +189,6 @@ func runClient(ctx context.Context, config *Config, statusRecorder *peer.Status, return wrapErr(err) } - if runtime.GOOS == "ios" { - mobileDependency.EngineReadyListener.Notify() - } - log.Print("Netbird engine started, my IP is: ", peerConfig.Address) state.Set(StatusConnected) diff --git a/client/internal/mobile_dependency.go b/client/internal/mobile_dependency.go index 874cbda4b..0f762a570 100644 --- a/client/internal/mobile_dependency.go +++ b/client/internal/mobile_dependency.go @@ -12,7 +12,6 @@ type MobileDependency struct { TunAdapter iface.TunAdapter IFaceDiscover stdnet.ExternalIFaceDiscover NetworkChangeListener listener.NetworkChangeListener - EngineReadyListener listener.EngineReadyListener HostDNSAddresses []string DnsReadyListener dns.ReadyListener DnsManager dns.IosDnsManager diff --git a/client/ios/NetBirdSDK/client.go b/client/ios/NetBirdSDK/client.go index 4b6351df6..4f0bddca7 100644 --- a/client/ios/NetBirdSDK/client.go +++ b/client/ios/NetBirdSDK/client.go @@ -16,6 +16,11 @@ import ( "github.com/netbirdio/netbird/formatter" ) +// ConnectionListener export internal Listener for mobile +type ConnectionListener interface { + peer.Listener +} + // RouteListener export internal RouteListener for mobile type NetworkChangeListener interface { listener.NetworkChangeListener @@ -33,11 +38,6 @@ type CustomLogger interface { Error(message string) } -// EngineReadyListener export internal EngineReadyListener for mobile -type EngineReadyListener interface { - listener.EngineReadyListener -} - func init() { formatter.SetLogcatFormatter(log.StandardLogger()) } @@ -72,7 +72,7 @@ func NewClient(cfgFile, deviceName string, osVersion string, osName string, netw } // Run start the internal client. It is a blocker function -func (c *Client) Run(fd int32, interfaceName string, engineReadyListener EngineReadyListener) error { +func (c *Client) Run(fd int32, interfaceName string) error { log.Infof("Starting NetBird client") log.Debugf("Tunnel uses interface: %s", interfaceName) cfg, err := internal.UpdateOrCreateConfig(internal.ConfigInput{ @@ -103,7 +103,7 @@ func (c *Client) Run(fd int32, interfaceName string, engineReadyListener EngineR // todo do not throw error in case of cancelled context ctx = internal.CtxInitState(ctx) c.onHostDnsFn = func([]string) {} - return internal.RunClientiOS(ctx, cfg, c.recorder, fd, c.networkChangeListener, c.dnsManager, interfaceName, engineReadyListener) + return internal.RunClientiOS(ctx, cfg, c.recorder, fd, c.networkChangeListener, c.dnsManager, interfaceName) } // Stop the internal client and free the resources @@ -139,8 +139,14 @@ func (c *Client) GetStatusDetails() *StatusDetails { return &StatusDetails{items: peerInfos, fqdn: fullStatus.LocalPeerState.FQDN, ip: fullStatus.LocalPeerState.IP} } -func (c *Client) GetManagementStatus() bool { - return c.recorder.GetFullStatus().ManagementState.Connected +// SetConnectionListener set the network connection listener +func (c *Client) SetConnectionListener(listener ConnectionListener) { + c.recorder.SetConnectionListener(listener) +} + +// RemoveConnectionListener remove connection listener +func (c *Client) RemoveConnectionListener() { + c.recorder.RemoveConnectionListener() } func (c *Client) IsLoginRequired() bool {