84 lines
2.9 KiB
Go
84 lines
2.9 KiB
Go
package schema
|
|
|
|
import (
|
|
"crypto/tls"
|
|
"net/url"
|
|
"time"
|
|
)
|
|
|
|
// RedisNode Represents a Node.
|
|
type RedisNode struct {
|
|
Host string `koanf:"host"`
|
|
Port int `koanf:"port"`
|
|
}
|
|
|
|
// RedisHighAvailabilityConfiguration holds configuration variables for Redis Cluster/Sentinel.
|
|
type RedisHighAvailabilityConfiguration struct {
|
|
SentinelName string `koanf:"sentinel_name"`
|
|
SentinelUsername string `koanf:"sentinel_username"`
|
|
SentinelPassword string `koanf:"sentinel_password"`
|
|
Nodes []RedisNode `koanf:"nodes"`
|
|
RouteByLatency bool `koanf:"route_by_latency"`
|
|
RouteRandomly bool `koanf:"route_randomly"`
|
|
}
|
|
|
|
// RedisSessionConfiguration represents the configuration related to redis session store.
|
|
type RedisSessionConfiguration struct {
|
|
Host string `koanf:"host"`
|
|
Port int `koanf:"port"`
|
|
Username string `koanf:"username"`
|
|
Password string `koanf:"password"`
|
|
DatabaseIndex int `koanf:"database_index"`
|
|
MaximumActiveConnections int `koanf:"maximum_active_connections"`
|
|
MinimumIdleConnections int `koanf:"minimum_idle_connections"`
|
|
TLS *TLSConfig `koanf:"tls"`
|
|
HighAvailability *RedisHighAvailabilityConfiguration `koanf:"high_availability"`
|
|
}
|
|
|
|
// SessionConfiguration represents the configuration related to user sessions.
|
|
type SessionConfiguration struct {
|
|
Secret string `koanf:"secret"`
|
|
|
|
SessionCookieCommonConfiguration `koanf:",squash"`
|
|
|
|
Cookies []SessionCookieConfiguration `koanf:"cookies"`
|
|
|
|
Redis *RedisSessionConfiguration `koanf:"redis"`
|
|
}
|
|
|
|
type SessionCookieCommonConfiguration struct {
|
|
Name string `koanf:"name"`
|
|
Domain string `koanf:"domain"`
|
|
SameSite string `koanf:"same_site"`
|
|
Expiration time.Duration `koanf:"expiration"`
|
|
Inactivity time.Duration `koanf:"inactivity"`
|
|
RememberMe time.Duration `koanf:"remember_me"`
|
|
|
|
DisableRememberMe bool
|
|
}
|
|
|
|
// SessionCookieConfiguration represents the configuration for a cookie domain.
|
|
type SessionCookieConfiguration struct {
|
|
SessionCookieCommonConfiguration `koanf:",squash"`
|
|
|
|
AutheliaURL *url.URL `koanf:"authelia_url"`
|
|
}
|
|
|
|
// DefaultSessionConfiguration is the default session configuration.
|
|
var DefaultSessionConfiguration = SessionConfiguration{
|
|
SessionCookieCommonConfiguration: SessionCookieCommonConfiguration{
|
|
Name: "authelia_session",
|
|
Expiration: time.Hour,
|
|
Inactivity: time.Minute * 5,
|
|
RememberMe: time.Hour * 24 * 30,
|
|
SameSite: "lax",
|
|
},
|
|
}
|
|
|
|
// DefaultRedisConfiguration is the default redis configuration.
|
|
var DefaultRedisConfiguration = RedisSessionConfiguration{
|
|
TLS: &TLSConfig{
|
|
MinimumVersion: TLSVersion{Value: tls.VersionTLS12},
|
|
},
|
|
}
|