configuration

package
v1.0.0-beta2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 6, 2026 License: Apache-2.0 Imports: 31 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// MaximumAuditlogRecordingChunkSizeBytes caps the configured native group
	// target below its 2 MiB decoded limit without importing pkg/recording.
	MaximumAuditlogRecordingChunkSizeBytes uint64 = 1_048_577

	AuditlogRecordingCompressionLevelDefault AuditlogRecordingCompressionLevel = "default"
)
View Source
const (
	DefaultHostKeyLocation                  = "/etc/engity/bifroest/key"
	DefaultCertificateIdentityFileLocation  = "/etc/engity/bifroest/client-key"
	DefaultCertificateAuthorityFileLocation = "/etc/engity/bifroest/ca"
)
View Source
const MaxFlowNameBytes = 255

Variables

View Source
var (
	DefaultAlternativesDownloadUrl = template.MustNewUrl("https://github.com/engity-com/bifroest/releases/download/v{{.version}}/bifroest-{{.os}}-{{.arch}}-{{.edition}}{{.packageExt}}")
	DefaultAlternativesLocation    = template.MustNewString(defaultAlternativesLocation)
)
View Source
var (
	DefaultAuditlogRecordingEnabled           = false
	DefaultAuditlogRecordingDirectory         = defaultAuditlogRecordingDirectory
	DefaultAuditlogRecordingCompression       = AuditlogRecordingCompression{Level: AuditlogRecordingCompressionLevelDefault}
	DefaultAuditlogRecordingChunkSizeBytes    = uint64(256 << 10)
	DefaultAuditlogRecordingFlushInterval     = common.DurationOf(2 * time.Second)
	DefaultAuditlogRecordingFlushSizeBytes    = uint64(1 << 20)
	DefaultAuditlogRecordingMaximumSpoolBytes = uint64(100 << 30)
	DefaultAuditlogRecordingRetainFor         = common.DurationOf(720 * time.Hour)
	DefaultAuditlogRecordingNotice            = template.MustNewString("")
)
View Source
var (
	DefaultAuditlogTargetS3Region          = template.MustNewString("{{ env `AWS_REGION` | default (env `AWS_DEFAULT_REGION`) }}")
	DefaultAuditlogTargetS3AccessKeyId     = template.MustNewString("{{ env `AWS_ACCESS_KEY_ID` | default (env `AWS_ACCESS_KEY`) }}")
	DefaultAuditlogTargetS3SecretAccessKey = template.MustNewString("{{ env `AWS_SECRET_ACCESS_KEY` | default (env `AWS_SECRET_KEY`) }}")
	DefaultAuditlogTargetS3SessionToken    = template.MustNewString("{{ env `AWS_SESSION_TOKEN` }}")
)
View Source
var (
	DefaultAuditlogTargetWebdavUsername = template.MustNewString("")
	DefaultAuditlogTargetWebdavPassword = template.MustNewString("")
)
View Source
var (
	DefaultAuditlogEnabled                 = false
	DefaultAuditlogFailurePolicy           = AuditlogFailurePolicyStrict
	DefaultAuditlogIdentityFile            = defaultAuditlogIdentityFile
	DefaultAuditlogJournalDirectory        = defaultAuditlogJournalDirectory
	DefaultAuditlogJournalMinimumFreeBytes = uint64(256 << 20)
)
View Source
var (
	DefaultAuthorizationLocalPamService     = defaultAuthorizationLocalPamService
	DefaultAuthorizationLocalAuthorizedKeys = template.MustNewStrings("{{.user.homeDir}}/.ssh/authorized_keys")
)
View Source
var (
	DefaultAuthorizationOidcDefaultIssuer                       = template.MustNewUrl("")
	DefaultAuthorizationOidcDefaultClientId                     = template.MustNewString("")
	DefaultAuthorizationOidcDefaultClientSecret                 = template.MustNewString("")
	DefaultAuthorizationOidcScopes                              = template.MustNewStrings(oidc.ScopeOpenID, "profile", "email")
	DefaultAuthorizationOidcRetrieveIdToken                     = true
	DefaultAuthorizationOidcRetrieveUserInfo                    = false
	DefaultAuthorizationOidcForceDisposeSessionOn               = "lostAccess"
	DefaultAuthorizationOidcRefreshTokenMode                    = "proactive"
	DefaultAuthorizationOidcRefreshTokenAtLifetimePercent uint8 = 70
	DefaultAuthorizationOidcRefreshTokenFallbackEvery           = common.DurationOf(15 * time.Minute)
	DefaultAuthorizationOidcRefreshTokenMaxUnverifiedFor        = common.DurationOf(30 * time.Minute)
)
View Source
var (
	DefaultEnvironmentDockerLoginAllowed = template.BoolOf(true)

	DefaultEnvironmentDockerHost       = template.MustNewString("{{ env `DOCKER_HOST` }}")
	DefaultEnvironmentDockerApiVersion = template.MustNewString("{{ env `DOCKER_API_VERSION` }}")
	DefaultEnvironmentDockerCertPath   = template.MustNewString("{{ env `DOCKER_CERT_PATH` }}")
	DefaultEnvironmentDockerTlsVerify  = template.MustNewBool("{{ env `DOCKER_TLS_VERIFY` | ne `` }}")

	DefaultEnvironmentDockerImage                = template.MustNewString("alpine")
	DefaultEnvironmentDockerImagePullPolicy      = PullPolicyIfAbsent
	DefaultEnvironmentDockerImagePullCredentials = template.MustNewString("")
	DefaultEnvironmentDockerNetworks             = template.MustNewStrings(network.NetworkDefault)
	DefaultEnvironmentDockerVolumes              = template.MustNewStrings()
	DefaultEnvironmentDockerMounts               = template.MustNewStrings()
	DefaultEnvironmentDockerCapabilities         = template.MustNewStrings()
	DefaultEnvironmentDockerPrivileged           = template.BoolOf(false)
	DefaultEnvironmentDockerDnsServers           = template.MustNewStrings()
	DefaultEnvironmentDockerDnsSearch            = template.MustNewStrings()
	DefaultEnvironmentDockerShellCommand         = template.MustNewStrings()
	DefaultEnvironmentDockerExecCommand          = template.MustNewStrings()
	DefaultEnvironmentDockerSftpCommand          = template.MustNewStrings()
	DefaultEnvironmentDockerDirectory            = template.MustNewString("")
	DefaultEnvironmentDockerUser                 = template.MustNewString("")

	DefaultEnvironmentDockerBanner                = template.MustNewString("")
	DefaultEnvironmentDockerPortForwardingAllowed = template.BoolOf(true)
	DefaultEnvironmentDockerImpPublishHost        = net.MustNewHost("")

	DefaultEnvironmentDockerCleanOrphan = template.BoolOf(true)
)
View Source
var (
	DefaultEnvironmentDummyExitCode = template.Int64Of(0)
	DefaultEnvironmentDummyBanner   = template.MustNewString("")
)
View Source
var (
	DefaultEnvironmentKubernetesLoginAllowed = template.BoolOf(true)

	DefaultEnvironmentKubernetesConfig  = template.MustNewTextMarshaller[kubernetes.Kubeconfig, *kubernetes.Kubeconfig]("")
	DefaultEnvironmentKubernetesContext = template.MustNewString("")

	DefaultEnvironmentKubernetesName                 = template.MustNewString("bifroest-{{.session.id}}")
	DefaultEnvironmentKubernetesNamespace            = template.MustNewString("")
	DefaultEnvironmentKubernetesOs                   = sys.OsLinux
	DefaultEnvironmentKubernetesArch                 = sys.ArchAmd64
	DefaultEnvironmentKubernetesServiceAccountName   = template.MustNewString("")
	DefaultEnvironmentKubernetesImage                = template.MustNewString("alpine")
	DefaultEnvironmentKubernetesImagePullPolicy      = PullPolicyIfAbsent
	DefaultEnvironmentKubernetesImagePullSecretName  = template.MustNewString("")
	DefaultEnvironmentKubernetesImagePullCredentials = template.MustNewString("")
	DefaultEnvironmentKubernetesReadyTimeout         = template.DurationOf(5 * time.Minute)
	DefaultEnvironmentKubernetesRemoveTimeout        = 1 * time.Minute

	DefaultEnvironmentKubernetesCapabilities = template.MustNewStrings()
	DefaultEnvironmentKubernetesPrivileged   = template.BoolOf(false)
	DefaultEnvironmentKubernetesDnsServers   = template.MustNewStrings()
	DefaultEnvironmentKubernetesDnsSearch    = template.MustNewStrings()
	DefaultEnvironmentKubernetesShellCommand = template.MustNewStrings()
	DefaultEnvironmentKubernetesExecCommand  = template.MustNewStrings()
	DefaultEnvironmentKubernetesSftpCommand  = template.MustNewStrings()
	DefaultEnvironmentKubernetesDirectory    = template.MustNewString("")
	DefaultEnvironmentKubernetesUser         = template.MustNewString("")
	DefaultEnvironmentKubernetesGroup        = template.MustNewString("")

	DefaultEnvironmentKubernetesBanner                = template.MustNewString("")
	DefaultEnvironmentKubernetesPortForwardingAllowed = template.BoolOf(true)

	DefaultEnvironmentKubernetesCleanOrphan = template.BoolOf(true)
)
View Source
var (
	DefaultEnvironmentLocalLoginAllowed               = template.BoolOf(true)
	DefaultEnvironmentLocalBanner                     = template.MustNewString("")
	DefaultEnvironmentLocalPortForwardingAllowed      = template.BoolOf(true)
	DefaultEnvironmentLocalManagedGroup               = "bifroest-managed"
	DefaultEnvironmentLocalManageSystemUsers          = template.BoolOf(false)
	DefaultEnvironmentLocalCreateIfAbsent             = template.BoolOf(false)
	DefaultEnvironmentLocalUpdateIfDifferent          = template.BoolOf(false)
	DefaultEnvironmentLocalDeleteOnDispose            = template.BoolOf(false)
	DefaultEnvironmentLocalDeleteHomeTogetherWithUser = template.BoolOf(true)
	DefaultEnvironmentLocalKillProcessesOnDispose     = template.MustNewBool("{{ .user.managed }}")
)
View Source
var (
	DefaultEnvironmentLocalShellCommand      = template.Strings{}
	DefaultEnvironmentLocalExecCommandPrefix = template.Strings{}
	DefaultEnvironmentLocalDirectory         = template.String{}
)
View Source
var (
	DefaultEnvironmentSshCertificateValidity       = template.DurationOf(15 * time.Minute)
	DefaultEnvironmentSshCertificateValidAfterSkew = template.DurationOf(30 * time.Second)
)
View Source
var (
	DefaultEnvironmentSshConnectTimeout               = template.DurationOf(10 * time.Second)
	DefaultEnvironmentSshOs                           = sys.OsLinux
	DefaultEnvironmentSshLoginAllowed                 = template.BoolOf(true)
	DefaultEnvironmentSshBanner                       = template.MustNewString("")
	DefaultEnvironmentSshPortForwardingAllowed        = template.BoolOf(true)
	DefaultEnvironmentSshReversePortForwardingAllowed = template.BoolOf(false)
	DefaultEnvironmentSshAllowedSubsystems            = common.MustNewRegexp("^sftp$")
)
View Source
var (
	DefaultHouseKeepingEvery        = common.DurationOf(time.Minute * 10)
	DefaultHouseKeepingInitialDelay = common.DurationOf(0)
	DefaultHouseKeepingAutoRepair   = true

	// DefaultHouseKeepingKeepExpiredFor is the default setting for HouseKeeping.KeepExpiredFor.
	DefaultHouseKeepingKeepExpiredFor = common.DurationOf(14 * 24 * time.Hour)
)
View Source
var (
	DefaultHostKeyLocations         = template.MustNewStrings(DefaultHostKeyLocation)
	DefaultCertificateIdentityFile  = template.MustNewString(DefaultCertificateIdentityFileLocation)
	DefaultCertificateAuthorityFile = template.MustNewString(DefaultCertificateAuthorityFileLocation)
	DefaultKeyExchanges             = ssh.DefaultKeyExchanges
	DefaultRememberMeNotification   = template.MustNewString("\nIf you return until {{.session.validUntil | format `dateTimeT`}} with the same public key ({{.key | fingerprint}}), you can seamlessly login again.\n\n")
)
View Source
var (
	DefaultMessagesAuthentications = ssh.DefaultMessageAuthentications
	DefaultMessagesCiphers         = ssh.DefaultCiphers
)
View Source
var (
	DefaultPasswordAllowed            = template.BoolOf(true)
	DefaultPasswordInteractiveAllowed = template.BoolOf(true)
	DefaultPasswordEmptyAllowed       = template.BoolOf(false)
)
View Source
var (
	DefaultPreparationMessageId     = common.MustNewRegexp(`.*`)
	DefaultPreparationMessageFlow   = common.MustNewRegexp(`.*`)
	DefaultPreparationMessageStart  = template.MustNewString("{{.title}}...")
	DefaultPreparationMessageUpdate = template.MustNewString("\r{{.title}}... {{.percentage | printf `%.0f%%`}}")
	DefaultPreparationMessageEnd    = template.MustNewString("\r{{.title}}... DONE!\n")
	DefaultPreparationMessageError  = template.MustNewString("\r{{.title}}... FAILED! Contact server operator for more information. Disconnecting now...\n")
)
View Source
var (
	DefaultRequirementIncludedRequestingName = common.MustNewRegexp("")
	DefaultRequirementExcludedRequestingName = common.MustNewRegexp("")
)
View Source
var (
	// DefaultSessionFsStorage is the default setting for SessionFs.Storage.
	DefaultSessionFsStorage = defaultSessionFsStorage
	// DefaultSessionFsFileMode is the default setting for SessionFs.FileMode.
	DefaultSessionFsFileMode = sys.FileMode(0600)
)
View Source
var (
	// DefaultSessionIdleTimeout is the default setting for Session.IdleTimeout.
	DefaultSessionIdleTimeout = common.DurationOf(30 * time.Minute)

	// DefaultSessionMaxTimeout is the default setting for Session.MaxTimeout.
	DefaultSessionMaxTimeout = common.DurationOf(0)

	// DefaultSessionMaxConnections is the default setting for Session.MaxConnections.
	DefaultSessionMaxConnections uint16 = 10
)
View Source
var (
	// DefaultSshAddresses is the default setting for Ssh.Addresses.
	DefaultSshAddresses = []net.Address{net.MustNewAddress(":22")}

	// DefaultSshIdleTimeout is the default setting for Ssh.IdleTimeout.
	DefaultSshIdleTimeout = common.DurationOf(10 * time.Minute)

	// DefaultSshMaxTimeout is the default setting for Ssh.MaxTimeout.
	DefaultSshMaxTimeout = common.DurationOf(0)

	// DefaultSshGracefulShutdownTimeout is the default setting for Ssh.GracefulShutdownTimeout.
	DefaultSshGracefulShutdownTimeout = common.DurationOf(30 * time.Second)

	// DefaultSshHandshakeTimeout is the default setting for Ssh.HandshakeTimeout.
	DefaultSshHandshakeTimeout = common.DurationOf(2 * time.Minute)

	// DefaultSshSessionRequestTimeout is the default setting for Ssh.SessionRequestTimeout.
	DefaultSshSessionRequestTimeout = common.DurationOf(30 * time.Second)

	// DefaultSshMaxAuthTries is the default setting for Ssh.MaxAuthTries.
	DefaultSshMaxAuthTries = uint8(6)

	// DefaultSshMaxConnections is the default setting for Ssh.MaxConnections.
	DefaultSshMaxConnections = uint32(255)

	// DefaultSshMaxStartupsStart is the default setting for Ssh.MaxStartupsStart.
	DefaultSshMaxStartupsStart = uint16(10)

	// DefaultSshMaxStartupsRate is the default setting for Ssh.MaxStartupsRate.
	DefaultSshMaxStartupsRate = uint8(30)

	// DefaultSshMaxStartupsFull is the default setting for Ssh.MaxStartupsFull.
	DefaultSshMaxStartupsFull = uint16(100)

	// DefaultSshMaxSessionsPerConnection is the default setting for Ssh.MaxSessionsPerConnection.
	DefaultSshMaxSessionsPerConnection = uint16(10)

	// DefaultSshMaxChannelsPerConnection is the default setting for Ssh.MaxChannelsPerConnection.
	DefaultSshMaxChannelsPerConnection = uint16(64)

	// DefaultSshMaxReverseForwardsPerConnection is the default setting for Ssh.MaxReverseForwardsPerConnection.
	DefaultSshMaxReverseForwardsPerConnection = uint16(16)

	// DefaultSshMaxChannels is the default setting for Ssh.MaxChannels.
	DefaultSshMaxChannels = uint16(64)

	// DefaultSshMaxReverseForwards is the default setting for Ssh.MaxReverseForwards.
	DefaultSshMaxReverseForwards = uint16(256)

	// DefaultSshUnauthenticatedAuditInterval is the refill and aggregation interval for unauthenticated audit events.
	DefaultSshUnauthenticatedAuditInterval = common.DurationOf(time.Minute)

	// DefaultSshUnauthenticatedAuditPerSourceLimit is the token bucket size and refill per source and interval.
	DefaultSshUnauthenticatedAuditPerSourceLimit = uint16(6)

	// DefaultSshUnauthenticatedAuditGlobalLimit is the service-wide token bucket size and refill per interval.
	DefaultSshUnauthenticatedAuditGlobalLimit = uint16(24)

	DefaultProxyProtocol = false

	// DefaultSshBanner is the default setting for Ssh.Banner.
	DefaultSshBanner = template.MustNewString("{{`/etc/ssh/sshd-banner` | file `optional` | default `Transcend with Engity's Bifröst\n\n` }}")
)
View Source
var DefaultAuditlogTargetPublishAttemptTimeout = template.DurationOf(2 * time.Minute)
View Source
var DefaultAuditlogTargetSftpConnectTimeout = template.DurationOf(10 * time.Second)
View Source
var (
	DefaultAuthorizationBifroestMaxCertificateValidity = common.DurationOf(15 * time.Minute)
)
View Source
var (
	DefaultAuthorizationHtpasswdFile = defaultAuthorizationHtpasswdFile
)
View Source
var (
	DefaultGroupRequirementName = template.MustNewString("managed")
)
View Source
var (
	DefaultStartMessage = template.MustNewString("")
)

Functions

func GetSupportedAuditlogTargetFeatureFlags

func GetSupportedAuditlogTargetFeatureFlags() []string

func GetSupportedAuthorizationFeatureFlags added in v0.2.0

func GetSupportedAuthorizationFeatureFlags() []string

func GetSupportedEnvironmentFeatureFlags added in v0.2.0

func GetSupportedEnvironmentFeatureFlags() []string

func GetSupportedSessionFeatureFlags added in v0.2.0

func GetSupportedSessionFeatureFlags() []string

func ValidateAuditlogEncryptionPublicKeys

func ValidateAuditlogEncryptionPublicKeys(keys []ssh.PublicKey) error

ValidateAuditlogEncryptionPublicKeys enforces the audit age recipient key policy.

Types

type Alternatives added in v0.4.0

type Alternatives struct {
	DownloadUrl template.Url    `yaml:"downloadUrl,omitempty"`
	Location    template.String `yaml:"location,omitempty"`
}

func (Alternatives) IsEqualTo added in v0.4.0

func (this Alternatives) IsEqualTo(other any) bool

func (*Alternatives) SetDefaults added in v0.4.0

func (this *Alternatives) SetDefaults() error

func (*Alternatives) Trim added in v0.4.0

func (this *Alternatives) Trim() error

func (*Alternatives) UnmarshalYAML added in v0.4.0

func (this *Alternatives) UnmarshalYAML(node *yaml.Node) error

func (*Alternatives) Validate added in v0.4.0

func (this *Alternatives) Validate() error

type Auditlog

type Auditlog struct {
	Name                    AuditlogName          `yaml:"name"`
	Enabled                 bool                  `yaml:"enabled,omitempty"`
	FailurePolicy           AuditlogFailurePolicy `yaml:"failurePolicy,omitempty"`
	IdentityFile            string                `yaml:"identityFile,omitempty"`
	EncryptionPublicKey     crypto.PublicKeys     `yaml:"encryptionPublicKey,omitempty"`
	EncryptionPublicKeyFile crypto.PublicKeysFile `yaml:"encryptionPublicKeyFile,omitempty"`
	Directory               string                `yaml:"directory,omitempty"`
	MinimumFreeBytes        uint64                `yaml:"minimumFreeBytes,omitempty"`
	Recording               AuditlogRecording     `yaml:"recording,omitempty"`
	Targets                 AuditlogTargets       `yaml:"targets,omitempty"`
}

Auditlog defines the authoritative local audit journal and optional remote targets that replicate its immutable sealed segments.

func (Auditlog) IsEqualTo

func (this Auditlog) IsEqualTo(other any) bool

func (*Auditlog) SetDefaults

func (this *Auditlog) SetDefaults() error

func (*Auditlog) Trim

func (this *Auditlog) Trim() error

func (*Auditlog) UnmarshalYAML

func (this *Auditlog) UnmarshalYAML(node *yaml.Node) error

func (*Auditlog) Validate

func (this *Auditlog) Validate() error

type AuditlogFailurePolicy

type AuditlogFailurePolicy uint8
const (
	AuditlogFailurePolicyStrict AuditlogFailurePolicy = iota
	AuditlogFailurePolicyBestEffort
)

func (AuditlogFailurePolicy) Clone

func (AuditlogFailurePolicy) IsEqualTo

func (this AuditlogFailurePolicy) IsEqualTo(other any) bool

func (AuditlogFailurePolicy) IsZero

func (this AuditlogFailurePolicy) IsZero() bool

func (AuditlogFailurePolicy) MarshalText

func (this AuditlogFailurePolicy) MarshalText() ([]byte, error)

func (*AuditlogFailurePolicy) Set

func (this *AuditlogFailurePolicy) Set(text string) error

func (AuditlogFailurePolicy) String

func (this AuditlogFailurePolicy) String() string

func (*AuditlogFailurePolicy) UnmarshalText

func (this *AuditlogFailurePolicy) UnmarshalText(text []byte) error

func (AuditlogFailurePolicy) Validate

func (this AuditlogFailurePolicy) Validate() error

type AuditlogName

type AuditlogName string
const (
	DefaultAuditlogName AuditlogName = "default"
)

func (AuditlogName) Clone

func (this AuditlogName) Clone() AuditlogName

func (AuditlogName) IsEqualTo

func (this AuditlogName) IsEqualTo(other any) bool

func (AuditlogName) IsZero

func (this AuditlogName) IsZero() bool

func (AuditlogName) MarshalText

func (this AuditlogName) MarshalText() ([]byte, error)

func (*AuditlogName) Set

func (this *AuditlogName) Set(text string) error

func (AuditlogName) String

func (this AuditlogName) String() string

func (*AuditlogName) UnmarshalText

func (this *AuditlogName) UnmarshalText(text []byte) error

func (AuditlogName) Validate

func (this AuditlogName) Validate() error

type AuditlogRecording

type AuditlogRecording struct {
	Enabled           bool                         `yaml:"enabled,omitempty"`
	Directory         string                       `yaml:"directory,omitempty"`
	Compression       AuditlogRecordingCompression `yaml:"compression,omitempty"`
	ChunkSizeBytes    uint64                       `yaml:"chunkSizeBytes,omitempty"`
	FlushInterval     common.Duration              `yaml:"flushInterval,omitempty"`
	FlushSizeBytes    uint64                       `yaml:"flushSizeBytes,omitempty"`
	MaximumSpoolBytes uint64                       `yaml:"maximumSpoolBytes,omitempty"`
	RetainFor         common.Duration              `yaml:"retainFor"`
	Notice            template.String              `yaml:"notice,omitempty"`
	Targets           AuditlogRecordingTargets     `yaml:"targets,omitempty"`
}

AuditlogRecording defines local session recording and delivery policy. The signing identity and optional encryption recipient are inherited from the parent Auditlog.

func (AuditlogRecording) IsEqualTo

func (this AuditlogRecording) IsEqualTo(other any) bool

func (AuditlogRecording) IsZero

func (this AuditlogRecording) IsZero() bool

func (AuditlogRecording) MarshalYAML

func (this AuditlogRecording) MarshalYAML() (any, error)

func (*AuditlogRecording) SetDefaults

func (this *AuditlogRecording) SetDefaults() error

func (*AuditlogRecording) Trim

func (this *AuditlogRecording) Trim() error

func (*AuditlogRecording) UnmarshalYAML

func (this *AuditlogRecording) UnmarshalYAML(node *yaml.Node) error

func (*AuditlogRecording) Validate

func (this *AuditlogRecording) Validate() error

type AuditlogRecordingCompression

type AuditlogRecordingCompression struct {
	Level AuditlogRecordingCompressionLevel `yaml:"level,omitempty"`
}

func (AuditlogRecordingCompression) IsEqualTo

func (this AuditlogRecordingCompression) IsEqualTo(other any) bool

func (*AuditlogRecordingCompression) SetDefaults

func (this *AuditlogRecordingCompression) SetDefaults() error

func (*AuditlogRecordingCompression) Trim

func (this *AuditlogRecordingCompression) Trim() error

func (*AuditlogRecordingCompression) UnmarshalYAML

func (this *AuditlogRecordingCompression) UnmarshalYAML(node *yaml.Node) error

func (*AuditlogRecordingCompression) Validate

func (this *AuditlogRecordingCompression) Validate() error

type AuditlogRecordingCompressionLevel

type AuditlogRecordingCompressionLevel string

func (AuditlogRecordingCompressionLevel) Clone

func (AuditlogRecordingCompressionLevel) IsEqualTo

func (this AuditlogRecordingCompressionLevel) IsEqualTo(other any) bool

func (AuditlogRecordingCompressionLevel) IsZero

func (AuditlogRecordingCompressionLevel) MarshalText

func (this AuditlogRecordingCompressionLevel) MarshalText() ([]byte, error)

func (*AuditlogRecordingCompressionLevel) Set

func (AuditlogRecordingCompressionLevel) String

func (*AuditlogRecordingCompressionLevel) UnmarshalText

func (this *AuditlogRecordingCompressionLevel) UnmarshalText(text []byte) error

func (AuditlogRecordingCompressionLevel) Validate

func (this AuditlogRecordingCompressionLevel) Validate() error

type AuditlogRecordingTargets

type AuditlogRecordingTargets struct {
	Mode    AuditlogRecordingTargetsMode `yaml:"-"`
	Targets AuditlogTargets              `yaml:"-"`
}

AuditlogRecordingTargets selects inherited or custom required delivery targets, or disables remote Recording delivery.

func (AuditlogRecordingTargets) Configured

func (this AuditlogRecordingTargets) Configured() AuditlogTargets

func (AuditlogRecordingTargets) IsDisabled

func (this AuditlogRecordingTargets) IsDisabled() bool

func (AuditlogRecordingTargets) IsEqualTo

func (this AuditlogRecordingTargets) IsEqualTo(other any) bool

func (AuditlogRecordingTargets) IsInherited

func (this AuditlogRecordingTargets) IsInherited() bool

func (AuditlogRecordingTargets) MarshalYAML

func (this AuditlogRecordingTargets) MarshalYAML() (any, error)

func (*AuditlogRecordingTargets) SetDefaults

func (this *AuditlogRecordingTargets) SetDefaults() error

func (*AuditlogRecordingTargets) Trim

func (this *AuditlogRecordingTargets) Trim() error

func (*AuditlogRecordingTargets) UnmarshalYAML

func (this *AuditlogRecordingTargets) UnmarshalYAML(node *yaml.Node) error

func (AuditlogRecordingTargets) Validate

func (this AuditlogRecordingTargets) Validate() error

type AuditlogRecordingTargetsMode

type AuditlogRecordingTargetsMode uint8
const (
	AuditlogRecordingTargetsModeInherit AuditlogRecordingTargetsMode = iota
	AuditlogRecordingTargetsModeDisabled
	AuditlogRecordingTargetsModeCustom
)

type AuditlogTarget

type AuditlogTarget struct {
	Name AuditlogTargetName `yaml:"name"`
	V    AuditlogTargetV    `yaml:"-"`
}

func (AuditlogTarget) IsEqualTo

func (this AuditlogTarget) IsEqualTo(other any) bool

func (AuditlogTarget) MarshalYAML

func (this AuditlogTarget) MarshalYAML() (any, error)

func (*AuditlogTarget) SetDefaults

func (this *AuditlogTarget) SetDefaults() error

func (*AuditlogTarget) Trim

func (this *AuditlogTarget) Trim() error

func (*AuditlogTarget) UnmarshalYAML

func (this *AuditlogTarget) UnmarshalYAML(node *yaml.Node) error

func (*AuditlogTarget) Validate

func (this *AuditlogTarget) Validate() error

type AuditlogTargetCodecFactory

type AuditlogTargetCodecFactory func() AuditlogTargetV

func RegisterAuditlogTargetCodec

func RegisterAuditlogTargetCodec(factory AuditlogTargetCodecFactory) AuditlogTargetCodecFactory

RegisterAuditlogTargetCodec is the low-level entry point for configuration codecs without runtime delivery support. Custom remote targets should normally use audit.RegisterRemoteTarget, which registers both configuration and runtime handling. Registrations happen during package initialization; type aliases are case-insensitive and must be unique.

type AuditlogTargetName

type AuditlogTargetName string

AuditlogTargetName identifies one remote target within an auditlog. Its text form is safe to use as a path component for future delivery state.

func (AuditlogTargetName) Clone

func (AuditlogTargetName) IsEqualTo

func (this AuditlogTargetName) IsEqualTo(other any) bool

func (AuditlogTargetName) IsZero

func (this AuditlogTargetName) IsZero() bool

func (AuditlogTargetName) MarshalText

func (this AuditlogTargetName) MarshalText() ([]byte, error)

func (*AuditlogTargetName) Set

func (this *AuditlogTargetName) Set(text string) error

func (AuditlogTargetName) String

func (this AuditlogTargetName) String() string

func (*AuditlogTargetName) UnmarshalText

func (this *AuditlogTargetName) UnmarshalText(text []byte) error

func (AuditlogTargetName) Validate

func (this AuditlogTargetName) Validate() error

type AuditlogTargetS3

type AuditlogTargetS3 struct {
	Bucket                string            `yaml:"bucket"`
	Region                template.String   `yaml:"region,omitempty"`
	Prefix                string            `yaml:"prefix,omitempty"`
	Endpoint              string            `yaml:"endpoint,omitempty"`
	PathStyle             bool              `yaml:"pathStyle,omitempty"`
	ExpectedBucketOwner   string            `yaml:"expectedBucketOwner,omitempty"`
	DestinationIdentity   string            `yaml:"destinationIdentity,omitempty"`
	AccessKeyId           template.String   `yaml:"accessKeyId,omitempty"`
	SecretAccessKey       template.String   `yaml:"secretAccessKey,omitempty"`
	SessionToken          template.String   `yaml:"sessionToken,omitempty"`
	PublishAttemptTimeout template.Duration `yaml:"publishAttemptTimeout,omitempty"`
	// contains filtered or unexported fields
}

func (AuditlogTargetS3) FeatureFlags

func (this AuditlogTargetS3) FeatureFlags() []string

func (AuditlogTargetS3) IsEqualTo

func (this AuditlogTargetS3) IsEqualTo(other any) bool

func (AuditlogTargetS3) MarshalYAML

func (this AuditlogTargetS3) MarshalYAML() (any, error)

func (AuditlogTargetS3) Render

func (this AuditlogTargetS3) Render(data any) (result AuditlogTargetS3Values, err error)

func (*AuditlogTargetS3) SetDefaults

func (this *AuditlogTargetS3) SetDefaults() error

func (*AuditlogTargetS3) Trim

func (this *AuditlogTargetS3) Trim() error

func (AuditlogTargetS3) Types

func (this AuditlogTargetS3) Types() []string

func (*AuditlogTargetS3) UnmarshalYAML

func (this *AuditlogTargetS3) UnmarshalYAML(node *yaml.Node) error

func (*AuditlogTargetS3) Validate

func (this *AuditlogTargetS3) Validate() error

type AuditlogTargetS3Values

type AuditlogTargetS3Values struct {
	Region                string
	AccessKeyId           string
	SecretAccessKey       string
	SessionToken          string
	PublishAttemptTimeout time.Duration
}

type AuditlogTargetSftp

type AuditlogTargetSftp struct {
	Address               string                `yaml:"address"`
	User                  template.String       `yaml:"user"`
	Directory             string                `yaml:"directory"`
	KnownHosts            crypto.KnownHosts     `yaml:"knownHosts,omitempty"`
	KnownHostsFile        crypto.KnownHostsFile `yaml:"knownHostsFile,omitempty"`
	AcceptAllHostKeys     bool                  `yaml:"acceptAllHostKeys,omitempty"`
	IdentityFiles         []string              `yaml:"identityFiles,omitempty"`
	Password              template.String       `yaml:"password,omitempty"`
	ConnectTimeout        template.Duration     `yaml:"connectTimeout,omitempty"`
	PublishAttemptTimeout template.Duration     `yaml:"publishAttemptTimeout,omitempty"`
}

func (AuditlogTargetSftp) FeatureFlags

func (this AuditlogTargetSftp) FeatureFlags() []string

func (AuditlogTargetSftp) IsEqualTo

func (this AuditlogTargetSftp) IsEqualTo(other any) bool

func (AuditlogTargetSftp) Render

func (this AuditlogTargetSftp) Render(data any) (result AuditlogTargetSftpValues, err error)

func (*AuditlogTargetSftp) SetDefaults

func (this *AuditlogTargetSftp) SetDefaults() error

func (*AuditlogTargetSftp) Trim

func (this *AuditlogTargetSftp) Trim() error

func (AuditlogTargetSftp) Types

func (this AuditlogTargetSftp) Types() []string

func (*AuditlogTargetSftp) UnmarshalYAML

func (this *AuditlogTargetSftp) UnmarshalYAML(node *yaml.Node) error

func (*AuditlogTargetSftp) Validate

func (this *AuditlogTargetSftp) Validate() error

type AuditlogTargetSftpValues

type AuditlogTargetSftpValues struct {
	User                  string
	Password              string
	ConnectTimeout        time.Duration
	PublishAttemptTimeout time.Duration
}

type AuditlogTargetV

type AuditlogTargetV interface {
	UnmarshalYAML(*yaml.Node) error
	Types() []string
	FeatureFlags() []string
	// contains filtered or unexported methods
}

type AuditlogTargetWebdav

type AuditlogTargetWebdav struct {
	Endpoint              string            `yaml:"endpoint"`
	Username              template.String   `yaml:"username,omitempty"`
	Password              template.String   `yaml:"password,omitempty"`
	PublishAttemptTimeout template.Duration `yaml:"publishAttemptTimeout,omitempty"`
}

func (AuditlogTargetWebdav) FeatureFlags

func (this AuditlogTargetWebdav) FeatureFlags() []string

func (AuditlogTargetWebdav) IsEqualTo

func (this AuditlogTargetWebdav) IsEqualTo(other any) bool

func (AuditlogTargetWebdav) Render

func (this AuditlogTargetWebdav) Render(data any) (result AuditlogTargetWebdavValues, err error)

func (*AuditlogTargetWebdav) SetDefaults

func (this *AuditlogTargetWebdav) SetDefaults() error

func (*AuditlogTargetWebdav) Trim

func (this *AuditlogTargetWebdav) Trim() error

func (AuditlogTargetWebdav) Types

func (this AuditlogTargetWebdav) Types() []string

func (*AuditlogTargetWebdav) UnmarshalYAML

func (this *AuditlogTargetWebdav) UnmarshalYAML(node *yaml.Node) error

func (*AuditlogTargetWebdav) Validate

func (this *AuditlogTargetWebdav) Validate() error

type AuditlogTargetWebdavValues

type AuditlogTargetWebdavValues struct {
	Username              string
	Password              string
	PublishAttemptTimeout time.Duration
}

type AuditlogTargets

type AuditlogTargets []AuditlogTarget

func (AuditlogTargets) IsEqualTo

func (this AuditlogTargets) IsEqualTo(other any) bool

func (*AuditlogTargets) SetDefaults

func (this *AuditlogTargets) SetDefaults() error

func (*AuditlogTargets) Trim

func (this *AuditlogTargets) Trim() error

func (AuditlogTargets) Validate

func (this AuditlogTargets) Validate() error

type Auditlogs

type Auditlogs []Auditlog

func (Auditlogs) IsEqualTo

func (this Auditlogs) IsEqualTo(other any) bool

func (Auditlogs) IsZero

func (this Auditlogs) IsZero() bool

func (*Auditlogs) SetDefaults

func (this *Auditlogs) SetDefaults() error

func (*Auditlogs) Trim

func (this *Auditlogs) Trim() error

func (*Auditlogs) UnmarshalYAML

func (this *Auditlogs) UnmarshalYAML(node *yaml.Node) error

func (Auditlogs) Validate

func (this Auditlogs) Validate() error

type Authorization

type Authorization struct {
	V AuthorizationV
}

func (Authorization) IsEqualTo

func (this Authorization) IsEqualTo(other any) bool

func (*Authorization) MarshalYAML

func (this *Authorization) MarshalYAML() (any, error)

func (*Authorization) SetDefaults

func (this *Authorization) SetDefaults() error

func (*Authorization) Trim

func (this *Authorization) Trim() error

func (*Authorization) UnmarshalYAML

func (this *Authorization) UnmarshalYAML(node *yaml.Node) error

func (*Authorization) Validate

func (this *Authorization) Validate() error

type AuthorizationBifroest

type AuthorizationBifroest struct {
	UserCertificateAuthorityProperties `yaml:",inline"`
	Audiences                          BifroestAudiences `yaml:"audiences,omitempty"`
	MaxCertificateValidity             common.Duration   `yaml:"maxCertificateValidity,omitempty"`
}

func (AuthorizationBifroest) FeatureFlags

func (AuthorizationBifroest) FeatureFlags() []string

func (AuthorizationBifroest) IsEqualTo

func (this AuthorizationBifroest) IsEqualTo(other any) bool

func (*AuthorizationBifroest) SetDefaults

func (this *AuthorizationBifroest) SetDefaults() error

func (*AuthorizationBifroest) Trim

func (this *AuthorizationBifroest) Trim() error

func (AuthorizationBifroest) Types

func (AuthorizationBifroest) Types() []string

func (*AuthorizationBifroest) UnmarshalYAML

func (this *AuthorizationBifroest) UnmarshalYAML(node *yaml.Node) error

func (*AuthorizationBifroest) Validate

func (this *AuthorizationBifroest) Validate() error

type AuthorizationHtpasswd added in v0.2.0

type AuthorizationHtpasswd struct {
	File    crypto.HtpasswdFile `yaml:"file,omitempty"`
	Entries crypto.Htpasswd     `yaml:"entries,omitempty"`
}

func (AuthorizationHtpasswd) FeatureFlags added in v0.2.0

func (this AuthorizationHtpasswd) FeatureFlags() []string

func (AuthorizationHtpasswd) IsEqualTo added in v0.2.0

func (this AuthorizationHtpasswd) IsEqualTo(other any) bool

func (*AuthorizationHtpasswd) SetDefaults added in v0.2.0

func (this *AuthorizationHtpasswd) SetDefaults() error

func (*AuthorizationHtpasswd) Trim added in v0.2.0

func (this *AuthorizationHtpasswd) Trim() error

func (AuthorizationHtpasswd) Types added in v0.2.0

func (this AuthorizationHtpasswd) Types() []string

func (*AuthorizationHtpasswd) UnmarshalYAML added in v0.2.0

func (this *AuthorizationHtpasswd) UnmarshalYAML(node *yaml.Node) error

func (*AuthorizationHtpasswd) Validate added in v0.2.0

func (this *AuthorizationHtpasswd) Validate() error

type AuthorizationLocal

type AuthorizationLocal struct {
	UserCertificateAuthorityProperties `yaml:",inline"`
	AuthorizedKeys                     template.Strings   `yaml:"authorizedKeys,omitempty"`
	Password                           PasswordProperties `yaml:"password,omitempty"`
	PamService                         string             `yaml:"pamService,omitempty"`
}

func (AuthorizationLocal) FeatureFlags added in v0.2.0

func (this AuthorizationLocal) FeatureFlags() []string

func (AuthorizationLocal) IsEqualTo

func (this AuthorizationLocal) IsEqualTo(other any) bool

func (*AuthorizationLocal) SetDefaults

func (this *AuthorizationLocal) SetDefaults() error

func (*AuthorizationLocal) Trim

func (this *AuthorizationLocal) Trim() error

func (AuthorizationLocal) Types added in v0.2.0

func (this AuthorizationLocal) Types() []string

func (*AuthorizationLocal) UnmarshalYAML

func (this *AuthorizationLocal) UnmarshalYAML(node *yaml.Node) error

func (*AuthorizationLocal) Validate

func (this *AuthorizationLocal) Validate() error

type AuthorizationNone added in v0.4.0

type AuthorizationNone struct{}

func (AuthorizationNone) FeatureFlags added in v0.4.0

func (this AuthorizationNone) FeatureFlags() []string

func (AuthorizationNone) IsEqualTo added in v0.4.0

func (this AuthorizationNone) IsEqualTo(other any) bool

func (*AuthorizationNone) SetDefaults added in v0.4.0

func (this *AuthorizationNone) SetDefaults() error

func (*AuthorizationNone) Trim added in v0.4.0

func (this *AuthorizationNone) Trim() error

func (AuthorizationNone) Types added in v0.4.0

func (this AuthorizationNone) Types() []string

func (*AuthorizationNone) UnmarshalYAML added in v0.4.0

func (this *AuthorizationNone) UnmarshalYAML(node *yaml.Node) error

func (*AuthorizationNone) Validate added in v0.4.0

func (this *AuthorizationNone) Validate() error

type AuthorizationOidcDeviceAuth

type AuthorizationOidcDeviceAuth struct {
	Issuer       template.Url     `yaml:"issuer"`
	ClientId     template.String  `yaml:"clientId"`
	ClientSecret template.String  `yaml:"clientSecret"`
	Scopes       template.Strings `yaml:"scopes"`

	RetrieveIdToken       bool                          `yaml:"retrieveIdToken,omitempty"`
	RetrieveUserInfo      bool                          `yaml:"retrieveUserInfo,omitempty"`
	ForceDisposeSessionOn string                        `yaml:"forceDisposeSessionOn,omitempty"`
	RefreshToken          AuthorizationOidcRefreshToken `yaml:"refreshToken,omitempty"`
}

func (AuthorizationOidcDeviceAuth) FeatureFlags added in v0.2.0

func (this AuthorizationOidcDeviceAuth) FeatureFlags() []string

func (AuthorizationOidcDeviceAuth) IsEqualTo

func (this AuthorizationOidcDeviceAuth) IsEqualTo(other any) bool

func (AuthorizationOidcDeviceAuth) RefreshEnabled

func (this AuthorizationOidcDeviceAuth) RefreshEnabled() bool

func (*AuthorizationOidcDeviceAuth) SetDefaults

func (this *AuthorizationOidcDeviceAuth) SetDefaults() error

func (*AuthorizationOidcDeviceAuth) Trim

func (this *AuthorizationOidcDeviceAuth) Trim() error

func (AuthorizationOidcDeviceAuth) Types added in v0.2.0

func (this AuthorizationOidcDeviceAuth) Types() []string

func (*AuthorizationOidcDeviceAuth) UnmarshalYAML

func (this *AuthorizationOidcDeviceAuth) UnmarshalYAML(node *yaml.Node) error

func (*AuthorizationOidcDeviceAuth) Validate

func (this *AuthorizationOidcDeviceAuth) Validate() error

type AuthorizationOidcRefreshToken

type AuthorizationOidcRefreshToken struct {
	Mode              string          `yaml:"mode,omitempty"`
	AtLifetimePercent uint8           `yaml:"atLifetimePercent,omitempty"`
	FallbackEvery     common.Duration `yaml:"fallbackEvery,omitempty"`
	MaxUnverifiedFor  common.Duration `yaml:"maxUnverifiedFor,omitempty"`
}

func (AuthorizationOidcRefreshToken) IsEqualTo

func (this AuthorizationOidcRefreshToken) IsEqualTo(other any) bool

func (*AuthorizationOidcRefreshToken) SetDefaults

func (this *AuthorizationOidcRefreshToken) SetDefaults() error

func (*AuthorizationOidcRefreshToken) Trim

func (this *AuthorizationOidcRefreshToken) Trim() error

func (*AuthorizationOidcRefreshToken) UnmarshalYAML

func (this *AuthorizationOidcRefreshToken) UnmarshalYAML(node *yaml.Node) error

func (*AuthorizationOidcRefreshToken) Validate

func (this *AuthorizationOidcRefreshToken) Validate() error

type AuthorizationSimple added in v0.2.0

type AuthorizationSimple struct {
	UserCertificateAuthorityProperties `yaml:",inline"`
	Entries                            AuthorizationSimpleEntries `yaml:"entries,omitempty"`
}

func (AuthorizationSimple) FeatureFlags added in v0.2.0

func (this AuthorizationSimple) FeatureFlags() []string

func (AuthorizationSimple) IsEqualTo added in v0.2.0

func (this AuthorizationSimple) IsEqualTo(other any) bool

func (*AuthorizationSimple) SetDefaults added in v0.2.0

func (this *AuthorizationSimple) SetDefaults() error

func (*AuthorizationSimple) Trim added in v0.2.0

func (this *AuthorizationSimple) Trim() error

func (AuthorizationSimple) Types added in v0.2.0

func (this AuthorizationSimple) Types() []string

func (*AuthorizationSimple) UnmarshalYAML added in v0.2.0

func (this *AuthorizationSimple) UnmarshalYAML(node *yaml.Node) error

func (*AuthorizationSimple) Validate added in v0.2.0

func (this *AuthorizationSimple) Validate() error

type AuthorizationSimpleEntries added in v0.2.0

type AuthorizationSimpleEntries []AuthorizationSimpleEntry

func (AuthorizationSimpleEntries) IsEqualTo added in v0.2.0

func (this AuthorizationSimpleEntries) IsEqualTo(other any) bool

func (*AuthorizationSimpleEntries) SetDefaults added in v0.2.0

func (this *AuthorizationSimpleEntries) SetDefaults() error

func (*AuthorizationSimpleEntries) Trim added in v0.2.0

func (this *AuthorizationSimpleEntries) Trim() error

func (*AuthorizationSimpleEntries) UnmarshalYAML added in v0.4.0

func (this *AuthorizationSimpleEntries) UnmarshalYAML(node *yaml.Node) error

func (AuthorizationSimpleEntries) Validate added in v0.2.0

func (this AuthorizationSimpleEntries) Validate() error

type AuthorizationSimpleEntry added in v0.2.0

type AuthorizationSimpleEntry struct {
	Name               string                    `yaml:"name"`
	AuthorizedKeys     crypto.AuthorizedKeys     `yaml:"authorizedKeys,omitempty"`
	AuthorizedKeysFile crypto.AuthorizedKeysFile `yaml:"authorizedKeysFile,omitempty"`
	Password           crypto.Password           `yaml:"password,omitempty"`
	PasswordFile       crypto.PasswordFile       `yaml:"passwordFile,omitempty"`

	CreatePasswordFileIfAbsentOfType *crypto.PasswordType `yaml:"createPasswordFileIfAbsentOfType,omitempty"`
}

func (*AuthorizationSimpleEntry) GetField added in v0.2.0

func (this *AuthorizationSimpleEntry) GetField(name string) (any, bool, error)

func (AuthorizationSimpleEntry) GetPassword added in v0.4.0

func (this AuthorizationSimpleEntry) GetPassword() (crypto.Password, error)

func (AuthorizationSimpleEntry) IsEqualTo added in v0.2.0

func (this AuthorizationSimpleEntry) IsEqualTo(other any) bool

func (*AuthorizationSimpleEntry) SetDefaults added in v0.2.0

func (this *AuthorizationSimpleEntry) SetDefaults() error

func (*AuthorizationSimpleEntry) Trim added in v0.2.0

func (this *AuthorizationSimpleEntry) Trim() error

func (*AuthorizationSimpleEntry) UnmarshalYAML added in v0.2.0

func (this *AuthorizationSimpleEntry) UnmarshalYAML(node *yaml.Node) error

func (*AuthorizationSimpleEntry) Validate added in v0.2.0

func (this *AuthorizationSimpleEntry) Validate() error

type AuthorizationV

type AuthorizationV interface {
	Types() []string
	FeatureFlags() []string
	// contains filtered or unexported methods
}

type AuthorizationVFactory added in v0.2.0

type AuthorizationVFactory func() AuthorizationV

func RegisterAuthorizationV added in v0.2.0

func RegisterAuthorizationV(factory AuthorizationVFactory) AuthorizationVFactory

type BifroestAudiences

type BifroestAudiences []string

func (BifroestAudiences) IsEqualTo

func (this BifroestAudiences) IsEqualTo(other any) bool

func (*BifroestAudiences) SetDefaults

func (this *BifroestAudiences) SetDefaults() error

func (*BifroestAudiences) Trim

func (this *BifroestAudiences) Trim() error

func (*BifroestAudiences) UnmarshalYAML

func (this *BifroestAudiences) UnmarshalYAML(node *yaml.Node) error

func (BifroestAudiences) Validate

func (this BifroestAudiences) Validate() error

type Configuration

type Configuration struct {
	Auditlogs Auditlogs `yaml:"auditlog,omitempty"`

	Ssh Ssh `yaml:"ssh"`

	// Session defines how new and existing sessions (a connection relates to) should be treated by the service.
	// These session should not be mixed up with [ssh sessions].
	//
	// [ssh sessions]: https://datatracker.ietf.org/doc/html/rfc4254#section-6
	Session Session `yaml:"session"`

	Flows Flows `yaml:"flows"`

	HouseKeeping HouseKeeping `yaml:"housekeeping"`

	Alternatives Alternatives `yaml:"alternatives"`

	StartMessage template.String `yaml:"startMessage,omitempty"`
}

func (Configuration) IsEqualTo

func (this Configuration) IsEqualTo(other any) bool

func (*Configuration) LoadFromFile

func (this *Configuration) LoadFromFile(fn string) error

func (*Configuration) LoadFromYaml

func (this *Configuration) LoadFromYaml(reader io.Reader, fn string) error

func (*Configuration) SetDefaults

func (this *Configuration) SetDefaults() error

func (*Configuration) Trim

func (this *Configuration) Trim() error

func (*Configuration) UnmarshalYAML

func (this *Configuration) UnmarshalYAML(node *yaml.Node) error

func (*Configuration) Validate

func (this *Configuration) Validate() error

type Environment

type Environment struct {
	Variables EnvironmentVariables `yaml:"variables,omitempty"`
	V         EnvironmentV         `yaml:"-"`
}

func (Environment) IsEqualTo

func (this Environment) IsEqualTo(other any) bool

func (*Environment) MarshalYAML

func (this *Environment) MarshalYAML() (any, error)

func (*Environment) SetDefaults

func (this *Environment) SetDefaults() error

func (*Environment) Trim

func (this *Environment) Trim() error

func (*Environment) UnmarshalYAML

func (this *Environment) UnmarshalYAML(node *yaml.Node) error

func (*Environment) Validate

func (this *Environment) Validate() error

type EnvironmentDocker added in v0.4.0

type EnvironmentDocker struct {
	LoginAllowed template.Bool `yaml:"loginAllowed,omitempty"`

	Host       template.String `yaml:"host,omitempty"`
	ApiVersion template.String `yaml:"apiVersion,omitempty"`
	CertPath   template.String `yaml:"certPath,omitempty"`
	TlsVerify  template.Bool   `yaml:"tlsVerify,omitempty"`

	Image                template.String  `yaml:"image"`
	ImagePullPolicy      PullPolicy       `yaml:"imagePullPolicy,omitempty"`
	ImagePullCredentials template.String  `yaml:"imagePullCredentials,omitempty"`
	Networks             template.Strings `yaml:"networks"`
	Volumes              template.Strings `yaml:"volumes,omitempty"`
	Mounts               template.Strings `yaml:"mounts,omitempty"`
	Capabilities         template.Strings `yaml:"capabilities,omitempty"`
	Privileged           template.Bool    `yaml:"privileged,omitempty"`
	DnsServers           template.Strings `yaml:"dnsServers,omitempty"`
	DnsSearch            template.Strings `yaml:"dnsSearch,omitempty"`

	ShellCommand template.Strings `yaml:"shellCommand,omitempty"`
	ExecCommand  template.Strings `yaml:"execCommand,omitempty"`
	SftpCommand  template.Strings `yaml:"sftpCommand,omitempty"`
	Directory    template.String  `yaml:"directory"`
	User         template.String  `yaml:"user,omitempty"`

	Banner template.String `yaml:"banner,omitempty"`

	PortForwardingAllowed template.Bool `yaml:"portForwardingAllowed,omitempty"`
	ImpPublishHost        net.Host      `yaml:"impPublishHost,omitempty"`

	CleanOrphan template.Bool `yaml:"cleanOrphan,omitempty"`
}

func (EnvironmentDocker) FeatureFlags added in v0.4.0

func (this EnvironmentDocker) FeatureFlags() []string

func (EnvironmentDocker) IsEqualTo added in v0.4.0

func (this EnvironmentDocker) IsEqualTo(other any) bool

func (*EnvironmentDocker) SetDefaults added in v0.4.0

func (this *EnvironmentDocker) SetDefaults() error

func (EnvironmentDocker) SupportsEnvironmentVariables

func (this EnvironmentDocker) SupportsEnvironmentVariables() bool

func (*EnvironmentDocker) Trim added in v0.4.0

func (this *EnvironmentDocker) Trim() error

func (EnvironmentDocker) Types added in v0.4.0

func (this EnvironmentDocker) Types() []string

func (*EnvironmentDocker) UnmarshalYAML added in v0.4.0

func (this *EnvironmentDocker) UnmarshalYAML(node *yaml.Node) error

func (*EnvironmentDocker) Validate added in v0.4.0

func (this *EnvironmentDocker) Validate() error

type EnvironmentDummy added in v0.4.0

type EnvironmentDummy struct {
	ExitCode template.Int64  `yaml:"exitCode,omitempty"`
	Banner   template.String `yaml:"banner,omitempty"`
}

func (EnvironmentDummy) FeatureFlags added in v0.4.0

func (this EnvironmentDummy) FeatureFlags() []string

func (EnvironmentDummy) IsEqualTo added in v0.4.0

func (this EnvironmentDummy) IsEqualTo(other any) bool

func (*EnvironmentDummy) SetDefaults added in v0.4.0

func (this *EnvironmentDummy) SetDefaults() error

func (*EnvironmentDummy) Trim added in v0.4.0

func (this *EnvironmentDummy) Trim() error

func (EnvironmentDummy) Types added in v0.4.0

func (this EnvironmentDummy) Types() []string

func (*EnvironmentDummy) UnmarshalYAML added in v0.4.0

func (this *EnvironmentDummy) UnmarshalYAML(node *yaml.Node) error

func (*EnvironmentDummy) Validate added in v0.4.0

func (this *EnvironmentDummy) Validate() error

type EnvironmentKubernetes added in v0.5.0

type EnvironmentKubernetes struct {
	LoginAllowed template.Bool `yaml:"loginAllowed,omitempty"`

	Config  template.TextMarshaller[kubernetes.Kubeconfig, *kubernetes.Kubeconfig] `yaml:"config,omitempty"`
	Context template.String                                                        `yaml:"context,omitempty"`

	Name                 template.String   `yaml:"name"`
	Namespace            template.String   `yaml:"namespace,omitempty"`
	Os                   sys.Os            `yaml:"os"`
	Arch                 sys.Arch          `yaml:"arch"`
	ServiceAccountName   template.String   `yaml:"serviceAccountName,omitempty"`
	Image                template.String   `yaml:"image"`
	ImagePullPolicy      PullPolicy        `yaml:"imagePullPolicy,omitempty"`
	ImagePullSecretName  template.String   `yaml:"imagePullSecretName,omitempty"`
	ImagePullCredentials template.String   `yaml:"imagePullCredentials,omitempty"`
	ReadyTimeout         template.Duration `yaml:"readyTimeout,omitempty"`
	RemoveTimeout        time.Duration     `yaml:"removeTimeout,omitempty"`
	Capabilities         template.Strings  `yaml:"capabilities,omitempty"`
	Privileged           template.Bool     `yaml:"privileged,omitempty"`
	DnsServers           template.Strings  `yaml:"dnsServers,omitempty"`
	DnsSearch            template.Strings  `yaml:"dnsSearch,omitempty"`

	ShellCommand template.Strings `yaml:"shellCommand,omitempty"`
	ExecCommand  template.Strings `yaml:"execCommand,omitempty"`
	SftpCommand  template.Strings `yaml:"sftpCommand,omitempty"`
	Directory    template.String  `yaml:"directory"`
	User         template.String  `yaml:"user,omitempty"`
	Group        template.String  `yaml:"group,omitempty"`

	Banner                template.String `yaml:"banner,omitempty"`
	PortForwardingAllowed template.Bool   `yaml:"portForwardingAllowed,omitempty"`

	CleanOrphan template.Bool `yaml:"cleanOrphan,omitempty"`
}

func (EnvironmentKubernetes) FeatureFlags added in v0.5.0

func (this EnvironmentKubernetes) FeatureFlags() []string

func (EnvironmentKubernetes) IsEqualTo added in v0.5.0

func (this EnvironmentKubernetes) IsEqualTo(other any) bool

func (*EnvironmentKubernetes) SetDefaults added in v0.5.0

func (this *EnvironmentKubernetes) SetDefaults() error

func (EnvironmentKubernetes) SupportsEnvironmentVariables

func (this EnvironmentKubernetes) SupportsEnvironmentVariables() bool

func (*EnvironmentKubernetes) Trim added in v0.5.0

func (this *EnvironmentKubernetes) Trim() error

func (EnvironmentKubernetes) Types added in v0.5.0

func (this EnvironmentKubernetes) Types() []string

func (*EnvironmentKubernetes) UnmarshalYAML added in v0.5.0

func (this *EnvironmentKubernetes) UnmarshalYAML(node *yaml.Node) error

func (*EnvironmentKubernetes) Validate added in v0.5.0

func (this *EnvironmentKubernetes) Validate() error

type EnvironmentLocal

type EnvironmentLocal struct {
	User                   UserRequirementTemplate `yaml:",inline"`
	EnvironmentLocalCommon `yaml:",inline"`
}

func (EnvironmentLocal) FeatureFlags added in v0.2.0

func (this EnvironmentLocal) FeatureFlags() []string

func (EnvironmentLocal) IsEqualTo

func (this EnvironmentLocal) IsEqualTo(other any) bool

func (*EnvironmentLocal) SetDefaults

func (this *EnvironmentLocal) SetDefaults() error

func (EnvironmentLocal) SupportsEnvironmentVariables

func (this EnvironmentLocal) SupportsEnvironmentVariables() bool

func (*EnvironmentLocal) Trim

func (this *EnvironmentLocal) Trim() error

func (EnvironmentLocal) Types added in v0.2.0

func (this EnvironmentLocal) Types() []string

func (*EnvironmentLocal) UnmarshalYAML

func (this *EnvironmentLocal) UnmarshalYAML(node *yaml.Node) error

func (*EnvironmentLocal) Validate

func (this *EnvironmentLocal) Validate() error

type EnvironmentLocalCommon

type EnvironmentLocalCommon struct {
	LoginAllowed               template.Bool           `yaml:"loginAllowed,omitempty"`
	CreateIfAbsent             template.Bool           `yaml:"createIfAbsent,omitempty"`
	UpdateIfDifferent          template.Bool           `yaml:"updateIfDifferent,omitempty"`
	ManagedGroup               string                  `yaml:"managedGroup,omitempty"`
	ManageSystemUsers          template.Bool           `yaml:"manageSystemUsers,omitempty"`
	DeleteOnDispose            template.Bool           `yaml:"deleteOnDispose,omitempty"`
	DeleteHomeTogetherWithUser template.Bool           `yaml:"deleteHomeTogetherWithUser,omitempty"`
	KillProcessesOnDispose     template.Bool           `yaml:"killProcessesOnDispose,omitempty"`
	Dispose                    EnvironmentLocalDispose `yaml:"dispose,omitempty"`
	Banner                     template.String         `yaml:"banner,omitempty"`
	PortForwardingAllowed      template.Bool           `yaml:"portForwardingAllowed,omitempty"`
	ShellCommand               template.Strings        `yaml:"shellCommand,omitempty"`
	ExecCommandPrefix          template.Strings        `yaml:"execCommandPrefix,omitempty"`
	Directory                  template.String         `yaml:"directory,omitempty"`
}

func (EnvironmentLocalCommon) IsEqualTo

func (this EnvironmentLocalCommon) IsEqualTo(other any) bool

func (*EnvironmentLocalCommon) SetDefaults

func (this *EnvironmentLocalCommon) SetDefaults() error

func (*EnvironmentLocalCommon) Trim

func (this *EnvironmentLocalCommon) Trim() error

func (*EnvironmentLocalCommon) Validate

func (this *EnvironmentLocalCommon) Validate() error

type EnvironmentLocalDispose

type EnvironmentLocalDispose struct {
	DeleteOnDispose          template.Bool `yaml:"deleteOnDispose,omitempty"`
	DeleteManagedUser        template.Bool `yaml:"deleteManagedUser,omitempty"`
	DeleteManagedUserHomeDir template.Bool `yaml:"deleteManagedUserHomeDir,omitempty"`
	KillManagedUserProcesses template.Bool `yaml:"killManagedUserProcesses,omitempty"`
}

func (EnvironmentLocalDispose) IsEqualTo

func (this EnvironmentLocalDispose) IsEqualTo(other any) bool

func (*EnvironmentLocalDispose) SetDefaults

func (this *EnvironmentLocalDispose) SetDefaults() error

func (*EnvironmentLocalDispose) Trim

func (this *EnvironmentLocalDispose) Trim() error

func (*EnvironmentLocalDispose) UnmarshalYAML

func (this *EnvironmentLocalDispose) UnmarshalYAML(node *yaml.Node) error

func (*EnvironmentLocalDispose) Validate

func (this *EnvironmentLocalDispose) Validate() error

type EnvironmentSsh

type EnvironmentSsh struct {
	Address template.String `yaml:"address"`
	User    template.String `yaml:"user"`
	Os      sys.Os          `yaml:"os,omitempty"`

	KnownHosts        crypto.KnownHosts     `yaml:"knownHosts,omitempty"`
	KnownHostsFile    crypto.KnownHostsFile `yaml:"knownHostsFile,omitempty"`
	AcceptAllHostKeys bool                  `yaml:"acceptAllHostKeys,omitempty"`

	IdentityFiles  template.Strings           `yaml:"identityFiles,omitempty"`
	Certificate    *EnvironmentSshCertificate `yaml:"certificate,omitempty"`
	ConnectTimeout template.Duration          `yaml:"connectTimeout,omitempty"`

	LoginAllowed                 template.Bool   `yaml:"loginAllowed,omitempty"`
	Banner                       template.String `yaml:"banner,omitempty"`
	PortForwardingAllowed        template.Bool   `yaml:"portForwardingAllowed,omitempty"`
	ReversePortForwardingAllowed template.Bool   `yaml:"reversePortForwardingAllowed,omitempty"`
	AllowedSubsystems            common.Regexp   `yaml:"allowedSubsystems"`
}

func (EnvironmentSsh) FeatureFlags

func (this EnvironmentSsh) FeatureFlags() []string

func (EnvironmentSsh) IsEqualTo

func (this EnvironmentSsh) IsEqualTo(other any) bool

func (*EnvironmentSsh) SetDefaults

func (this *EnvironmentSsh) SetDefaults() error

func (EnvironmentSsh) SupportsEnvironmentVariables

func (this EnvironmentSsh) SupportsEnvironmentVariables() bool

func (*EnvironmentSsh) Trim

func (this *EnvironmentSsh) Trim() error

func (EnvironmentSsh) Types

func (this EnvironmentSsh) Types() []string

func (*EnvironmentSsh) UnmarshalYAML

func (this *EnvironmentSsh) UnmarshalYAML(node *yaml.Node) error

func (*EnvironmentSsh) Validate

func (this *EnvironmentSsh) Validate() error

type EnvironmentSshCertificate

type EnvironmentSshCertificate struct {
	IdentityFile          template.String                     `yaml:"identityFile,omitempty"`
	AuthorityIdentityFile template.String                     `yaml:"authorityIdentityFile,omitempty"`
	Validity              template.Duration                   `yaml:"validity"`
	ValidAfterSkew        template.Duration                   `yaml:"validAfterSkew,omitempty"`
	Audience              template.String                     `yaml:"audience,omitempty"`
	Principals            template.Strings                    `yaml:"principals,omitempty"`
	Extensions            EnvironmentSshCertificateExtensions `yaml:"extensions,omitempty"`
}

func (EnvironmentSshCertificate) IsEqualTo

func (this EnvironmentSshCertificate) IsEqualTo(other any) bool

func (*EnvironmentSshCertificate) SetDefaults

func (this *EnvironmentSshCertificate) SetDefaults() error

func (*EnvironmentSshCertificate) Trim

func (this *EnvironmentSshCertificate) Trim() error

func (*EnvironmentSshCertificate) UnmarshalYAML

func (this *EnvironmentSshCertificate) UnmarshalYAML(node *yaml.Node) error

func (*EnvironmentSshCertificate) Validate

func (this *EnvironmentSshCertificate) Validate() error

type EnvironmentSshCertificateExtensions

type EnvironmentSshCertificateExtensions map[string]template.String

func (EnvironmentSshCertificateExtensions) IsEqualTo

func (this EnvironmentSshCertificateExtensions) IsEqualTo(other any) bool

func (EnvironmentSshCertificateExtensions) IsZero

func (EnvironmentSshCertificateExtensions) Render

func (this EnvironmentSshCertificateExtensions) Render(data any) (map[string]string, error)

func (*EnvironmentSshCertificateExtensions) SetDefaults

func (this *EnvironmentSshCertificateExtensions) SetDefaults() error

func (*EnvironmentSshCertificateExtensions) Trim

func (EnvironmentSshCertificateExtensions) Validate

type EnvironmentV

type EnvironmentV interface {
	Types() []string
	FeatureFlags() []string
	// contains filtered or unexported methods
}

type EnvironmentVFactory added in v0.2.0

type EnvironmentVFactory func() EnvironmentV

func RegisterEnvironmentV added in v0.2.0

func RegisterEnvironmentV(factory EnvironmentVFactory) EnvironmentVFactory

type EnvironmentVariableName

type EnvironmentVariableName string

func (EnvironmentVariableName) Validate

func (this EnvironmentVariableName) Validate() error

type EnvironmentVariables

type EnvironmentVariables map[EnvironmentVariableName]template.String

func (EnvironmentVariables) IsEqualTo

func (this EnvironmentVariables) IsEqualTo(other any) bool

func (EnvironmentVariables) IsZero

func (this EnvironmentVariables) IsZero() bool

func (EnvironmentVariables) Render

func (this EnvironmentVariables) Render(data any) (sys.EnvVars, error)

func (*EnvironmentVariables) SetDefaults

func (this *EnvironmentVariables) SetDefaults() error

func (*EnvironmentVariables) Trim

func (this *EnvironmentVariables) Trim() error

func (EnvironmentVariables) Validate

func (this EnvironmentVariables) Validate() error

type EnvironmentVariablesAware

type EnvironmentVariablesAware interface {
	SupportsEnvironmentVariables() bool
}

type Flow

type Flow struct {
	// Name unique name within the while configuration which identifies the Flow.
	Name FlowName `yaml:"name"`

	// Auditlog references the audit log used by this flow.
	Auditlog AuditlogName `yaml:"auditlog,omitempty"`

	// Requirement represents all rules the connection has to meet to be able to be accepted by this flow.
	Requirement Requirement `yaml:"requirement,omitempty"`

	// Authorization defines how a connection can be authorized to get access to this flow.
	Authorization Authorization `yaml:"authorization"`

	// Environment defines to which Environment the connection will be connected ones every step before was successful.
	Environment Environment `yaml:"environment"`
}

Flow represents a dedicated flow within the service.

Each flow has a unique Name where it can be identified with.

Steps

It follows the follows steps:

  1. Check if the current connection meet the defined Requirement.
  2. Register a new session or use an existing one based on Session configuration (configured via root Configuration - because is used by every flow together).
  3. Try to authorize the current connection based on Authorization.
  4. If it was successfully authorized create and run a new Environment.

func (Flow) IsEqualTo

func (this Flow) IsEqualTo(other any) bool

func (*Flow) SetDefaults

func (this *Flow) SetDefaults() error

func (*Flow) Trim

func (this *Flow) Trim() error

func (*Flow) UnmarshalYAML

func (this *Flow) UnmarshalYAML(node *yaml.Node) error

func (*Flow) Validate

func (this *Flow) Validate() error

type FlowName

type FlowName string

func (FlowName) Clone

func (this FlowName) Clone() FlowName

func (FlowName) IsEqualTo

func (this FlowName) IsEqualTo(other any) bool

func (FlowName) IsZero

func (this FlowName) IsZero() bool

func (FlowName) MarshalText

func (this FlowName) MarshalText() (text []byte, err error)

func (*FlowName) Set

func (this *FlowName) Set(text string) error

func (FlowName) String

func (this FlowName) String() string

func (*FlowName) UnmarshalText

func (this *FlowName) UnmarshalText(text []byte) error

func (FlowName) Validate

func (this FlowName) Validate() error

type Flows

type Flows []Flow

Flows defines a set of Flow instances.

func (Flows) IsEqualTo

func (this Flows) IsEqualTo(other any) bool

func (Flows) IsZero added in v0.4.0

func (this Flows) IsZero() bool

func (*Flows) SetDefaults

func (this *Flows) SetDefaults() error

func (*Flows) Trim

func (this *Flows) Trim() error

func (*Flows) UnmarshalYAML added in v0.4.0

func (this *Flows) UnmarshalYAML(node *yaml.Node) error

func (Flows) Validate

func (this Flows) Validate() error

type GroupRequirementTemplate

type GroupRequirementTemplate struct {
	Gid  *template.TextMarshaller[user.GroupId, *user.GroupId] `yaml:"gid,omitempty"`
	Name template.String                                       `yaml:"name,omitempty"`
}

func (GroupRequirementTemplate) IsEqualTo

func (this GroupRequirementTemplate) IsEqualTo(other any) bool

func (GroupRequirementTemplate) Render

func (this GroupRequirementTemplate) Render(key common.StructuredKey, data any) (result user.GroupRequirement, err error)

func (*GroupRequirementTemplate) SetDefaults

func (this *GroupRequirementTemplate) SetDefaults() error

func (*GroupRequirementTemplate) Trim

func (this *GroupRequirementTemplate) Trim() error

func (*GroupRequirementTemplate) UnmarshalYAML

func (this *GroupRequirementTemplate) UnmarshalYAML(node *yaml.Node) error

func (*GroupRequirementTemplate) Validate

func (this *GroupRequirementTemplate) Validate() error

type GroupRequirementTemplates

type GroupRequirementTemplates []GroupRequirementTemplate

func (GroupRequirementTemplates) IsEqualTo

func (this GroupRequirementTemplates) IsEqualTo(other any) bool

func (GroupRequirementTemplates) Render

func (this GroupRequirementTemplates) Render(key common.StructuredKey, data any) (result user.GroupRequirements, err error)

func (*GroupRequirementTemplates) SetDefaults

func (this *GroupRequirementTemplates) SetDefaults() error

func (*GroupRequirementTemplates) Trim

func (this *GroupRequirementTemplates) Trim() error

func (*GroupRequirementTemplates) UnmarshalYAML added in v0.4.0

func (this *GroupRequirementTemplates) UnmarshalYAML(node *yaml.Node) error

func (GroupRequirementTemplates) Validate

func (this GroupRequirementTemplates) Validate() error

type HouseKeeping

type HouseKeeping struct {
	Every        common.Duration `yaml:"every"`
	InitialDelay common.Duration `yaml:"initialDelay"`

	// AutoRepair tells the housekeeping service to repair/cleanup broken or
	// unwanted stuff automatically, if possible. Defaults to DefaultHouseKeepingAutoRepair.
	AutoRepair bool `yaml:"autoRepair"`

	// KeepExpiredFor defines for how long a session should be kept before it will finally delete, although it
	// is already expired. In case of 0 it will be deleted immediately.
	// Defaults to DefaultHouseKeepingKeepExpiredFor
	KeepExpiredFor common.Duration `yaml:"keepExpiredFor"`
}

func (HouseKeeping) IsEqualTo

func (this HouseKeeping) IsEqualTo(other any) bool

func (*HouseKeeping) SetDefaults

func (this *HouseKeeping) SetDefaults() error

func (*HouseKeeping) Trim

func (this *HouseKeeping) Trim() error

func (*HouseKeeping) UnmarshalYAML

func (this *HouseKeeping) UnmarshalYAML(node *yaml.Node) error

func (*HouseKeeping) Validate

func (this *HouseKeeping) Validate() error

type Keys

type Keys struct {
	HostKeys               template.Strings          `yaml:"hostKeys"`
	Exchanges              ssh.KeyExchanges          `yaml:"exchanges"`
	RsaRestriction         crypto.RsaRestriction     `yaml:"rsaRestriction"`
	DsaRestriction         crypto.DsaRestriction     `yaml:"dsaRestriction"`
	EcdsaRestriction       crypto.EcdsaRestriction   `yaml:"ecdsaRestriction"`
	Ed25519Restriction     crypto.Ed25519Restriction `yaml:"ed25519Restriction"`
	RememberMeNotification template.String           `yaml:"rememberMeNotification"`
}

func (Keys) IsEqualTo

func (this Keys) IsEqualTo(other any) bool

func (Keys) KeyAllowed

func (this Keys) KeyAllowed(in any) (bool, error)

func (*Keys) SetDefaults

func (this *Keys) SetDefaults() error

func (*Keys) Trim

func (this *Keys) Trim() error

func (*Keys) UnmarshalYAML

func (this *Keys) UnmarshalYAML(node *yaml.Node) error

func (*Keys) Validate

func (this *Keys) Validate() error

type LocationError

type LocationError struct {
	File   string
	Line   int
	Column int
	Cause  error
}

func (*LocationError) Error

func (this *LocationError) Error() string

func (*LocationError) Unwrap

func (this *LocationError) Unwrap() error

type Messages added in v0.6.0

type Messages struct {
	Authentications ssh.MessageAuthentications `yaml:"authentications"`
	Ciphers         ssh.Ciphers                `yaml:"ciphers"`
}

func (Messages) IsEqualTo added in v0.6.0

func (this Messages) IsEqualTo(other any) bool

func (*Messages) SetDefaults added in v0.6.0

func (this *Messages) SetDefaults() error

func (*Messages) Trim added in v0.6.0

func (this *Messages) Trim() error

func (*Messages) UnmarshalYAML added in v0.6.0

func (this *Messages) UnmarshalYAML(node *yaml.Node) error

func (*Messages) Validate added in v0.6.0

func (this *Messages) Validate() error

type PasswordProperties added in v0.2.0

type PasswordProperties struct {
	Allowed            template.Bool `yaml:"allowed"`
	InteractiveAllowed template.Bool `yaml:"interactiveAllowed"`
	EmptyAllowed       template.Bool `yaml:"emptyAllowed"`
}

func (PasswordProperties) IsEqualTo added in v0.2.0

func (this PasswordProperties) IsEqualTo(other any) bool

func (*PasswordProperties) SetDefaults added in v0.2.0

func (this *PasswordProperties) SetDefaults() error

func (*PasswordProperties) Trim added in v0.2.0

func (this *PasswordProperties) Trim() error

func (*PasswordProperties) UnmarshalYAML added in v0.2.0

func (this *PasswordProperties) UnmarshalYAML(node *yaml.Node) error

func (*PasswordProperties) Validate added in v0.2.0

func (this *PasswordProperties) Validate() error

type PreparationMessage added in v0.4.0

type PreparationMessage struct {
	Id   common.Regexp `yaml:"id,omitempty"`
	Flow common.Regexp `yaml:"flow,omitempty"`

	Start  template.String `yaml:"start,omitempty"`
	Update template.String `yaml:"update,omitempty"`
	End    template.String `yaml:"end,omitempty"`
	Error  template.String `yaml:"error,omitempty"`
}

func (PreparationMessage) IsEqualTo added in v0.4.0

func (this PreparationMessage) IsEqualTo(other any) bool

func (*PreparationMessage) SetDefaults added in v0.4.0

func (this *PreparationMessage) SetDefaults() error

func (*PreparationMessage) Trim added in v0.4.0

func (this *PreparationMessage) Trim() error

func (*PreparationMessage) UnmarshalYAML added in v0.4.0

func (this *PreparationMessage) UnmarshalYAML(node *yaml.Node) error

func (*PreparationMessage) Validate added in v0.4.0

func (this *PreparationMessage) Validate() error

type PreparationMessages added in v0.4.0

type PreparationMessages []PreparationMessage

PreparationMessages defines a set of PreparationMessage instances.

func (PreparationMessages) IsEqualTo added in v0.4.0

func (this PreparationMessages) IsEqualTo(other any) bool

func (*PreparationMessages) SetDefaults added in v0.4.0

func (this *PreparationMessages) SetDefaults() error

func (*PreparationMessages) Trim added in v0.4.0

func (this *PreparationMessages) Trim() error

func (*PreparationMessages) UnmarshalYAML added in v0.4.0

func (this *PreparationMessages) UnmarshalYAML(node *yaml.Node) error

func (PreparationMessages) Validate added in v0.4.0

func (this PreparationMessages) Validate() error

type PullPolicy added in v0.4.0

type PullPolicy uint8
const (
	PullPolicyIfAbsent PullPolicy = iota
	PullPolicyAlways
	PullPolicyNever
)

func (PullPolicy) Clone added in v0.4.0

func (this PullPolicy) Clone() PullPolicy

func (PullPolicy) IsEqualTo added in v0.4.0

func (this PullPolicy) IsEqualTo(other any) bool

func (PullPolicy) IsZero added in v0.4.0

func (this PullPolicy) IsZero() bool

func (PullPolicy) MarshalText added in v0.4.0

func (this PullPolicy) MarshalText() (text []byte, err error)

func (*PullPolicy) Set added in v0.4.0

func (this *PullPolicy) Set(text string) error

func (PullPolicy) String added in v0.4.0

func (this PullPolicy) String() string

func (*PullPolicy) UnmarshalText added in v0.4.0

func (this *PullPolicy) UnmarshalText(text []byte) error

func (PullPolicy) Validate added in v0.4.0

func (this PullPolicy) Validate() error

type Ref added in v0.5.0

type Ref struct {
	// contains filtered or unexported fields
}

func (*Ref) Get added in v0.5.0

func (this *Ref) Get() *Configuration

func (*Ref) GetFilename added in v0.5.0

func (this *Ref) GetFilename() string

func (Ref) IsEqualTo added in v0.5.0

func (this Ref) IsEqualTo(other any) bool

func (Ref) IsZero added in v0.5.0

func (this Ref) IsZero() bool

func (*Ref) MakeAbsolute added in v0.5.0

func (this *Ref) MakeAbsolute() error

func (Ref) MarshalText added in v0.5.0

func (this Ref) MarshalText() (text []byte, err error)

func (*Ref) Set added in v0.5.0

func (this *Ref) Set(text string) error

func (Ref) String added in v0.5.0

func (this Ref) String() string

func (*Ref) UnmarshalText added in v0.5.0

func (this *Ref) UnmarshalText(text []byte) error

type Requirement

type Requirement struct {
	IncludedRequestingName common.Regexp `yaml:"includedRequestingName,omitempty"`
	ExcludedRequestingName common.Regexp `yaml:"excludedRequestingName,omitempty"`
}

func (Requirement) IsEqualTo

func (this Requirement) IsEqualTo(other any) bool

func (*Requirement) SetDefaults

func (this *Requirement) SetDefaults() error

func (*Requirement) Trim

func (this *Requirement) Trim() error

func (*Requirement) UnmarshalYAML

func (this *Requirement) UnmarshalYAML(node *yaml.Node) error

func (*Requirement) Validate

func (this *Requirement) Validate() error

type Session

type Session struct {
	V SessionV
}

func (Session) IsEqualTo

func (this Session) IsEqualTo(other any) bool

func (*Session) MarshalYAML

func (this *Session) MarshalYAML() (any, error)

func (*Session) SetDefaults

func (this *Session) SetDefaults() error

func (*Session) Trim

func (this *Session) Trim() error

func (*Session) UnmarshalYAML

func (this *Session) UnmarshalYAML(node *yaml.Node) error

func (*Session) Validate

func (this *Session) Validate() error

type SessionFs

type SessionFs struct {
	// IdleTimeout represents the duration a session can be idle until it will be forcibly closed,
	// cleaned up and no new access is possible. 0 means no limitation at all.
	// Defaults to DefaultSessionIdleTimeout
	IdleTimeout common.Duration `yaml:"idleTimeout"`

	// MaxTimeout represents the maximum duration a whole session can last, regardless if it is idle
	// or active until it will be forcibly closed, cleaned up and no new access is possible. 0 means
	// no limitation at all. Defaults to DefaultSessionMaxTimeout
	MaxTimeout common.Duration `yaml:"maxTimeout"`

	// MaxConnections represents the maximum amount of connections that are related to one session. More than
	// this amount means that all new connections will be forcibly closed while connection process.
	// 0 means no limitation at all. Defaults to DefaultSessionMaxConnections
	MaxConnections uint16 `yaml:"maxConnections"`

	// Storage defines where are session.Fs are stored. Defaults to DefaultSessionFsStorage
	Storage string `yaml:"storage"`

	// FileMode defines with which permissions the files should be stored. Defaults to DefaultSessionFsFileMode.
	FileMode sys.FileMode `yaml:"fileMode"`
}

SessionFs defines an implementation of Session on file system base.

func (SessionFs) FeatureFlags added in v0.2.0

func (this SessionFs) FeatureFlags() []string

func (SessionFs) IsEqualTo

func (this SessionFs) IsEqualTo(other any) bool

func (*SessionFs) SetDefaults

func (this *SessionFs) SetDefaults() error

func (*SessionFs) Trim

func (this *SessionFs) Trim() error

func (SessionFs) Types added in v0.2.0

func (this SessionFs) Types() []string

func (*SessionFs) UnmarshalYAML

func (this *SessionFs) UnmarshalYAML(node *yaml.Node) error

func (*SessionFs) Validate

func (this *SessionFs) Validate() error

type SessionV

type SessionV interface {
	Types() []string
	FeatureFlags() []string
	// contains filtered or unexported methods
}

type SessionVFactory added in v0.2.0

type SessionVFactory func() SessionV

func RegisterSessionV added in v0.2.0

func RegisterSessionV(factory SessionVFactory) SessionVFactory

type Ssh

type Ssh struct {
	// Addresses which the service will bind to. This can be more than one but at least one.
	// Defaults to DefaultSshAddresses.
	Addresses net.NetAddresses `yaml:"addresses"`

	// Keys represents all key related settings of the service.
	Keys Keys `yaml:"keys"`

	// Messages represents all message related settings of the service.
	Messages Messages `yaml:"messages"`

	// IdleTimeout represents the duration a connection can be idle until it will be forcibly closed.
	// 0 means no limitation at all. Defaults to DefaultSshIdleTimeout.
	IdleTimeout common.Duration `yaml:"idleTimeout"`

	// MaxTimeout represents the maximum duration a whole connection can last, regardless if it is idle or active
	// until it will be forcibly closed. 0 means no limitation at all. Defaults to DefaultSshMaxTimeout.
	MaxTimeout common.Duration `yaml:"maxTimeout"`

	// GracefulShutdownTimeout represents how long active connections may finish during a graceful shutdown before
	// they are forcibly closed. 0 disables graceful shutdown. Defaults to DefaultSshGracefulShutdownTimeout.
	GracefulShutdownTimeout common.Duration `yaml:"gracefulShutdownTimeout"`

	// HandshakeTimeout represents the maximum duration until a connection has authenticated successfully.
	// 0 means no limitation at all. Defaults to DefaultSshHandshakeTimeout.
	HandshakeTimeout common.Duration `yaml:"handshakeTimeout"`

	// SessionRequestTimeout represents how long an accepted session channel may wait for its initial shell, exec or
	// subsystem request. 0 means no limitation at all. Defaults to DefaultSshSessionRequestTimeout.
	SessionRequestTimeout common.Duration `yaml:"sessionRequestTimeout"`

	// MaxAuthTries represents the maximum amount of tries a client can do while a connection with different
	// authorizations before the connection will be forcibly closed. 0 means no limitation at all.
	// Defaults to DefaultSshMaxAuthTries.
	MaxAuthTries uint8 `yaml:"maxAuthTries"`

	// MaxConnections defines how many connection can be connected to this service in parallel. If there is a new
	// connection created which exceeds this number, this will be closed immediately.
	// Defaults to DefaultSshMaxConnections.
	MaxConnections uint32 `yaml:"maxConnections"`

	// MaxStartupsStart defines how many unauthenticated connections per listener are accepted before random early drop starts.
	// Defaults to DefaultSshMaxStartupsStart.
	MaxStartupsStart uint16 `yaml:"maxStartupsStart"`

	// MaxStartupsRate defines the initial drop probability in percent once MaxStartupsStart is reached.
	// Defaults to DefaultSshMaxStartupsRate.
	MaxStartupsRate uint8 `yaml:"maxStartupsRate"`

	// MaxStartupsFull defines the maximum amount of unauthenticated connections. 0 disables the complete
	// pre-authentication connection limit. Defaults to DefaultSshMaxStartupsFull.
	MaxStartupsFull uint16 `yaml:"maxStartupsFull"`

	// MaxSessionsPerConnection defines the maximum amount of active session channels per connection.
	// 0 means no limitation at all. Defaults to DefaultSshMaxSessionsPerConnection.
	MaxSessionsPerConnection uint16 `yaml:"maxSessionsPerConnection"`

	// MaxChannelsPerConnection defines the maximum amount of active channels per connection.
	// 0 means no limitation at all. Defaults to DefaultSshMaxChannelsPerConnection.
	MaxChannelsPerConnection uint16 `yaml:"maxChannelsPerConnection"`

	// MaxReverseForwardsPerConnection defines the maximum amount of active reverse forwards per connection.
	// 0 means no limitation at all. Defaults to DefaultSshMaxReverseForwardsPerConnection.
	MaxReverseForwardsPerConnection uint16 `yaml:"maxReverseForwardsPerConnection"`

	// MaxChannels defines the maximum amount of active channels per SSH listener.
	// 0 means no limitation at all. Defaults to DefaultSshMaxChannels.
	MaxChannels uint16 `yaml:"maxChannels"`

	// MaxReverseForwards defines the maximum amount of active reverse forwards per SSH listener.
	// 0 means no limitation at all. Defaults to DefaultSshMaxReverseForwards.
	MaxReverseForwards uint16 `yaml:"maxReverseForwards"`

	// UnauthenticatedAudit limits detailed audit records produced before authentication has been proven.
	UnauthenticatedAudit SshUnauthenticatedAudit `yaml:"unauthenticatedAudit,omitempty"`

	// ProxyProtocol defines if the proxy protocol should be respected.
	ProxyProtocol bool `yaml:"proxyProtocol,omitempty"`

	// Banner will be displayed if the clients connects to the server before any other action takes place.
	Banner template.String `yaml:"banner,omitempty"`

	// PreparationMessages will be displayed if any kind of preparation is required before the ssh session can
	// finally be used.
	PreparationMessages PreparationMessages `yaml:"preparationMessages,omitempty"`
}

Ssh defines how the ssh part of the service should be defined.

func (Ssh) IsEqualTo

func (this Ssh) IsEqualTo(other any) bool

func (*Ssh) SetDefaults

func (this *Ssh) SetDefaults() error

func (*Ssh) Trim

func (this *Ssh) Trim() error

func (*Ssh) UnmarshalYAML

func (this *Ssh) UnmarshalYAML(node *yaml.Node) error

func (*Ssh) Validate

func (this *Ssh) Validate() error

type SshUnauthenticatedAudit

type SshUnauthenticatedAudit struct {
	Interval       common.Duration `yaml:"interval"`
	PerSourceLimit uint16          `yaml:"perSourceLimit"`
	GlobalLimit    uint16          `yaml:"globalLimit"`
}

SshUnauthenticatedAudit bounds detailed audit writes before a client has proven authentication. Each limit is both the token bucket capacity and the number of tokens refilled over Interval.

func (SshUnauthenticatedAudit) IsEqualTo

func (this SshUnauthenticatedAudit) IsEqualTo(other any) bool

func (*SshUnauthenticatedAudit) SetDefaults

func (this *SshUnauthenticatedAudit) SetDefaults() error

func (*SshUnauthenticatedAudit) Trim

func (this *SshUnauthenticatedAudit) Trim() error

func (*SshUnauthenticatedAudit) UnmarshalYAML

func (this *SshUnauthenticatedAudit) UnmarshalYAML(node *yaml.Node) error

func (*SshUnauthenticatedAudit) Validate

func (this *SshUnauthenticatedAudit) Validate() error

type UserCertificateAuthorityProperties

type UserCertificateAuthorityProperties struct {
	TrustedUserCAs     crypto.PublicKeys     `yaml:"trustedUserCAs,omitempty"`
	TrustedUserCAsFile crypto.PublicKeysFile `yaml:"trustedUserCAsFile,omitempty"`
}

func (UserCertificateAuthorityProperties) IsEqualTo

func (this UserCertificateAuthorityProperties) IsEqualTo(other any) bool

func (*UserCertificateAuthorityProperties) SetDefaults

func (this *UserCertificateAuthorityProperties) SetDefaults() error

func (*UserCertificateAuthorityProperties) Trim

func (*UserCertificateAuthorityProperties) Validate

func (this *UserCertificateAuthorityProperties) Validate() error

type UserRequirementTemplate

type UserRequirementTemplate struct {
	Name        template.String                             `yaml:"name,omitempty"`
	DisplayName template.String                             `yaml:"displayName,omitempty"`
	Uid         *template.TextMarshaller[user.Id, *user.Id] `yaml:"uid,omitempty"`
	Group       GroupRequirementTemplate                    `yaml:"group,omitempty"`
	Groups      GroupRequirementTemplates                   `yaml:"groups,omitempty"`
	Shell       template.String                             `yaml:"shell,omitempty"`
	HomeDir     template.String                             `yaml:"homeDir,omitempty"`
	Skel        template.String                             `yaml:"skel,omitempty"`
}

func (UserRequirementTemplate) IsEqualTo

func (this UserRequirementTemplate) IsEqualTo(other any) bool

func (UserRequirementTemplate) Render

func (this UserRequirementTemplate) Render(key common.StructuredKey, data any) (_ *user.Requirement, err error)

func (*UserRequirementTemplate) SetDefaults

func (this *UserRequirementTemplate) SetDefaults() error

func (*UserRequirementTemplate) Trim

func (this *UserRequirementTemplate) Trim() error

func (*UserRequirementTemplate) UnmarshalYAML

func (this *UserRequirementTemplate) UnmarshalYAML(node *yaml.Node) error

func (*UserRequirementTemplate) Validate

func (this *UserRequirementTemplate) Validate() error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL