mirror of
https://github.com/TwiN/gatus.git
synced 2024-11-25 17:33:19 +01:00
43 lines
1.3 KiB
Go
43 lines
1.3 KiB
Go
package security
|
|
|
|
import (
|
|
"github.com/gorilla/mux"
|
|
)
|
|
|
|
// Config is the security configuration for Gatus
|
|
type Config struct {
|
|
Basic *BasicConfig `yaml:"basic,omitempty"`
|
|
OIDC *OIDCConfig `yaml:"oidc,omitempty"`
|
|
}
|
|
|
|
// IsValid returns whether the security configuration is valid or not
|
|
func (c *Config) IsValid() bool {
|
|
return (c.Basic != nil && c.Basic.isValid()) || (c.OIDC != nil && c.OIDC.isValid())
|
|
}
|
|
|
|
// RegisterHandlers registers all handlers required based on the security configuration
|
|
func (c *Config) RegisterHandlers(router *mux.Router) error {
|
|
if c.OIDC != nil {
|
|
if err := c.OIDC.initialize(); err != nil {
|
|
return err
|
|
}
|
|
router.HandleFunc("/login", c.OIDC.loginHandler)
|
|
router.HandleFunc("/authorization-code/callback", c.OIDC.callbackHandler)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// BasicConfig is the configuration for Basic authentication
|
|
type BasicConfig struct {
|
|
// Username is the name which will need to be used for a successful authentication
|
|
Username string `yaml:"username"`
|
|
|
|
// PasswordSha512Hash is the SHA512 hash of the password which will need to be used for a successful authentication
|
|
PasswordSha512Hash string `yaml:"password-sha512"`
|
|
}
|
|
|
|
// isValid returns whether the basic security configuration is valid or not
|
|
func (c *BasicConfig) isValid() bool {
|
|
return len(c.Username) > 0 && len(c.PasswordSha512Hash) == 128
|
|
}
|