-
Notifications
You must be signed in to change notification settings - Fork 424
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Extend management to sync meta and posture checks with peer (#1727)
* Add method to retrieve peer's applied posture checks * Add posture checks in server response and update proto messages * Refactor * Extends peer metadata synchronization through SyncRequest and propagate posture changes on syncResponse * Remove account lock * Pass system info on sync * Fix tests * Refactor * resolve merge * Evaluate process check on client (#1749) * implement server and client sync peer meta alongside mocks * wip: add check file and process * Add files to peer metadata for process check * wip: update peer meta on first sync * Add files to peer's metadata * Evaluate process check using files from peer metadata * Fix panic and append windows path to files * Fix check network address and files equality * Evaluate active process on darwin * Evaluate active process on linux * Skip processing processes if no paths are set * Return network map on peer meta-sync and update account peer's * Update client network map on meta sync * Get system info with applied checks * Add windows package * Remove a network map from sync meta-response * Update checks proto message * Keep client checks state and sync meta on checks change * Evaluate a running process * skip build for android and ios * skip check file and process for android and ios * bump gopsutil version * fix tests * move process check to separate os file * refactor * evaluate info with checks on receiving management events * skip meta-update for an old client with no meta-sync support * Check if peer meta is empty without reflection
- Loading branch information
Showing
26 changed files
with
1,399 additions
and
600 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
//go:build windows || (linux && !android) || (darwin && !ios) | ||
|
||
package system | ||
|
||
import ( | ||
"os" | ||
"slices" | ||
|
||
"github.com/shirou/gopsutil/v3/process" | ||
) | ||
|
||
// getRunningProcesses returns a list of running process paths. | ||
func getRunningProcesses() ([]string, error) { | ||
processes, err := process.Processes() | ||
if err != nil { | ||
return nil, err | ||
} | ||
|
||
processMap := make(map[string]bool) | ||
for _, p := range processes { | ||
path, _ := p.Exe() | ||
if path != "" { | ||
processMap[path] = true | ||
} | ||
} | ||
|
||
uniqueProcesses := make([]string, 0, len(processMap)) | ||
for p := range processMap { | ||
uniqueProcesses = append(uniqueProcesses, p) | ||
} | ||
|
||
return uniqueProcesses, nil | ||
} | ||
|
||
// checkFileAndProcess checks if the file path exists and if a process is running at that path. | ||
func checkFileAndProcess(paths []string) ([]File, error) { | ||
files := make([]File, len(paths)) | ||
if len(paths) == 0 { | ||
return files, nil | ||
} | ||
|
||
runningProcesses, err := getRunningProcesses() | ||
if err != nil { | ||
return nil, err | ||
} | ||
|
||
for i, path := range paths { | ||
file := File{Path: path} | ||
|
||
_, err := os.Stat(path) | ||
file.Exist = !os.IsNotExist(err) | ||
|
||
file.ProcessIsRunning = slices.Contains(runningProcesses, path) | ||
files[i] = file | ||
} | ||
|
||
return files, nil | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.