diff --git a/README.md b/README.md index aa2acfeff..e68ba09e7 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@

Big News! Wiretrustee becomes Netbird. - + Learn more

@@ -37,7 +37,7 @@ Start using Netbird at app.netbird.io
- See Documentation + See Documentation
Join our Slack channel
diff --git a/client/server/server.go b/client/server/server.go index c2fca97fa..4551bdc8a 100644 --- a/client/server/server.go +++ b/client/server/server.go @@ -90,6 +90,23 @@ func (s *Server) Start() error { return nil } +// loginAttempt attempts to login using the provided information. it returns a status in case something fails +func (s *Server) loginAttempt(ctx context.Context, setupKey, jwtToken string) (internal.StatusType, error) { + var status internal.StatusType + err := internal.Login(ctx, s.config, setupKey, jwtToken) + if err != nil { + if s, ok := gstatus.FromError(err); ok && (s.Code() == codes.InvalidArgument || s.Code() == codes.PermissionDenied) { + log.Warnf("failed login: %v", err) + status = internal.StatusNeedsLogin + } else { + log.Errorf("failed login: %v", err) + status = internal.StatusLoginFailed + } + return status, err + } + return "", nil +} + // Login uses setup key to prepare configuration for the daemon. func (s *Server) Login(_ context.Context, msg *proto.LoginRequest) (*proto.LoginResponse, error) { s.mutex.Lock() @@ -102,23 +119,23 @@ func (s *Server) Login(_ context.Context, msg *proto.LoginRequest) (*proto.Login state := internal.CtxGetState(ctx) defer func() { - s, err := state.Status() - if err != nil || (s != internal.StatusNeedsLogin && s != internal.StatusLoginFailed) { + status, err := state.Status() + if err != nil || (status != internal.StatusNeedsLogin && status != internal.StatusLoginFailed) { state.Set(internal.StatusIdle) } }() - state.Set(internal.StatusConnecting) - s.mutex.Lock() managementURL := s.managementURL if msg.ManagementUrl != "" { managementURL = msg.ManagementUrl + s.managementURL = msg.ManagementUrl } adminURL := s.adminURL if msg.AdminURL != "" { adminURL = msg.AdminURL + s.adminURL = msg.AdminURL } s.mutex.Unlock() @@ -131,6 +148,13 @@ func (s *Server) Login(_ context.Context, msg *proto.LoginRequest) (*proto.Login s.config = config s.mutex.Unlock() + if _, err := s.loginAttempt(ctx, "", ""); err == nil { + state.Set(internal.StatusIdle) + return &proto.LoginResponse{}, nil + } + + state.Set(internal.StatusConnecting) + if msg.SetupKey == "" { providerConfig, err := internal.GetDeviceAuthorizationFlowInfo(ctx, config) if err != nil { @@ -176,14 +200,8 @@ func (s *Server) Login(_ context.Context, msg *proto.LoginRequest) (*proto.Login }, nil } - if err := internal.Login(ctx, s.config, msg.SetupKey, ""); err != nil { - if s, ok := gstatus.FromError(err); ok && (s.Code() == codes.InvalidArgument || s.Code() == codes.PermissionDenied) { - log.Warnf("failed login with known status: %v", err) - state.Set(internal.StatusNeedsLogin) - } else { - log.Errorf("failed login: %v", err) - state.Set(internal.StatusLoginFailed) - } + if loginStatus, err := s.loginAttempt(ctx, msg.SetupKey, ""); err != nil { + state.Set(loginStatus) return nil, err } @@ -235,14 +253,8 @@ func (s *Server) WaitSSOLogin(_ context.Context, msg *proto.WaitSSOLoginRequest) return nil, err } - if err := internal.Login(ctx, s.config, "", tokenInfo.AccessToken); err != nil { - if s, ok := gstatus.FromError(err); ok && (s.Code() == codes.InvalidArgument || s.Code() == codes.PermissionDenied) { - log.Warnf("failed login: %v", err) - state.Set(internal.StatusNeedsLogin) - } else { - log.Errorf("failed login: %v", err) - state.Set(internal.StatusLoginFailed) - } + if loginStatus, err := s.loginAttempt(ctx, "", tokenInfo.AccessToken); err != nil { + state.Set(loginStatus) return nil, err } diff --git a/client/ui/client_ui.go b/client/ui/client_ui.go index 4d0df5d0f..5ee8c81cf 100644 --- a/client/ui/client_ui.go +++ b/client/ui/client_ui.go @@ -247,11 +247,6 @@ func (s *serviceClient) login() error { } } - if _, err := s.conn.Up(s.ctx, &proto.UpRequest{}); err != nil { - log.Errorf("up service: %v", err) - return err - } - return nil } @@ -276,6 +271,12 @@ func (s *serviceClient) menuUpClick() error { } } + status, err = conn.Status(s.ctx, &proto.StatusRequest{}) + if err != nil { + log.Errorf("get service status: %v", err) + return err + } + if status.Status != string(internal.StatusIdle) { log.Warnf("already connected") return nil diff --git a/infrastructure_files/configure.sh b/infrastructure_files/configure.sh index c29d84bcd..b14aa9f2c 100755 --- a/infrastructure_files/configure.sh +++ b/infrastructure_files/configure.sh @@ -22,9 +22,9 @@ then export TURN_PASSWORD=$(openssl rand -base64 32|sed 's/=//g') fi -MGMT_VOLUMENAME="${$VOLUME_PREFIX}${MGMT_VOLUMESUFFIX}" -SIGNAL_VOLUMENAME="${$VOLUME_PREFIX}${SIGNAL_VOLUMESUFFIX}" -LETSENCRYPT_VOLUMENAME="${$VOLUME_PREFIX}${LETSENCRYPT_VOLUMESUFFIX}" +MGMT_VOLUMENAME="${VOLUME_PREFIX}${MGMT_VOLUMESUFFIX}" +SIGNAL_VOLUMENAME="${VOLUME_PREFIX}${SIGNAL_VOLUMESUFFIX}" +LETSENCRYPT_VOLUMENAME="${VOLUME_PREFIX}${LETSENCRYPT_VOLUMESUFFIX}" # if volume with wiretrustee- prefix already exists, use it, else create new with netbird- OLD_PREFIX='wiretrustee-' if docker volume ls | grep -q "${OLD_PREFIX}${MGMT_VOLUMESUFFIX}"; then diff --git a/infrastructure_files/docker-compose.yml.tmpl b/infrastructure_files/docker-compose.yml.tmpl index 015cfdbaa..a06710584 100644 --- a/infrastructure_files/docker-compose.yml.tmpl +++ b/infrastructure_files/docker-compose.yml.tmpl @@ -19,7 +19,7 @@ services: - $LETSENCRYPT_VOLUMENAME:/etc/letsencrypt/ # Signal signal: - image: netbird/signal:latest + image: netbirdio/signal:latest restart: unless-stopped volumes: - $SIGNAL_VOLUMENAME:/var/lib/netbird @@ -30,7 +30,7 @@ services: # command: ["--letsencrypt-domain", "$WIRETRUSTEE_DOMAIN", "--log-file", "console"] # Management management: - image: netbird/management:latest + image: netbirdio/management:latest restart: unless-stopped depends_on: - dashboard