diff options
| author | James Elliott <james-d-elliott@users.noreply.github.com> | 2021-01-04 21:28:55 +1100 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-01-04 21:28:55 +1100 | 
| commit | 29a900226d8ac85fa04e11af022a9561dae9e652 (patch) | |
| tree | f6d575ddbe474fc3472ae2743b716529046292a6 /internal/configuration/schema/validator.go | |
| parent | 3487fd392e770c3e4c7af9aa5ef8e3e25b9a73eb (diff) | |
[FEATURE] Enhance LDAP/SMTP TLS Configuration and Unify Them (#1557)
* add new directive in the global scope `certificates_directory` which is used to bulk load certs and trust them in Authelia
* this is in ADDITION to system certs and are trusted by both LDAP and SMTP
* added a shared TLSConfig struct to be used by both SMTP and LDAP, and anything else in the future that requires tuning the TLS
* remove usage of deprecated LDAP funcs Dial and DialTLS in favor of DialURL which is also easier to use
* use the server name from LDAP URL or SMTP host when validating the certificate unless otherwise defined in the TLS section
* added temporary translations from the old names to the new ones for all deprecated options
* added docs
* updated example configuration
* final deprecations to be done in 4.28.0
* doc updates
* fix misc linting issues
* uniform deprecation notices for ease of final removal
* added additional tests covering previously uncovered areas and the new configuration options
* add non-fatal to certificate loading when system certs could not be loaded
* adjust timeout of Suite ShortTimeouts
* add warnings pusher for the StructValidator
* make the schema suites uninform
* utilize the warnings in the StructValidator
* fix test suite usage for skip_verify
* extract LDAP filter parsing into it's own function to make it possible to test
* test LDAP filter parsing
* update ErrorContainer interface
* add tests to the StructValidator
* add NewTLSConfig test
* move baseDN for users/groups into parsed values
* add tests to cover many of the outstanding areas in LDAP
* add explicit deferred LDAP conn close to UpdatePassword
* add some basic testing to SMTP notifier
* suggestions from code review
Diffstat (limited to 'internal/configuration/schema/validator.go')
| -rw-r--r-- | internal/configuration/schema/validator.go | 27 | 
1 files changed, 24 insertions, 3 deletions
diff --git a/internal/configuration/schema/validator.go b/internal/configuration/schema/validator.go index bd290b91e..a37e3eec5 100644 --- a/internal/configuration/schema/validator.go +++ b/internal/configuration/schema/validator.go @@ -10,8 +10,11 @@ import (  // ErrorContainer represents a container where we can add errors and retrieve them.  type ErrorContainer interface {  	Push(err error) +	PushWarning(err error)  	HasErrors() bool +	HasWarnings() bool  	Errors() []error +	Warnings() []error  }  // Validator represents the validator interface. @@ -110,33 +113,51 @@ func (v *Validator) Errors() map[string][]error {  // StructValidator is a validator for structs.  type StructValidator struct { -	errors []error +	errors   []error +	warnings []error  }  // NewStructValidator is a constructor of struct validator.  func NewStructValidator() *StructValidator {  	val := new(StructValidator)  	val.errors = make([]error, 0) +	val.warnings = make([]error, 0)  	return val  } -// Push an error in the validator. +// Push an error to the validator.  func (v *StructValidator) Push(err error) {  	v.errors = append(v.errors, err)  } +// PushWarning error to the validator. +func (v *StructValidator) PushWarning(err error) { +	v.warnings = append(v.warnings, err) +} +  // HasErrors checks whether the validator contains errors.  func (v *StructValidator) HasErrors() bool {  	return len(v.errors) > 0  } +// HasWarnings checks whether the validator contains warning errors. +func (v *StructValidator) HasWarnings() bool { +	return len(v.warnings) > 0 +} +  // Errors returns the errors.  func (v *StructValidator) Errors() []error {  	return v.errors  } -// Clear errors. +// Warnings returns the warnings. +func (v *StructValidator) Warnings() []error { +	return v.warnings +} + +// Clear errors and warnings.  func (v *StructValidator) Clear() {  	v.errors = []error{} +	v.warnings = []error{}  }  | 
