From 394a844878058f6a304053b3b0687ce509e44856 Mon Sep 17 00:00:00 2001 From: Andrew Martinez Date: Fri, 30 Oct 2020 14:13:43 -0400 Subject: [PATCH] fixes for mop/sdks - case insensitive checks for domain/os - no minimum mac addresses on posture responses --- controller/internal/routes/identity_router.go | 3 ++- controller/model/posture_check_model_os.go | 17 +++++++++++++---- .../model/posture_check_model_windows_domain.go | 3 ++- .../posture_response_mac_address_create.go | 9 --------- rest_server/embedded_spec.go | 2 -- specs/swagger.yml | 1 - 6 files changed, 17 insertions(+), 18 deletions(-) diff --git a/controller/internal/routes/identity_router.go b/controller/internal/routes/identity_router.go index 07cc785f3..3e5f0b9e9 100644 --- a/controller/internal/routes/identity_router.go +++ b/controller/internal/routes/identity_router.go @@ -285,7 +285,8 @@ func (r *IdentityRouter) getPolicyAdvice(ae *env.AppEnv, rc *response.RequestCon } func (r *IdentityRouter) getPostureData(ae *env.AppEnv, rc *response.RequestContext) { - postureData := ae.GetHandlers().PostureResponse.PostureData(rc.Identity.Id) + id, _ := rc.GetEntityId() + postureData := ae.GetHandlers().PostureResponse.PostureData(id) rc.RespondWithOk(postureData, nil) } diff --git a/controller/model/posture_check_model_os.go b/controller/model/posture_check_model_os.go index 4cdb84021..2f687740f 100644 --- a/controller/model/posture_check_model_os.go +++ b/controller/model/posture_check_model_os.go @@ -20,6 +20,7 @@ import ( "fmt" "github.com/openziti/edge/controller/persistence" "go.etcd.io/bbolt" + "strings" ) type PostureCheckOperatingSystem struct { @@ -34,14 +35,22 @@ func (p *PostureCheckOperatingSystem) Evaluate(pd *PostureData) bool { validOses := map[string]map[string]struct{}{} for _, os := range p.OperatingSystems { + osType := strings.ToLower(os.OsType) + validOses[osType] = map[string]struct{}{} for _, version := range os.OsVersions { - validOses[os.OsType] = map[string]struct{}{} - validOses[os.OsType][version] = struct{}{} + validOses[osType][strings.ToLower(version)] = struct{}{} } } - if validOs, isValidOs := validOses[pd.Os.Type]; isValidOs { - if _, isValidVersion := validOs[pd.Os.Version]; isValidVersion { + osType := strings.ToLower(pd.Os.Type) + osVersion := strings.ToLower(pd.Os.Version) + if validOs, isValidOs := validOses[osType]; isValidOs { + if len(validOs) == 0 { + //any version + return true + } + + if _, isValidVersion := validOs[osVersion]; isValidVersion { return true } } diff --git a/controller/model/posture_check_model_windows_domain.go b/controller/model/posture_check_model_windows_domain.go index 16bba4383..bd48516aa 100644 --- a/controller/model/posture_check_model_windows_domain.go +++ b/controller/model/posture_check_model_windows_domain.go @@ -20,6 +20,7 @@ import ( "fmt" "github.com/openziti/edge/controller/persistence" "go.etcd.io/bbolt" + "strings" ) type PostureCheckWindowsDomains struct { @@ -32,7 +33,7 @@ func (p *PostureCheckWindowsDomains) Evaluate(pd *PostureData) bool { } for _, domain := range p.Domains { - if domain == pd.Domain.Name { + if strings.ToLower(domain) == strings.ToLower(pd.Domain.Name) { return true } } diff --git a/rest_model/posture_response_mac_address_create.go b/rest_model/posture_response_mac_address_create.go index 9e14f6232..81d53b8b2 100644 --- a/rest_model/posture_response_mac_address_create.go +++ b/rest_model/posture_response_mac_address_create.go @@ -47,7 +47,6 @@ type PostureResponseMacAddressCreate struct { // mac addresses // Required: true - // Min Items: 1 MacAddresses []string `json:"macAddresses"` } @@ -76,7 +75,6 @@ func (m *PostureResponseMacAddressCreate) UnmarshalJSON(raw []byte) error { // mac addresses // Required: true - // Min Items: 1 MacAddresses []string `json:"macAddresses"` } buf := bytes.NewBuffer(raw) @@ -126,7 +124,6 @@ func (m PostureResponseMacAddressCreate) MarshalJSON() ([]byte, error) { // mac addresses // Required: true - // Min Items: 1 MacAddresses []string `json:"macAddresses"` }{ @@ -185,12 +182,6 @@ func (m *PostureResponseMacAddressCreate) validateMacAddresses(formats strfmt.Re return err } - iMacAddressesSize := int64(len(m.MacAddresses)) - - if err := validate.MinItems("macAddresses", "body", iMacAddressesSize, 1); err != nil { - return err - } - return nil } diff --git a/rest_server/embedded_spec.go b/rest_server/embedded_spec.go index 13b79d03d..c225dd7ce 100644 --- a/rest_server/embedded_spec.go +++ b/rest_server/embedded_spec.go @@ -5463,7 +5463,6 @@ func init() { "properties": { "macAddresses": { "type": "array", - "minItems": 1, "items": { "type": "string" } @@ -23130,7 +23129,6 @@ func init() { "properties": { "macAddresses": { "type": "array", - "minItems": 1, "items": { "type": "string" } diff --git a/specs/swagger.yml b/specs/swagger.yml index 183157a84..132c150ca 100644 --- a/specs/swagger.yml +++ b/specs/swagger.yml @@ -6612,7 +6612,6 @@ definitions: properties: macAddresses: type: array - minItems: 1 items: type: string x-class: "MAC"