add process posture check to posture checks handlers

This commit is contained in:
bcmmbaga
2024-03-12 15:20:00 +03:00
parent 5f0eec0add
commit 9f41a1f20f
4 changed files with 171 additions and 1 deletions

View File

@@ -221,6 +221,10 @@ func (p *PostureChecksHandler) savePostureChecks(
}
}
if processCheck := req.Checks.ProcessCheck; processCheck != nil {
postureChecks.Checks.ProcessCheck = toProcessCheck(processCheck)
}
if err := p.accountManager.SavePostureChecks(account.Id, user.Id, &postureChecks); err != nil {
util.WriteError(err, w)
return
@@ -235,7 +239,7 @@ func validatePostureChecksUpdate(req api.PostureCheckUpdate) error {
}
if req.Checks == nil || (req.Checks.NbVersionCheck == nil && req.Checks.OsVersionCheck == nil &&
req.Checks.GeoLocationCheck == nil && req.Checks.PeerNetworkRangeCheck == nil) {
req.Checks.GeoLocationCheck == nil && req.Checks.PeerNetworkRangeCheck == nil && req.Checks.ProcessCheck == nil) {
return status.Errorf(status.InvalidArgument, "posture checks shouldn't be empty")
}
@@ -292,6 +296,21 @@ func validatePostureChecksUpdate(req api.PostureCheckUpdate) error {
}
}
if processCheck := req.Checks.ProcessCheck; processCheck != nil {
if len(processCheck.Processes) == 0 {
return status.Errorf(status.InvalidArgument, "processes for process check shouldn't be empty")
}
for _, process := range processCheck.Processes {
if process.WindowsPath == "" {
return status.Errorf(status.InvalidArgument, "windows path for process check shouldn't be empty")
}
if process.Path == "" {
return status.Errorf(status.InvalidArgument, "path for process check shouldn't be empty")
}
}
}
return nil
}
@@ -322,6 +341,10 @@ func toPostureChecksResponse(postureChecks *posture.Checks) *api.PostureCheck {
checks.PeerNetworkRangeCheck = toPeerNetworkRangeCheckResponse(postureChecks.Checks.PeerNetworkRangeCheck)
}
if postureChecks.Checks.ProcessCheck != nil {
checks.ProcessCheck = toProcessCheckResponse(postureChecks.Checks.ProcessCheck)
}
return &api.PostureCheck{
Id: postureChecks.ID,
Name: postureChecks.Name,
@@ -396,3 +419,28 @@ func toPeerNetworkRangeCheck(check *api.PeerNetworkRangeCheck) (*posture.PeerNet
Action: string(check.Action),
}, nil
}
func toProcessCheckResponse(check *posture.ProcessCheck) *api.ProcessCheck {
processes := make([]api.Process, 0, len(check.Processes))
for _, process := range check.Processes {
processes = append(processes, (api.Process)(process))
}
return &api.ProcessCheck{
Processes: processes,
}
}
func toProcessCheck(check *api.ProcessCheck) *posture.ProcessCheck {
processes := make([]posture.Process, 0, len(check.Processes))
for _, process := range check.Processes {
processes = append(processes, posture.Process{
Path: process.Path,
WindowsPath: process.WindowsPath,
})
}
return &posture.ProcessCheck{
Processes: processes,
}
}