Documentation
¶
Index ¶
- Constants
- Variables
- func FlagSet(name string) *flag.FlagSet
- func StringToTemplateHookFunc() mapstructure.DecodeHookFuncType
- func Validate(mode int, conf Config) error
- type Config
- type Debug
- type HTTP
- type HTTPCheck
- type Log
- type OAuth2
- type OAuth2AuthStyle
- type OAuth2Client
- type OAuth2Endpoints
- type OAuth2Refresh
- type OAuth2Validate
- type OpenVPNCommonName
- type OpenVPNCommonNameMode
- type OpenVPNPassthrough
- type OpenVpn
- type OpenVpnBypass
- type Secret
- type StringSlice
- type URL
Constants ¶
const ( Plugin = iota ManagementClient )
Variables ¶
var Defaults = Config{ Debug: Debug{ Listen: ":9001", }, Log: Log{ Format: "console", Level: slog.LevelInfo, VPNClientIP: true, }, HTTP: HTTP{ BaseURL: &URL{ Scheme: "http", Host: "localhost:9000", }, Listen: ":9000", TLS: false, Check: HTTPCheck{ IPAddr: false, }, CallbackTemplate: template.Must(template.New("index.gohtml").ParseFS(ui.Template, "index.gohtml")), }, OpenVpn: OpenVpn{ Addr: &URL{ Scheme: "unix", Path: "/run/openvpn/server.sock", OmitHost: true, }, AuthTokenUser: true, AuthPendingTimeout: 3 * time.Minute, CommonName: OpenVPNCommonName{ EnvironmentVariableName: "common_name", Mode: CommonNameModePlain, }, Bypass: OpenVpnBypass{ CommonNames: make([]string, 0), }, Passthrough: OpenVPNPassthrough{ Enabled: false, Address: &URL{ Scheme: "unix", Path: "/run/openvpn-auth-oauth2/server.sock", OmitHost: true, }, SocketMode: 660, SocketGroup: "", }, }, OAuth2: OAuth2{ AuthStyle: OAuth2AuthStyle(oauth2.AuthStyleInParams), Client: OAuth2Client{}, Endpoints: OAuth2Endpoints{ Auth: &URL{Scheme: "", Host: ""}, Discovery: &URL{Scheme: "", Host: ""}, Token: &URL{Scheme: "", Host: ""}, }, Issuer: &URL{Scheme: "", Host: ""}, Nonce: true, PKCE: true, Provider: "generic", Refresh: OAuth2Refresh{ Expires: time.Hour * 8, ValidateUser: true, }, Scopes: make([]string, 0), Validate: OAuth2Validate{ Groups: make([]string, 0), IPAddr: false, Issuer: true, Roles: make([]string, 0), }, }, }
var ErrRequired = errors.New("required")
Functions ¶
func StringToTemplateHookFunc ¶ added in v1.6.0
func StringToTemplateHookFunc() mapstructure.DecodeHookFuncType
StringToTemplateHookFunc parse a string to template.Template.
Types ¶
type Config ¶
type Config struct { ConfigFile string `json:"config" koanf:"config"` Debug Debug `json:"debug" koanf:"debug"` Log Log `json:"log" koanf:"log"` HTTP HTTP `json:"http" koanf:"http"` OpenVpn OpenVpn `json:"openvpn" koanf:"openvpn"` OAuth2 OAuth2 `json:"oauth2" koanf:"oauth2"` }
type HTTP ¶ added in v1.7.0
type HTTP struct { Listen string `json:"listen" koanf:"listen"` CertFile string `json:"cert" koanf:"cert"` KeyFile string `json:"key" koanf:"key"` TLS bool `json:"tls" koanf:"tls"` BaseURL *URL `json:"baseurl" koanf:"baseurl"` Secret Secret `json:"secret" koanf:"secret"` CallbackTemplate *template.Template `json:"template,omitempty" koanf:"template"` Check HTTPCheck `json:"check" koanf:"check"` EnableProxyHeaders bool `json:"enable-proxy-headers" koanf:"enable-proxy-headers"` AssetPath string `json:"assets-path" koanf:"assets-path"` }
func (HTTP) MarshalJSON ¶ added in v1.22.6
type HTTPCheck ¶ added in v1.7.0
type HTTPCheck struct {
IPAddr bool `json:"ipaddr" koanf:"ipaddr"`
}
type OAuth2 ¶ added in v1.0.0
type OAuth2 struct { AuthStyle OAuth2AuthStyle `json:"auth-style" koanf:"auth-style"` AuthorizeParams string `json:"authorize-params" koanf:"authorize-params"` Client OAuth2Client `json:"client" koanf:"client"` Endpoints OAuth2Endpoints `json:"endpoint" koanf:"endpoint"` Issuer *URL `json:"issuer" koanf:"issuer"` Nonce bool `json:"nonce" koanf:"nonce"` PKCE bool `json:"pkce" koanf:"pkce"` Provider string `json:"provider" koanf:"provider"` Refresh OAuth2Refresh `json:"refresh" koanf:"refresh"` Scopes StringSlice `json:"scopes" koanf:"scopes"` Validate OAuth2Validate `json:"validate" koanf:"validate"` }
type OAuth2AuthStyle ¶ added in v1.17.0
func (OAuth2AuthStyle) AuthStyle ¶ added in v1.17.0
func (s OAuth2AuthStyle) AuthStyle() oauth2.AuthStyle
func (OAuth2AuthStyle) MarshalText ¶ added in v1.17.0
func (s OAuth2AuthStyle) MarshalText() ([]byte, error)
func (OAuth2AuthStyle) String ¶ added in v1.17.0
func (s OAuth2AuthStyle) String() string
func (*OAuth2AuthStyle) UnmarshalText ¶ added in v1.17.0
func (s *OAuth2AuthStyle) UnmarshalText(text []byte) error
type OAuth2Client ¶ added in v1.0.0
type OAuth2Endpoints ¶ added in v1.2.0
type OAuth2Refresh ¶ added in v1.13.0
type OAuth2Refresh struct { Enabled bool `json:"enabled" koanf:"enabled"` Expires time.Duration `json:"expires" koanf:"expires"` Secret Secret `json:"secret" koanf:"secret"` UseSessionID bool `json:"use-session-id" koanf:"use-session-id"` ValidateUser bool `json:"validate-user" koanf:"validate-user"` }
type OAuth2Validate ¶ added in v1.0.0
type OAuth2Validate struct { Acr StringSlice `json:"acr" koanf:"acr"` Groups StringSlice `json:"groups" koanf:"groups"` Roles StringSlice `json:"roles" koanf:"roles"` IPAddr bool `json:"ipaddr" koanf:"ipaddr"` Issuer bool `json:"issuer" koanf:"issuer"` CommonName string `json:"common-name" koanf:"common-name"` CommonNameCaseSensitive bool `json:"common-name-case-sensitive" koanf:"common-name-case-sensitive"` }
type OpenVPNCommonName ¶ added in v1.12.0
type OpenVPNCommonName struct { EnvironmentVariableName string `json:"environment-variable-name" koanf:"environment-variable-name"` Mode OpenVPNCommonNameMode `json:"mode" koanf:"mode"` }
type OpenVPNCommonNameMode ¶ added in v1.12.0
type OpenVPNCommonNameMode int
const ( CommonNameModePlain OpenVPNCommonNameMode = iota CommonNameModeOmit CommonNameModeOmitValue = "-" )
func (OpenVPNCommonNameMode) MarshalText ¶ added in v1.12.0
func (s OpenVPNCommonNameMode) MarshalText() ([]byte, error)
func (OpenVPNCommonNameMode) String ¶ added in v1.12.0
func (s OpenVPNCommonNameMode) String() string
func (*OpenVPNCommonNameMode) UnmarshalText ¶ added in v1.12.0
func (s *OpenVPNCommonNameMode) UnmarshalText(text []byte) error
type OpenVPNPassthrough ¶ added in v1.16.0
type OpenVpn ¶ added in v1.0.0
type OpenVpn struct { Addr *URL `json:"addr" koanf:"addr"` Password Secret `json:"password" koanf:"password"` Bypass OpenVpnBypass `json:"bypass" koanf:"bypass"` AuthTokenUser bool `json:"auth-token-user" koanf:"auth-token-user"` AuthPendingTimeout time.Duration `json:"auth-pending-timeout" koanf:"auth-pending-timeout"` CommonName OpenVPNCommonName `json:"common-name" koanf:"common-name"` Passthrough OpenVPNPassthrough `json:"pass-through" koanf:"pass-through"` }
type OpenVpnBypass ¶ added in v1.1.0
type OpenVpnBypass struct {
CommonNames StringSlice `json:"common-names" koanf:"common-names"`
}
type Secret ¶ added in v1.13.0
type Secret string
Secret represents a secret value that can be a plain string or a file path. If the value starts with "file://", it is treated as a file path, and the secret value is read from the file. The "file://" syntax supports environment variables. For example, "file://$HOME/my_secret.txt" would read the secret from the "my_secret.txt" file in the user's home directory.
func (Secret) MarshalJSON ¶ added in v1.22.6
func (Secret) MarshalText ¶ added in v1.13.0
MarshalText implements encoding.TextMarshaler interface for Secret
func (*Secret) UnmarshalText ¶ added in v1.13.0
UnmarshalText implements the encoding.TextUnmarshaler interface for Secret
type StringSlice ¶ added in v1.13.0
type StringSlice []string
func (StringSlice) MarshalText ¶ added in v1.13.0
func (stringSlice StringSlice) MarshalText() ([]byte, error)
MarshalText implements encoding.TextMarshaler interface for StringSlice
func (*StringSlice) UnmarshalText ¶ added in v1.13.0
func (stringSlice *StringSlice) UnmarshalText(text []byte) error
UnmarshalText implements the encoding.TextUnmarshaler interface for StringSlice