diff --git a/client/cmd/service_controller.go b/client/cmd/service_controller.go index 50fb35d5e..0d8887698 100644 --- a/client/cmd/service_controller.go +++ b/client/cmd/service_controller.go @@ -61,7 +61,7 @@ func (p *program) Start(svc service.Service) error { } } - serverInstance := server.New(p.ctx, util.FindFirstLogPath(logFiles), configPath, profilesDisabled, updateSettingsDisabled) + serverInstance := server.New(p.ctx, util.FindFirstLogPath(logFiles), configPath, profilesDisabled, updateSettingsDisabled, daemonAddr) if err := serverInstance.Start(); err != nil { log.Fatalf("failed to start daemon: %v", err) } diff --git a/client/cmd/testutil_test.go b/client/cmd/testutil_test.go index 42cca1a9b..543dfdfdf 100644 --- a/client/cmd/testutil_test.go +++ b/client/cmd/testutil_test.go @@ -138,7 +138,7 @@ func startClientDaemon( s := grpc.NewServer() server := client.New(ctx, - "", "", false, false) + "", "", false, false, "") if err := server.Start(); err != nil { t.Fatal(err) } diff --git a/client/cmd/up.go b/client/cmd/up.go index 1fa58e6ed..d5f103437 100644 --- a/client/cmd/up.go +++ b/client/cmd/up.go @@ -196,7 +196,7 @@ func runInForegroundMode(ctx context.Context, cmd *cobra.Command, activeProf *pr r := peer.NewRecorder(config.ManagementURL.String()) r.GetFullStatus() - connectClient := internal.NewConnectClient(ctx, config, r) + connectClient := internal.NewConnectClient(ctx, config, r, daemonAddr) SetupDebugHandler(ctx, config, r, connectClient, "") return connectClient.Run(nil) diff --git a/client/internal/connect.go b/client/internal/connect.go index 523dcaf1f..efe1f010a 100644 --- a/client/internal/connect.go +++ b/client/internal/connect.go @@ -45,18 +45,20 @@ type ConnectClient struct { engineMutex sync.Mutex persistSyncResponse bool + daemonAddress string } func NewConnectClient( ctx context.Context, config *profilemanager.Config, statusRecorder *peer.Status, - + daemonAddress string, ) *ConnectClient { return &ConnectClient{ ctx: ctx, config: config, statusRecorder: statusRecorder, + daemonAddress: daemonAddress, engineMutex: sync.Mutex{}, } } @@ -270,7 +272,7 @@ func (c *ConnectClient) run(mobileDependency MobileDependency, runningChan chan checks := loginResp.GetChecks() c.engineMutex.Lock() - c.engine = NewEngine(engineCtx, cancel, signalClient, mgmClient, relayManager, engineConfig, mobileDependency, c.statusRecorder, checks) + c.engine = NewEngine(engineCtx, cancel, signalClient, mgmClient, relayManager, engineConfig, mobileDependency, c.statusRecorder, checks, c.daemonAddress) c.engine.SetSyncResponsePersistence(c.persistSyncResponse) c.engineMutex.Unlock() diff --git a/client/internal/engine.go b/client/internal/engine.go index 1f9f67a62..d350682a5 100644 --- a/client/internal/engine.go +++ b/client/internal/engine.go @@ -199,6 +199,8 @@ type Engine struct { latestSyncResponse *mgmProto.SyncResponse connSemaphore *semaphoregroup.SemaphoreGroup flowManager nftypes.FlowManager + + daemonAddress string } // Peer is an instance of the Connection Peer @@ -222,6 +224,7 @@ func NewEngine( mobileDep MobileDependency, statusRecorder *peer.Status, checks []*mgmProto.Checks, + daemonAddress string, ) *Engine { engine := &Engine{ clientCtx: clientCtx, @@ -241,6 +244,7 @@ func NewEngine( statusRecorder: statusRecorder, checks: checks, connSemaphore: semaphoregroup.NewSemaphoreGroup(connInitLimit), + daemonAddress: daemonAddress, } sm := profilemanager.NewServiceManager("") @@ -892,9 +896,9 @@ func (e *Engine) updateConfig(conf *mgmProto.PeerConfig) error { return nil } -func (e *Engine) getPeerClient(addr string) (*grpc.ClientConn, error) { +func (e *Engine) getPeerClient() (*grpc.ClientConn, error) { conn, err := grpc.NewClient( - strings.TrimPrefix(addr, "tcp://"), + strings.TrimPrefix(e.daemonAddress, "tcp://"), grpc.WithTransportCredentials(insecure.NewCredentials()), ) if err != nil { @@ -946,8 +950,7 @@ func (e *Engine) receiveJobEvents() { } func (e *Engine) handleBundle(params *mgmProto.BundleParameters) (string, error) { - // todo: implement with real daemon address - conn, err := e.getPeerClient("unix:///var/run/netbird.sock") + conn, err := e.getPeerClient() if err != nil { return "", err } @@ -982,7 +985,7 @@ func (e *Engine) handleBundle(params *mgmProto.BundleParameters) (string, error) func (e *Engine) getStatusOutput(anon bool) (string, error) { // todo: implement with real daemon address - conn, err := e.getPeerClient("unix:///var/run/netbird.sock") + conn, err := e.getPeerClient() if err != nil { return "", err } diff --git a/client/internal/engine_test.go b/client/internal/engine_test.go index c2c9ae84a..0c5278640 100644 --- a/client/internal/engine_test.go +++ b/client/internal/engine_test.go @@ -234,6 +234,7 @@ func TestEngine_SSH(t *testing.T) { MobileDependency{}, peer.NewRecorder("https://mgm"), nil, + "", ) engine.dnsServer = &dns.MockServer{ @@ -377,7 +378,7 @@ func TestEngine_UpdateNetworkMap(t *testing.T) { }, MobileDependency{}, peer.NewRecorder("https://mgm"), - nil) + nil, "") wgIface := &MockWGIface{ NameFunc: func() string { return "utun102" }, @@ -595,7 +596,7 @@ func TestEngine_Sync(t *testing.T) { WgAddr: "100.64.0.1/24", WgPrivateKey: key, WgPort: 33100, - }, MobileDependency{}, peer.NewRecorder("https://mgm"), nil) + }, MobileDependency{}, peer.NewRecorder("https://mgm"), nil, "") engine.ctx = ctx engine.dnsServer = &dns.MockServer{ @@ -759,7 +760,7 @@ func TestEngine_UpdateNetworkMapWithRoutes(t *testing.T) { WgAddr: wgAddr, WgPrivateKey: key, WgPort: 33100, - }, MobileDependency{}, peer.NewRecorder("https://mgm"), nil) + }, MobileDependency{}, peer.NewRecorder("https://mgm"), nil, "") engine.ctx = ctx newNet, err := stdnet.NewNet() if err != nil { @@ -960,7 +961,7 @@ func TestEngine_UpdateNetworkMapWithDNSUpdate(t *testing.T) { WgAddr: wgAddr, WgPrivateKey: key, WgPort: 33100, - }, MobileDependency{}, peer.NewRecorder("https://mgm"), nil) + }, MobileDependency{}, peer.NewRecorder("https://mgm"), nil, "") engine.ctx = ctx newNet, err := stdnet.NewNet() @@ -1484,7 +1485,7 @@ func createEngine(ctx context.Context, cancel context.CancelFunc, setupKey strin } relayMgr := relayClient.NewManager(ctx, nil, key.PublicKey().String()) - e, err := NewEngine(ctx, cancel, signalClient, mgmtClient, relayMgr, conf, MobileDependency{}, peer.NewRecorder("https://mgm"), nil), nil + e, err := NewEngine(ctx, cancel, signalClient, mgmtClient, relayMgr, conf, MobileDependency{}, peer.NewRecorder("https://mgm"), nil, ""), nil e.ctx = ctx return e, err } diff --git a/client/server/server.go b/client/server/server.go index f2e8dc12a..316027b45 100644 --- a/client/server/server.go +++ b/client/server/server.go @@ -78,6 +78,7 @@ type Server struct { profileManager *profilemanager.ServiceManager profilesDisabled bool updateSettingsDisabled bool + daemonAddress string } type oauthAuthFlow struct { @@ -88,7 +89,7 @@ type oauthAuthFlow struct { } // New server instance constructor. -func New(ctx context.Context, logFile string, configFile string, profilesDisabled bool, updateSettingsDisabled bool) *Server { +func New(ctx context.Context, logFile string, configFile string, profilesDisabled bool, updateSettingsDisabled bool, daemonAddress string) *Server { return &Server{ rootCtx: ctx, logFile: logFile, @@ -97,6 +98,7 @@ func New(ctx context.Context, logFile string, configFile string, profilesDisable profileManager: profilemanager.NewServiceManager(configFile), profilesDisabled: profilesDisabled, updateSettingsDisabled: updateSettingsDisabled, + daemonAddress: daemonAddress, } } @@ -235,7 +237,7 @@ func (s *Server) connectWithRetryRuns(ctx context.Context, config *profilemanage runOperation := func() error { log.Tracef("running client connection") - s.connectClient = internal.NewConnectClient(ctx, config, statusRecorder) + s.connectClient = internal.NewConnectClient(ctx, config, statusRecorder, s.daemonAddress) s.connectClient.SetSyncResponsePersistence(s.persistSyncResponse) err := s.connectClient.Run(runningChan) diff --git a/client/server/server_test.go b/client/server/server_test.go index 6f7c4a89a..cf9dae8ff 100644 --- a/client/server/server_test.go +++ b/client/server/server_test.go @@ -95,7 +95,7 @@ func TestConnectWithRetryRuns(t *testing.T) { t.Fatalf("failed to set active profile state: %v", err) } - s := New(ctx, "debug", "", false, false) + s := New(ctx, "debug", "", false, false, "") s.config = config @@ -152,7 +152,7 @@ func TestServer_Up(t *testing.T) { t.Fatalf("failed to set active profile state: %v", err) } - s := New(ctx, "console", "", false, false) + s := New(ctx, "console", "", false, false, "") err = s.Start() require.NoError(t, err) @@ -228,7 +228,7 @@ func TestServer_SubcribeEvents(t *testing.T) { t.Fatalf("failed to set active profile state: %v", err) } - s := New(ctx, "console", "", false, false) + s := New(ctx, "console", "", false, false, "") err = s.Start() require.NoError(t, err)