Add process validation for peer metadata

This commit is contained in:
bcmmbaga
2024-03-12 19:24:08 +03:00
parent e66e39cc70
commit 41348bb39b
2 changed files with 157 additions and 2 deletions

View File

@@ -1,6 +1,9 @@
package posture
import (
"fmt"
"slices"
nbpeer "github.com/netbirdio/netbird/management/server/peer"
)
@@ -16,7 +19,29 @@ type ProcessCheck struct {
var _ Check = (*ProcessCheck)(nil)
func (p *ProcessCheck) Check(peer nbpeer.Peer) (bool, error) {
return false, nil
peerActiveProcesses := make([]string, 0, len(peer.Meta.Processes))
for _, process := range peer.Meta.Processes {
peerActiveProcesses = append(peerActiveProcesses, process.Path)
}
switch peer.Meta.GoOS {
case "darwin", "linux":
for _, process := range p.Processes {
if !slices.Contains(peerActiveProcesses, process.Path) {
return false, nil
}
}
return true, nil
case "windows":
for _, process := range p.Processes {
if !slices.Contains(peerActiveProcesses, process.WindowsPath) {
return false, nil
}
}
return true, nil
default:
return false, fmt.Errorf("unsupported peer's operating system: %s", peer.Meta.GoOS)
}
}
func (p *ProcessCheck) Name() string {