package service import ( "context" "github.com/fleetdm/fleet/v4/server/contexts/ctxerr" "github.com/fleetdm/fleet/v4/server/fleet" ) func (svc *Service) LinuxHostDiskEncryptionStatus(ctx context.Context, host fleet.Host) (fleet.HostMDMDiskEncryption, error) { if !host.IsLUKSSupported() { return fleet.HostMDMDiskEncryption{}, nil } actionRequired := fleet.DiskEncryptionActionRequired verified := fleet.DiskEncryptionVerified failed := fleet.DiskEncryptionFailed key, err := svc.ds.GetHostDiskEncryptionKey(ctx, host.ID) if err != nil { if fleet.IsNotFound(err) { return fleet.HostMDMDiskEncryption{ Status: &actionRequired, }, nil } return fleet.HostMDMDiskEncryption{}, err } if key.ClientError != "" { return fleet.HostMDMDiskEncryption{ Status: &failed, Detail: key.ClientError, }, nil } if key.Base64Encrypted == "" { return fleet.HostMDMDiskEncryption{ Status: &actionRequired, }, nil } return fleet.HostMDMDiskEncryption{ Status: &verified, }, nil } func (svc *Service) GetMDMLinuxProfilesSummary(ctx context.Context, teamId *uint) (summary fleet.MDMProfilesSummary, err error) { if err = svc.authz.Authorize(ctx, fleet.MDMConfigProfileAuthz{TeamID: teamId}, fleet.ActionRead); err != nil { return summary, ctxerr.Wrap(ctx, err) } // Linux doesn't have configuration profiles, so if we aren't enforcing disk encryption we have nothing to report diskEncryptionConfig, err := svc.ds.GetConfigEnableDiskEncryption(ctx, teamId) if err != nil { return summary, ctxerr.Wrap(ctx, err) } else if !diskEncryptionConfig.Enabled { return summary, nil } counts, err := svc.ds.GetLinuxDiskEncryptionSummary(ctx, teamId) if err != nil { return summary, ctxerr.Wrap(ctx, err) } return fleet.MDMProfilesSummary{ Verified: counts.Verified, Pending: counts.ActionRequired, Failed: counts.Failed, }, nil }