mirror of
https://github.com/hanzozt/zt.git
synced 2026-10-30 15:04:55 +00:00
- Repo names: ziti-* → zt-* - Go modules: github.com/hanzozt/ziti → github.com/hanzozt/zt - Docker images: hanzozt/ziti-* → hanzozt/zt-* - C/Java/JS symbols: ziti_* → zt_* - File and directory names updated
85 lines
1.5 KiB
Go
85 lines
1.5 KiB
Go
package posture
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"github.com/blang/semver"
|
|
"github.com/hanzozt/zt/v2/common/pb/edge_ctrl_pb"
|
|
)
|
|
|
|
type OsCheck struct {
|
|
*edge_ctrl_pb.DataState_PostureCheck
|
|
*edge_ctrl_pb.DataState_PostureCheck_OsList
|
|
}
|
|
|
|
func (m *OsCheck) Evaluate(data *InstanceData) *CheckError {
|
|
if data == nil || data.Os == nil {
|
|
return &CheckError{
|
|
Id: m.Id,
|
|
Name: m.Name,
|
|
Cause: NilStateError,
|
|
}
|
|
}
|
|
|
|
osTypeFailure := &OneInListError[Str]{
|
|
GivenValues: []Str{Str(data.Os.Os.Type)},
|
|
}
|
|
|
|
var foundOs *edge_ctrl_pb.DataState_PostureCheck_Os = nil
|
|
for _, os := range m.OsList {
|
|
if !strings.EqualFold(strings.ToLower(os.OsType), strings.ToLower(data.Os.Os.Type)) {
|
|
osTypeFailure.ValidValues = append(osTypeFailure.ValidValues, Str(os.OsType))
|
|
} else {
|
|
foundOs = os
|
|
break
|
|
}
|
|
}
|
|
|
|
if foundOs == nil {
|
|
return &CheckError{
|
|
Id: m.Id,
|
|
Name: m.Name,
|
|
Cause: osTypeFailure,
|
|
}
|
|
}
|
|
|
|
dataVer, err := semver.Make(data.Os.Os.Version)
|
|
|
|
if err != nil {
|
|
return &CheckError{
|
|
Id: m.Id,
|
|
Name: m.Name,
|
|
Cause: err,
|
|
}
|
|
}
|
|
|
|
osVersionFailure := &OneInListError[Str]{
|
|
GivenValues: []Str{Str(data.Os.Os.Version)},
|
|
}
|
|
|
|
for _, version := range foundOs.OsVersions {
|
|
versionRange, err := semver.ParseRange(version)
|
|
|
|
if err != nil {
|
|
return &CheckError{
|
|
Id: m.Id,
|
|
Name: m.Name,
|
|
Cause: err,
|
|
}
|
|
}
|
|
|
|
if versionRange(dataVer) {
|
|
return nil
|
|
} else {
|
|
osVersionFailure.ValidValues = append(osVersionFailure.ValidValues, Str(version))
|
|
}
|
|
}
|
|
|
|
return &CheckError{
|
|
Id: m.Id,
|
|
Name: m.Name,
|
|
Cause: osVersionFailure,
|
|
}
|
|
|
|
}
|