config

package
v0.3.3 Latest Latest
Warning

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

Go to latest
Published: Jun 1, 2026 License: MIT Imports: 22 Imported by: 0

Documentation

Overview

Package config loads optional YAML settings and backend definitions for honey.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BuildJSONSchema added in v0.2.8

func BuildJSONSchema() map[string]any

BuildJSONSchema returns a JSON Schema payload generated from the UI schema.

func DefaultPluginsDir added in v0.2.9

func DefaultPluginsDir() string

DefaultPluginsDir returns ~/.config/honey/plugins (or XDG_CONFIG_HOME/honey/plugins).

func DefaultRecipesDirs added in v0.2.6

func DefaultRecipesDirs() []string

DefaultRecipesDirs returns the list of directories to check for default CUE recipes.

func DefaultRecordDir added in v0.2.8

func DefaultRecordDir(configPath string) string

DefaultRecordDir returns the directory used for session recordings when --record-dir is not set: <directory of config.yaml>/records (e.g. ~/.config/honey/records). If configPath is empty, returns the conventional honey config directory (.../honey/records) matching default config.yaml search paths.

func ListDefaultRecipes added in v0.2.6

func ListDefaultRecipes() []string

ListDefaultRecipes returns a list of absolute paths to all .cue files found in the default recipe directories.

func ParseBytes added in v0.2.8

func ParseBytes(s string) (int64, error)

ParseBytes converts a size string ("5GiB", "64MiB", "1024") into bytes. Accepted suffixes (case-insensitive): KiB, MiB, GiB, TiB. Bare integers are taken as bytes. Fractional values and SI suffixes (KB, MB, …) are rejected.

func ParseRetentionDuration added in v0.3.0

func ParseRetentionDuration(s string) (time.Duration, error)

ParseRetentionDuration parses a retention duration (supports Go durations and day suffix, e.g. 30d).

func ResolvePath

func ResolvePath(explicit string) (string, error)

ResolvePath returns an explicit path from --config or HONEY_CONFIG then the first existing default file, or "" if none exist.

func ResolveRecordDir added in v0.2.8

func ResolveRecordDir(cfg *File, configPath string, recordDirFlag string, recordDirFlagChanged bool) string

ResolveRecordDir returns the session recordings directory (CLI TUI, web server, cue-exec). Precedence when recordDirFlagChanged is true: non-empty global --record-dir value, otherwise DefaultRecordDir(configPath) (explicit empty flag keeps the default path). When recordDirFlagChanged is false: defaults.record_dir from cfg if set, otherwise DefaultRecordDir(configPath).

func ResolveStateDir added in v0.3.1

func ResolveStateDir() (string, error)

ResolveStateDir returns a safe path for writing runtime state files. It prefers XDG_STATE_HOME if set, otherwise ~/.local/state/honey, or falls back to the user's home directory.

Types

type AWSBackend

type AWSBackend struct {
	Name           string         `yaml:"name" json:"name" honey:"label=Name" validate:"required" mod:"trim"`
	Profile        string         `yaml:"profile" json:"profile" honey:"label=Profile" validate:"required" mod:"trim"`
	Region         string         `yaml:"region,omitempty" json:"region,omitempty" honey:"label=Region" mod:"trim"`
	DockerDiscover DockerDiscover `yaml:"docker_discover,omitempty" json:"docker_discover,omitempty" honey:"label=Docker Auto-Discover"`
}

AWSBackend configures one Amazon EC2 listing.

type AlertMapping added in v0.3.3

type AlertMapping struct {
	MatchLabels map[string]string `yaml:"match_labels" json:"match_labels"`
	// HostQuery is a Go template evaluated against alert labels to produce a honey search query.
	// Example: "{{.cluster}}" resolves the cluster label to a substring host search.
	HostQuery string       `yaml:"host_query" json:"host_query"`
	Recipe    string       `yaml:"recipe,omitempty" json:"recipe,omitempty"`
	Command   string       `yaml:"command,omitempty" json:"command,omitempty"`
	Notify    *AlertNotify `yaml:"notify,omitempty" json:"notify,omitempty"`
}

AlertMapping maps Prometheus alert labels to a honey host query and optional investigation config.

type AlertNotify added in v0.3.3

type AlertNotify struct {
	Subject  string               `yaml:"subject,omitempty" json:"subject,omitempty"`
	Slack    *AlertNotifySlack    `yaml:"slack,omitempty" json:"slack,omitempty"`
	HTTP     *AlertNotifyHTTP     `yaml:"http,omitempty" json:"http,omitempty"`
	Telegram *AlertNotifyTelegram `yaml:"telegram,omitempty" json:"telegram,omitempty"`
}

AlertNotify holds optional notification config for alert investigation findings.

type AlertNotifyHTTP added in v0.3.3

type AlertNotifyHTTP struct {
	URL     string            `yaml:"url" json:"url"`
	Headers map[string]string `yaml:"headers,omitempty" json:"headers,omitempty"`
}

AlertNotifyHTTP configures HTTP POST notifications for alert findings.

type AlertNotifySlack added in v0.3.3

type AlertNotifySlack struct {
	WebhookURL string `yaml:"webhook_url" json:"webhook_url"`
	ChannelID  string `yaml:"channel_id,omitempty" json:"channel_id,omitempty"`
}

AlertNotifySlack configures Slack notifications for alert findings.

type AlertNotifyTelegram added in v0.3.3

type AlertNotifyTelegram struct {
	BotToken string   `yaml:"bot_token,omitempty" json:"bot_token,omitempty"`
	ChatIDs  []string `yaml:"chat_ids,omitempty" json:"chat_ids,omitempty"`
}

AlertNotifyTelegram configures Telegram notifications for alert findings.

type AlertWebhookConfig added in v0.3.3

type AlertWebhookConfig struct {
	Enabled         bool   `yaml:"enabled" json:"enabled"`
	Port            int    `yaml:"port" json:"port"`
	Token           string `yaml:"token,omitempty" json:"token,omitempty"`
	AutoInvestigate bool   `yaml:"auto_investigate" json:"auto_investigate"`
	DedupWindow     string `yaml:"dedup_window,omitempty" json:"dedup_window,omitempty"`
	DedupCapacity   int    `yaml:"dedup_capacity,omitempty" json:"dedup_capacity,omitempty"`
}

AlertWebhookConfig configures the Alertmanager webhook receiver server.

type BackendRow

type BackendRow struct {
	Kind string `json:"kind"`
	Name string `json:"name,omitempty"`
	Hint string `json:"hint,omitempty"`
}

BackendRow describes one YAML backends.* entry (for CLI / MCP listing).

type BackendSchema added in v0.2.8

type BackendSchema struct {
	Label  string        `json:"label"`
	Fields []SchemaField `json:"fields"`
}

BackendSchema describes one backend kind and its field layout.

type Backends

type Backends struct {
	GCP        []GCPBackend        `yaml:"gcp" json:"gcp" honey:"label=Google Cloud;order=10" validate:"dive" mod:"dive"`
	AWS        []AWSBackend        `yaml:"aws" json:"aws" honey:"label=AWS;order=20" validate:"dive" mod:"dive"`
	Kubernetes []KubernetesBackend `yaml:"kubernetes" json:"kubernetes" honey:"label=Kubernetes;order=30" validate:"dive" mod:"dive"`
	Consul     []ConsulBackend     `yaml:"consul" json:"consul" honey:"label=Consul;order=40" validate:"dive" mod:"dive"`
	Proxmox    []ProxmoxBackend    `yaml:"proxmox" json:"proxmox" honey:"label=Proxmox;order=50" validate:"dive" mod:"dive"`
	TrueNAS    []TrueNASBackend    `yaml:"truenas" json:"truenas" honey:"label=TrueNAS;order=55" validate:"dive" mod:"dive"`
	Local      []LocalBackend      `yaml:"local" json:"local" honey:"label=Local;order=60" validate:"dive" mod:"dive"`
	Docker     []DockerBackend     `yaml:"docker" json:"docker" honey:"label=Docker;order=35" validate:"dive" mod:"dive"`
}

Backends lists optional multiple instances per provider type. If a slice is nil or omitted, that provider is not defined by the file (use CLI defaults). If a slice is non-empty, one backend is created per element.

type ConsulBackend

type ConsulBackend struct {
	Name           string         `yaml:"name" json:"name" honey:"label=Name" validate:"required" mod:"trim"`
	Addr           string         `yaml:"addr" json:"addr" honey:"label=Address" validate:"required,url" mod:"trim"`
	Datacenter     string         `yaml:"datacenter,omitempty" json:"datacenter,omitempty" honey:"label=Datacenter" mod:"trim"`
	Token          string         `yaml:"token,omitempty" json:"token,omitempty" honey:"label=Token;secret" mod:"trim"`
	DockerDiscover DockerDiscover `yaml:"docker_discover,omitempty" json:"docker_discover,omitempty" honey:"label=Docker Auto-Discover"`
}

ConsulBackend configures one HashiCorp Consul catalog listing.

type Defaults

type Defaults struct {
	SSHUser         string         `yaml:"ssh_user" json:"ssh_user" honey:"label=SSH user" mod:"trim"`
	CacheTTL        string         `yaml:"cache_ttl" json:"cache_ttl" honey:"label=Cache TTL" mod:"trim"` // e.g. "5m", "1h"
	K8sMode         string         `yaml:"k8s_mode" json:"k8s_mode" honey:"label=Kubernetes mode;enum=nodes|pods;enum_as_warning" mod:"trim"`
	K8sDebugImage   string         `yaml:"k8s_debug_image" json:"k8s_debug_image" honey:"label=Kubernetes debug image" mod:"trim"`
	CacheDir        string         `yaml:"cache_dir" json:"cache_dir" honey:"label=Cache directory" mod:"trim"`
	RecordDir       string         `yaml:"record_dir" json:"record_dir" honey:"label=Session recordings directory" mod:"trim"`
	RecordRetention string         ``                                                                                                /* 144-byte string literal not displayed */
	Output          string         `yaml:"output" json:"output" honey:"label=Output;enum=table|json|tui;enum_as_warning" mod:"trim"` // e.g. "table", "json", "tui" (default)
	Name            string         `yaml:"name" json:"name" honey:"label=Name filter" mod:"trim"`
	NameRegex       string         `yaml:"name_regex" json:"name_regex" honey:"label=Name regex" mod:"trim"`
	AISystemPrompt  string         `yaml:"ai_system_prompt" json:"ai_system_prompt" honey:"label=Default system prompt for CUE recipe ai step" mod:"trim"`
	DockerDiscover  DockerDiscover `yaml:"docker_discover,omitempty" json:"docker_discover,omitempty" honey:"label=Docker Auto-Discover Defaults"`
	Logs            Logs           `yaml:"logs,omitempty" json:"logs,omitempty" honey:"label=Logs command defaults"`

	// secretsprovider unwraps the stack AES data key (see internal/cuetry/secrets/doc.go).
	// Examples: gcpkms://projects/…/cryptoKeys/…, awskms://, vault-transit://mount/key,
	// k8s://namespace/secret, keyring://service/user, age://, age-file://path.
	SecretsProvider string `` /* 146-byte string literal not displayed */
	// encryptedkey is provider-specific ciphertext or field name (see secrets package doc).
	EncryptedKey string `` /* 130-byte string literal not displayed */
}

Defaults apply when CLI flags are unset.

func (Defaults) DefaultsCacheTTL

func (d Defaults) DefaultsCacheTTL() (time.Duration, bool, error)

DefaultsCacheTTL parses Defaults.CacheTTL or returns empty and ok=false.

func (Defaults) DefaultsRecordRetention added in v0.3.0

func (d Defaults) DefaultsRecordRetention() (time.Duration, bool, error)

DefaultsRecordRetention parses Defaults.RecordRetention or returns empty and ok=false.

type DockerBackend added in v0.3.0

type DockerBackend struct {
	Name          string       `yaml:"name" json:"name" honey:"label=Name" validate:"required" mod:"trim"`
	Host          string       `` /* 135-byte string literal not displayed */
	ViaLocal      string       `` /* 126-byte string literal not displayed */
	ViaSSH        DockerViaSSH `yaml:"via_ssh,omitempty" json:"via_ssh,omitempty" honey:"label=SSH hop (overrides via_local when host set)"`
	Socket        string       `` /* 133-byte string literal not displayed */
	Platform      string       `` /* 135-byte string literal not displayed */
	RunAs         string       `` /* 126-byte string literal not displayed */
	Mode          string       `yaml:"mode" json:"mode" honey:"label=Mode;enum=containers|swarm|both;enum_as_warning;default=containers" mod:"trim"`
	AllContainers bool         `yaml:"all_containers" json:"all_containers" honey:"label=Include stopped containers;default=false"`
	TLSVerify     bool         `yaml:"tls_verify" json:"tls_verify" honey:"label=Verify TLS (tcp hosts);default=true"`
	CACert        string       `yaml:"ca_cert,omitempty" json:"ca_cert,omitempty" honey:"label=CA certificate path" mod:"trim"`
	Cert          string       `yaml:"cert,omitempty" json:"cert,omitempty" honey:"label=Client certificate path" mod:"trim"`
	Key           string       `yaml:"key,omitempty" json:"key,omitempty" honey:"label=Client key path;secret" mod:"trim"`
}

DockerBackend configures one Docker Engine API endpoint (local socket, tcp, ssh://, or Honey SSH).

type DockerDiscover added in v0.3.0

type DockerDiscover struct {
	Enabled  bool   `yaml:"enabled" json:"enabled" honey:"label=Enable auto-discover"`
	RunAs    string `yaml:"run_as,omitempty" json:"run_as,omitempty" honey:"label=Remote user for docker.sock via sudo (e.g. root)" mod:"trim"`
	Socket   string `yaml:"socket,omitempty" json:"socket,omitempty" honey:"label=Remote Docker socket" mod:"trim"`
	Platform string `yaml:"platform,omitempty" json:"platform,omitempty" honey:"label=Remote OS;enum=linux|windows" mod:"trim"`
}

DockerDiscover configures auto-discovery of containers on cloud VMs.

type DockerViaSSH added in v0.3.0

type DockerViaSSH struct {
	Host         string `yaml:"host,omitempty" json:"host,omitempty" honey:"label=SSH host" mod:"trim"`
	Port         int    `yaml:"port,omitempty" json:"port,omitempty" honey:"label=SSH port (0 = ssh_config default)"`
	User         string `yaml:"user,omitempty" json:"user,omitempty" honey:"label=SSH user" mod:"trim"`
	IdentityFile string `yaml:"identity_file,omitempty" json:"identity_file,omitempty" honey:"label=SSH identity file" mod:"trim"`
}

DockerViaSSH configures an explicit SSH hop for Honey's SSH stack (not Moby ssh://).

type File

type File struct {
	Version       int                `yaml:"version" json:"version"`
	Defaults      Defaults           `yaml:"defaults" json:"defaults"`
	Backends      Backends           `yaml:"backends" json:"backends"`
	Transfer      TransferConfig     `yaml:"transfer" json:"transfer"`
	Plugins       Plugins            `yaml:"plugins,omitempty" json:"plugins,omitempty"`
	Apps          apps.Config        `yaml:"apps,omitempty" json:"apps,omitempty"`
	AlertMappings []AlertMapping     `yaml:"alert_mappings,omitempty" json:"alert_mappings,omitempty"`
	AlertWebhook  AlertWebhookConfig `yaml:"alert_webhook,omitempty" json:"alert_webhook,omitempty"`
}

File is the optional honey YAML configuration.

func Load

func Load(path string) (*File, error)

Load reads and parses a YAML config file using viper. The returned *File is populated from the YAML file, with any HONEY_* environment variables able to override individual fields (e.g. HONEY_DEFAULTS_SSH_USER).

func ParseYAML added in v0.2.7

func ParseYAML(b []byte) (*File, error)

ParseYAML parses a honey config document from memory (used by web API PUT validation).

func (*File) HasAnyBackend

func (f *File) HasAnyBackend() bool

HasAnyBackend returns true if the file defines at least one backend entry.

func (*File) Sanitize added in v0.3.3

func (f *File) Sanitize()

Sanitize trims whitespace from all string fields tagged with mod:"trim". Called automatically by Load and ParseYAML before Validate.

func (*File) Save added in v0.2.6

func (f *File) Save(path string) error

Save serializes the config and writes it to path.

func (*File) Validate added in v0.2.9

func (f *File) Validate() error

Validate checks the configuration struct recursively according to validate tags.

type GCPBackend

type GCPBackend struct {
	Name           string         `yaml:"name" json:"name" honey:"label=Name" validate:"required" mod:"trim"`
	Project        string         `yaml:"project" json:"project" honey:"label=Project" validate:"required" mod:"trim"`
	Zone           string         `yaml:"zone,omitempty" json:"zone,omitempty" honey:"label=Zone" mod:"trim"`
	DockerDiscover DockerDiscover `yaml:"docker_discover,omitempty" json:"docker_discover,omitempty" honey:"label=Docker Auto-Discover"`
}

GCPBackend configures one Google Cloud Compute Engine listing.

type KubernetesBackend

type KubernetesBackend struct {
	Name       string `yaml:"name" json:"name" honey:"label=Name" validate:"required" mod:"trim"`
	Context    string `yaml:"context,omitempty" json:"context,omitempty" honey:"label=Context" mod:"trim"`
	Kubeconfig string `yaml:"kubeconfig,omitempty" json:"kubeconfig,omitempty" honey:"label=Kubeconfig path" mod:"trim"`
	Mode       string `yaml:"mode" json:"mode" honey:"label=Mode;enum=nodes|pods;enum_as_warning;default=nodes" mod:"trim"`
	DebugImage string `yaml:"debug_image,omitempty" json:"debug_image,omitempty" honey:"label=Debug image" mod:"trim"`
}

KubernetesBackend configures one Kubernetes nodes/pods listing.

type LocalBackend added in v0.2.9

type LocalBackend struct {
	Name           string         `yaml:"name" json:"name" honey:"label=Name" validate:"required" mod:"trim"`
	Hosts          []LocalHost    `yaml:"hosts" json:"hosts" honey:"label=Hosts" validate:"dive" mod:"dive"`
	DockerDiscover DockerDiscover `yaml:"docker_discover,omitempty" json:"docker_discover,omitempty" honey:"label=Docker Auto-Discover"`
}

LocalBackend configures manually defined host lists.

type LocalHost added in v0.2.9

type LocalHost struct {
	Name      string            `yaml:"name" json:"name" honey:"label=Name" validate:"required" mod:"trim"`
	PrimaryIP string            `yaml:"primary_ip" json:"primary_ip" honey:"label=Primary IP" validate:"required,ip" mod:"trim"`
	ExtraIPs  []string          `yaml:"extra_ips,omitempty" json:"extra_ips,omitempty" honey:"label=Extra IPs" validate:"dive,ip"`
	Zone      string            `yaml:"zone,omitempty" json:"zone,omitempty" honey:"label=Zone" mod:"trim"`
	Region    string            `yaml:"region,omitempty" json:"region,omitempty" honey:"label=Region" mod:"trim"`
	SSHUser   string            `yaml:"ssh_user,omitempty" json:"ssh_user,omitempty" honey:"label=SSH user for host" mod:"trim"`
	Meta      map[string]string `yaml:"meta,omitempty" json:"meta,omitempty" honey:"label=Metadata"`
}

LocalHost represents a manually defined static server.

type Logs added in v0.3.2

type Logs struct {
	Anomaly                bool    `yaml:"anomaly"                     json:"anomaly"                     honey:"label=Enable anomaly detection"`
	AnomalyModel           string  `yaml:"anomaly_model,omitempty"     json:"anomaly_model,omitempty"     honey:"label=Path to ONNX model file" mod:"trim"`
	AnomalyThresh          float64 `` /* 129-byte string literal not displayed */
	AnomalyWindow          int     `yaml:"anomaly_window,omitempty"    json:"anomaly_window,omitempty"    honey:"label=Anomaly sliding window size"`
	AnomalyOnly            bool    `yaml:"anomaly_only"                json:"anomaly_only"                honey:"label=Only output anomalous lines"`
	AnomalyStrict          bool    `yaml:"anomaly_strict"              json:"anomaly_strict"              honey:"label=Fail if anomaly detector cannot init"`
	AnomalyTokPath         string  `` /* 129-byte string literal not displayed */
	AnomalyEndpoint        string  `` /* 173-byte string literal not displayed */
	AnomalyLLMModel        string  `` /* 155-byte string literal not displayed */
	AnomalyContextLines    int     `` /* 176-byte string literal not displayed */
	AnomalyFilterThreshold float64 `` /* 179-byte string literal not displayed */
	AnomalyFreqWindow      int     `` /* 186-byte string literal not displayed */
	AnomalyFreqRatio       float64 `` /* 187-byte string literal not displayed */
	AnomalyFeedbackFile    string  `` /* 190-byte string literal not displayed */
	AlertEnabled           bool    `yaml:"alert_enabled"              json:"alert_enabled"              honey:"label=Alert on anomalies"`
	AlertSuppressDuration  string  `` /* 141-byte string literal not displayed */
}

Logs holds per-command defaults for honey logs.

type Plugins added in v0.2.9

type Plugins struct {
	Enabled           *bool    `yaml:"enabled,omitempty" json:"enabled,omitempty"`
	Directory         string   `yaml:"directory,omitempty" json:"directory,omitempty" mod:"trim"`
	Allowlist         []string `yaml:"allowlist,omitempty" json:"allowlist,omitempty"`
	MaxMemoryMB       int      `yaml:"max_memory_mb,omitempty" json:"max_memory_mb,omitempty"`
	TimeoutMS         int      `yaml:"timeout_ms,omitempty" json:"timeout_ms,omitempty"`
	NetworkDeny       *bool    `yaml:"network_deny,omitempty" json:"network_deny,omitempty"`
	NetworkAllowHosts []string `yaml:"network_allow_hosts,omitempty" json:"network_allow_hosts,omitempty"`
}

Plugins configures WASM plugins loaded from disk (Extism).

func (Plugins) WithDefaults added in v0.2.9

func (p Plugins) WithDefaults() PluginsEffective

WithDefaults returns effective plugin settings (plugins disabled unless explicitly enabled).

type PluginsEffective added in v0.2.9

type PluginsEffective struct {
	Enabled           bool
	Directory         string
	Allowlist         []string
	MaxMemoryMB       int
	TimeoutMS         int
	NetworkDeny       bool
	NetworkAllowHosts []string
}

PluginsEffective holds resolved plugin settings for runtime.

type ProxmoxBackend added in v0.2.3

type ProxmoxBackend struct {
	Name           string         `yaml:"name" json:"name" honey:"label=Name" validate:"required" mod:"trim"`
	URL            string         `yaml:"url" json:"url" honey:"label=URL" validate:"required,url" mod:"trim"`
	User           string         `yaml:"user,omitempty" json:"user,omitempty" honey:"label=User" validate:"required_without=TokenID" mod:"trim"`
	Password       string         `` /* 132-byte string literal not displayed */
	TokenID        string         `yaml:"token_id,omitempty" json:"token_id,omitempty" honey:"label=Token ID" validate:"required_without=User" mod:"trim"`
	TokenSecret    string         `` /* 141-byte string literal not displayed */
	Insecure       bool           `yaml:"insecure" json:"insecure" honey:"label=Insecure TLS;default=false"`
	ExecMode       string         `yaml:"exec_mode,omitempty" json:"exec_mode,omitempty" honey:"label=Exec mode;enum=ssh|pve|hybrid;enum_as_warning" mod:"trim"`
	DockerDiscover DockerDiscover `yaml:"docker_discover,omitempty" json:"docker_discover,omitempty" honey:"label=Docker Auto-Discover"`
}

ProxmoxBackend configures one Proxmox VE listing.

type SchemaField added in v0.2.8

type SchemaField struct {
	Key           string          `json:"key"`
	Label         string          `json:"label"`
	Type          SchemaFieldType `json:"type"`
	Format        string          `json:"format,omitempty"` // "ip", "url", etc.
	Required      bool            `json:"required,omitempty"`
	Secret        bool            `json:"secret,omitempty"`
	Enum          []string        `json:"enum,omitempty"`
	EnumAsWarning bool            `json:"enum_as_warning,omitempty"`
	Default       any             `json:"default,omitempty"`
	Items         []SchemaField   `json:"items,omitempty"` // For nested array of objects
}

SchemaField describes one editable key in defaults/backends schema.

type SchemaFieldType added in v0.2.8

type SchemaFieldType string

SchemaFieldType describes supported primitive config field kinds.

const (
	SchemaFieldTypeString  SchemaFieldType = "string"
	SchemaFieldTypeBoolean SchemaFieldType = "boolean"
	SchemaFieldTypeInteger SchemaFieldType = "integer"
	SchemaFieldTypeArray   SchemaFieldType = "array"
	SchemaFieldTypeObject  SchemaFieldType = "object"
)

Primitive field kinds for defaults/backends schema and JSON Schema "type".

type TransferConfig added in v0.2.8

type TransferConfig struct {
	PresignedMaxSize        string `yaml:"presigned_max_size,omitempty" json:"presigned_max_size,omitempty" mod:"trim"`
	MultipartThreshold      string `yaml:"multipart_threshold,omitempty" json:"multipart_threshold,omitempty" mod:"trim"`
	PresignedURLTTL         string `yaml:"presigned_url_ttl,omitempty" json:"presigned_url_ttl,omitempty" mod:"trim"`
	PresignedRetryWithAgent *bool  `yaml:"presigned_retry_with_agent,omitempty" json:"presigned_retry_with_agent,omitempty"`
	ForceAgentPath          bool   `yaml:"force_agent_path,omitempty" json:"force_agent_path,omitempty"`
}

TransferConfig controls the agent-transfer code path. Zero values mean "use defaults" — call WithDefaults() to materialize.

func (TransferConfig) WithDefaults added in v0.2.8

func (c TransferConfig) WithDefaults() TransferConfigEffective

WithDefaults returns an effective config, parsing strings to bytes / durations and substituting defaults for unset fields.

type TransferConfigEffective added in v0.2.8

type TransferConfigEffective struct {
	PresignedMaxSizeBytes   int64
	MultipartThresholdBytes int64
	PresignedURLTTL         time.Duration
	PresignedRetryWithAgent bool
	ForceAgentPath          bool
}

TransferConfigEffective is the post-defaults form used by callers.

type TrueNASBackend added in v0.3.0

type TrueNASBackend struct {
	Name             string `yaml:"name" json:"name" honey:"label=Name" validate:"required" mod:"trim"`
	URL              string `yaml:"url" json:"url" honey:"label=URL" validate:"required,url" mod:"trim"`
	Username         string `yaml:"username,omitempty" json:"username,omitempty" honey:"label=API key username (default root)" mod:"trim"`
	APIKey           string `yaml:"api_key" json:"api_key" honey:"label=API key;secret" validate:"required" mod:"trim"`
	Insecure         bool   `yaml:"insecure" json:"insecure" honey:"label=Insecure TLS;default=false"`
	IncludeAppliance *bool  `yaml:"include_appliance,omitempty" json:"include_appliance,omitempty" honey:"label=List appliance;default=true"`
	IncludeVMs       *bool  `yaml:"include_vms,omitempty" json:"include_vms,omitempty" honey:"label=List KVM VMs;default=true"`
	IncludeVirt      *bool  `yaml:"include_virt,omitempty" json:"include_virt,omitempty" honey:"label=List virt instances;default=true"`
	SSHUser          string `yaml:"ssh_user,omitempty" json:"ssh_user,omitempty" honey:"label=SSH user for appliance" mod:"trim"`
}

TrueNASBackend configures one TrueNAS SCALE controller (WebSocket API 25.04+).

type UISchema added in v0.2.8

type UISchema struct {
	TopLevelKeys []string                 `json:"top_level_keys"`
	Defaults     []SchemaField            `json:"defaults"`
	Backends     map[string]BackendSchema `json:"backends"`
	BackendOrder []string                 `json:"backend_order"`
}

UISchema is the lightweight UI-focused schema payload.

func BuildUISchema added in v0.2.8

func BuildUISchema() UISchema

BuildUISchema returns the lightweight schema used by web UI rendering and linting.

type ValidationError added in v0.2.9

type ValidationError struct {
	Path    string `json:"path"`
	Message string `json:"message"`
}

ValidationError represents a single field validation error.

type ValidationErrors added in v0.2.9

type ValidationErrors []ValidationError

ValidationErrors is a slice of ValidationError that serializes to JSON.

func (ValidationErrors) Error added in v0.2.9

func (e ValidationErrors) Error() string

Jump to

Keyboard shortcuts

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