package ssh import ( "errors" "time" "golang.org/x/term" ) func (s *Server) newPassword() error { password, err := s.uc.GenNewPassword() if err != nil { s.log.Error("failed to generate new password", "err", err) return err } s.log.Info("new server password generated", "password", password) return nil } // get user password from terminal func (s *Server) passwordRequest(term *term.Terminal) error { // check password attempts := 3 for { pass, err := term.ReadPassword("Enter your password: ") if err != nil { return err } ok, err := s.uc.PasswordExists(pass) if err != nil { return err } if ok { term.Write([]byte("Login success\n")) return nil } time.Sleep(time.Second * 1) attempts -= 1 if attempts <= 0 { return errors.New("invalid password") } term.Write([]byte("Permission denied, please try again.\n")) } }