package config import "forge.cadoles.com/Cadoles/emissary/internal/agent/controller/openwrt" type AgentConfig struct { ServerURL InterpolatedString `yaml:"serverUrl"` PrivateKeyPath InterpolatedString `yaml:"privateKeyPath"` ReconciliationInterval InterpolatedInt `yaml:"reconciliationInterval"` Controllers ControllersConfig `yaml:"controllers"` Collectors []ShellCollectorConfig `yaml:"collectors"` } type ShellCollectorConfig struct { Name InterpolatedString `yaml:"name"` Command InterpolatedString `yaml:"command"` Args InterpolatedStringSlice `yaml:"args"` } type ControllersConfig struct { Persistence PersistenceControllerConfig `yaml:"persistence"` Spec SpecControllerConfig `yaml:"spec"` Proxy ProxyControllerConfig `yaml:"proxy"` UCI UCIControllerConfig `yaml:"uci"` App AppControllerConfig `yaml:"app"` SysUpgrade SysUpgradeControllerConfig `yaml:"sysupgrade"` MDNS MDNSControllerConfig `yaml:"mdns"` Status StatusControllerConfig `yaml:"status"` } type PersistenceControllerConfig struct { Enabled InterpolatedBool `yaml:"enabled"` StateFile InterpolatedString `yaml:"stateFile"` } type SpecControllerConfig struct { Enabled InterpolatedBool `yaml:"enabled"` } type ProxyControllerConfig struct { Enabled InterpolatedBool `yaml:"enabled"` } type UCIControllerConfig struct { Enabled InterpolatedBool `yaml:"enabled"` BinPath InterpolatedString `yaml:"binPath"` ConfigBackupFile InterpolatedString `yaml:"configBackupFile"` } type AppControllerConfig struct { Enabled InterpolatedBool `yaml:"enabled"` DataDir InterpolatedString `yaml:"dataDir"` DownloadDir InterpolatedString `yaml:"downloadDir"` } type SysUpgradeControllerConfig struct { Enabled InterpolatedBool `yaml:"enabled"` SysUpgradeCommand InterpolatedStringSlice `yaml:"sysupgradeCommand"` FirmwareVersionCommand InterpolatedStringSlice `yaml:"firmwareVersionCommand"` } type MDNSControllerConfig struct { Enabled InterpolatedBool `yaml:"enabled"` } type StatusControllerConfig struct { Enabled InterpolatedBool `yaml:"enabled"` Address InterpolatedString `yaml:"address"` ClaimURL InterpolatedString `yaml:"claimURL"` AgentURL InterpolatedString `yaml:"agentURL"` } func NewDefaultAgentConfig() AgentConfig { return AgentConfig{ ServerURL: "http://127.0.0.1:3000", PrivateKeyPath: "agent-key.json", ReconciliationInterval: 5, Controllers: ControllersConfig{ Spec: SpecControllerConfig{ Enabled: true, }, Persistence: PersistenceControllerConfig{ Enabled: true, StateFile: "state.json", }, Proxy: ProxyControllerConfig{ Enabled: true, }, UCI: UCIControllerConfig{ Enabled: true, ConfigBackupFile: "uci-backup.conf", BinPath: "uci", }, App: AppControllerConfig{ Enabled: true, DataDir: "apps/data", DownloadDir: "apps/bundles", }, SysUpgrade: SysUpgradeControllerConfig{ Enabled: true, SysUpgradeCommand: InterpolatedStringSlice{"sysupgrade", "--force", "-u", "-v", openwrt.FirmwareFileTemplate}, FirmwareVersionCommand: InterpolatedStringSlice{"sh", "-c", `source /etc/openwrt_release && echo "$DISTRIB_ID-$DISTRIB_RELEASE-$DISTRIB_REVISION"`}, }, MDNS: MDNSControllerConfig{ Enabled: true, }, Status: StatusControllerConfig{ Enabled: true, Address: ":42521", ClaimURL: "http://localhost:3001/claim/%s", AgentURL: "http://localhost:3001/agents/%v", }, }, Collectors: []ShellCollectorConfig{ { Name: "uname", Command: "uname", Args: []string{"-a"}, }, }, } }