diff --git a/server/api/account.go b/server/api/account.go index 41aadc2cc..da3c6421f 100644 --- a/server/api/account.go +++ b/server/api/account.go @@ -385,7 +385,7 @@ func (api AccountApi) AccessTokenGetEndpoint(c echo.Context) error { account, _ := GetCurrentAccount(c) accessTokens, err := repository.AccessTokenRepository.FindByUserId(context.TODO(), account.ID) if err != nil { - if errors.Is(gorm.ErrRecordNotFound, err) { + if errors.Is(err, gorm.ErrRecordNotFound) { accessTokens = []model.AccessToken{} } else { return err diff --git a/server/api/backup.go b/server/api/backup.go index 289655014..074d819b8 100644 --- a/server/api/backup.go +++ b/server/api/backup.go @@ -16,7 +16,7 @@ import ( type BackupApi struct{} func (api BackupApi) BackupExportEndpoint(c echo.Context) error { - err, backup := service.BackupService.Export() + backup, err := service.BackupService.Export() if err != nil { return err } diff --git a/server/api/session.go b/server/api/session.go index 0c7c81683..7ddb6a8bd 100644 --- a/server/api/session.go +++ b/server/api/session.go @@ -429,7 +429,7 @@ func (api SessionApi) SessionLsEndpoint(c echo.Context) error { return Success(c, files) } else if "rdp" == s.Protocol { storageId := s.StorageId - err, files := service.StorageService.StorageLs(remoteDir, storageId) + files, err := service.StorageService.StorageLs(remoteDir, storageId) if err != nil { return err } diff --git a/server/api/storage.go b/server/api/storage.go index 6771d6166..f3ed3c123 100644 --- a/server/api/storage.go +++ b/server/api/storage.go @@ -163,7 +163,7 @@ func (api StorageApi) StorageLsEndpoint(c echo.Context) error { return err } remoteDir := c.FormValue("dir") - err, files := service.StorageService.StorageLs(remoteDir, storageId) + files, err := service.StorageService.StorageLs(remoteDir, storageId) if err != nil { return err } diff --git a/server/api/worker/command.go b/server/api/worker/command.go index f4aac07ad..609852188 100644 --- a/server/api/worker/command.go +++ b/server/api/worker/command.go @@ -120,10 +120,7 @@ func (api WorkCommandApi) CommandGetEndpoint(c echo.Context) (err error) { func (api WorkCommandApi) checkPermission(c echo.Context, commandId string) bool { command, err := repository.CommandRepository.FindById(context.Background(), commandId) if err != nil { - if errors.Is(gorm.ErrRecordNotFound, err) { - return true - } - return false + return errors.Is(err, gorm.ErrRecordNotFound) } account, _ := api.GetCurrentAccount(c) userId := account.ID diff --git a/server/service/authorised.go b/server/service/authorised.go index d53830410..2fb1aafe3 100644 --- a/server/service/authorised.go +++ b/server/service/authorised.go @@ -107,7 +107,7 @@ func (s authorisedService) GetAuthorised(userId, assetId string) (item *model.Au id := utils.Sign([]string{assetId, userId, ""}) authorised, err := repository.AuthorisedRepository.FindById(context.Background(), id) if err != nil { - if errors.Is(gorm.ErrRecordNotFound, err) { + if errors.Is(err, gorm.ErrRecordNotFound) { groupIds, err := repository.UserGroupMemberRepository.FindUserGroupIdsByUserId(context.Background(), userId) if err != nil { return nil, err diff --git a/server/service/backup.go b/server/service/backup.go index 952e0b592..0f99fcbac 100644 --- a/server/service/backup.go +++ b/server/service/backup.go @@ -25,24 +25,24 @@ type backupService struct { baseService } -func (service backupService) Export() (error, *dto.Backup) { +func (service backupService) Export() (*dto.Backup, error) { ctx := context.TODO() users, err := repository.UserRepository.FindAll(ctx) if err != nil { - return err, nil + return nil, err } for i := range users { users[i].Password = "" } userGroups, err := repository.UserGroupRepository.FindAll(ctx) if err != nil { - return err, nil + return nil, err } if len(userGroups) > 0 { for i := range userGroups { members, err := repository.UserGroupMemberRepository.FindUserIdsByUserGroupId(ctx, userGroups[i].ID) if err != nil { - return err, nil + return nil, err } userGroups[i].Members = members } @@ -50,54 +50,54 @@ func (service backupService) Export() (error, *dto.Backup) { storages, err := repository.StorageRepository.FindAll(ctx) if err != nil { - return err, nil + return nil, err } strategies, err := repository.StrategyRepository.FindAll(ctx) if err != nil { - return err, nil + return nil, err } jobs, err := repository.JobRepository.FindAll(ctx) if err != nil { - return err, nil + return nil, err } accessSecurities, err := repository.SecurityRepository.FindAll(ctx) if err != nil { - return err, nil + return nil, err } accessGateways, err := repository.GatewayRepository.FindAll(ctx) if err != nil { - return err, nil + return nil, err } commands, err := repository.CommandRepository.FindAll(ctx) if err != nil { - return err, nil + return nil, err } credentials, err := repository.CredentialRepository.FindAll(ctx) if err != nil { - return err, nil + return nil, err } if len(credentials) > 0 { for i := range credentials { if err := CredentialService.Decrypt(&credentials[i], config.GlobalCfg.EncryptionPassword); err != nil { - return err, nil + return nil, err } } } assets, err := repository.AssetRepository.FindAll(ctx) if err != nil { - return err, nil + return nil, err } var assetMaps = make([]map[string]interface{}, 0) if len(assets) > 0 { for i := range assets { asset := assets[i] if err := AssetService.Decrypt(&asset, config.GlobalCfg.EncryptionPassword); err != nil { - return err, nil + return nil, err } attributeMap, err := repository.AssetRepository.FindAssetAttrMapByAssetId(ctx, asset.ID) if err != nil { - return err, nil + return nil, err } itemMap := utils.StructToMap(asset) for key := range attributeMap { @@ -120,7 +120,7 @@ func (service backupService) Export() (error, *dto.Backup) { Credentials: credentials, Assets: assetMaps, } - return nil, &backup + return &backup, nil } func (service backupService) Import(backup *dto.Backup) error { @@ -162,7 +162,7 @@ func (service backupService) Import(backup *dto.Backup) error { userGroup, err := UserGroupService.Create(ctx, item.Name, members) if err != nil { - if errors.Is(nt.ErrNameAlreadyUsed, err) { + if errors.Is(err, nt.ErrNameAlreadyUsed) { // 删除名称重复的用户组 delete(userGroupIdMapping, oldId) continue diff --git a/server/service/job_exec_shell.go b/server/service/job_exec_shell.go index 20757dce2..4f8ce678f 100644 --- a/server/service/job_exec_shell.go +++ b/server/service/job_exec_shell.go @@ -134,7 +134,7 @@ func (r ShellJob) executeShellByAssets(assets []model.Asset) { var msg string var execRes ExecScriptResult if err != nil { - if errors.Is(gorm.ErrRecordNotFound, err) { + if errors.Is(err, gorm.ErrRecordNotFound) { msg = fmt.Sprintf("资产「%v」Shell执行失败,请检查资产所关联接入网关是否存在,耗时「%v」", asset.Name, elapsed) } else { msg = fmt.Sprintf("资产「%v」Shell执行失败,错误内容为:「%v」,耗时「%v」", asset.Name, err.Error(), elapsed) diff --git a/server/service/session.go b/server/service/session.go index a969fe5db..cf43198de 100644 --- a/server/service/session.go +++ b/server/service/session.go @@ -262,7 +262,7 @@ func (service sessionService) Create(clientIp, assetId, mode string, user *model if strategyId != "" { strategy, err := repository.StrategyRepository.FindById(context.TODO(), strategyId) if err != nil { - if !errors.Is(gorm.ErrRecordNotFound, err) { + if !errors.Is(err, gorm.ErrRecordNotFound) { return nil, err } } else { diff --git a/server/service/storage.go b/server/service/storage.go index f22745a5d..1e3c037be 100644 --- a/server/service/storage.go +++ b/server/service/storage.go @@ -6,7 +6,6 @@ import ( "errors" "fmt" "io" - "io/ioutil" "mime/multipart" "net/http" "os" @@ -128,21 +127,25 @@ type File struct { } func (service storageService) Ls(drivePath, remoteDir string) ([]File, error) { - fileInfos, err := ioutil.ReadDir(path.Join(drivePath, remoteDir)) + fileInfos, err := os.ReadDir(path.Join(drivePath, remoteDir)) if err != nil { return nil, err } var files = make([]File, 0) for i := range fileInfos { + info, err := fileInfos[i].Info() + if err != nil { + continue + } file := File{ Name: fileInfos[i].Name(), Path: path.Join(remoteDir, fileInfos[i].Name()), IsDir: fileInfos[i].IsDir(), - Mode: fileInfos[i].Mode().String(), - IsLink: fileInfos[i].Mode()&os.ModeSymlink == os.ModeSymlink, - ModTime: common.NewJsonTime(fileInfos[i].ModTime()), - Size: fileInfos[i].Size(), + Mode: info.Mode().String(), + IsLink: info.Mode()&os.ModeSymlink == os.ModeSymlink, + ModTime: common.NewJsonTime(info.ModTime()), + Size: info.Size(), } files = append(files, file) @@ -264,16 +267,16 @@ func (service storageService) StorageDownload(c echo.Context, file, storageId st return nil } -func (service storageService) StorageLs(remoteDir, storageId string) (error, []File) { +func (service storageService) StorageLs(remoteDir, storageId string) ([]File, error) { drivePath := service.GetBaseDrivePath() if strings.Contains(remoteDir, "../") { - return errors.New("非法请求 :("), nil + return nil, errors.New("非法请求 :(") } files, err := service.Ls(path.Join(drivePath, storageId), remoteDir) if err != nil { - return err, nil + return nil, err } - return nil, files + return files, nil } func (service storageService) StorageMkDir(remoteDir, storageId string) error { diff --git a/server/service/user.go b/server/service/user.go index c303f5804..0530f730d 100644 --- a/server/service/user.go +++ b/server/service/user.go @@ -176,7 +176,7 @@ func (service userService) OnEvicted(token string, value interface{}) { if strings.HasPrefix(token, "forever") { } else { err := service.LogoutByToken(token) - if err != nil && !errors.Is(gorm.ErrRecordNotFound, err) { + if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) { } } } @@ -207,7 +207,7 @@ func (service userService) ReloadToken() error { token := loginLog.ID user, err := repository.UserRepository.FindByUsername(context.TODO(), loginLog.Username) if err != nil { - if errors.Is(gorm.ErrRecordNotFound, err) { + if errors.Is(err, gorm.ErrRecordNotFound) { _ = repository.LoginLogRepository.DeleteById(context.TODO(), token) } continue