Documentation ¶
Overview ¶
Package config is responsible for managing configuration variables that are used by the application. These variables are set as environment variables, and are utilised both by the main application and connected containers.
Index ¶
- Variables
- func Home() string
- func Initialize()
- func JsonConfig(path string, config interface{}) error
- func ServerCertificates() ([]byte, []byte, error)
- func YamlConfig(path string, config interface{}) error
- type Builder
- type EndpointConfig
- type EndpointPath
- type HttpConfig
- type MonarchClientConfig
- type MonarchConfig
- type ProjectConfig
- type ProjectConfigBuildArg
- type ProjectConfigCmd
Constants ¶
This section is empty.
Variables ¶
View Source
var ( MainConfig MonarchConfig ClientConfig MonarchClientConfig C2Config = newC2Config() MonarchConfigFile string )
Functions ¶
func Initialize ¶
func Initialize()
func JsonConfig ¶
func ServerCertificates ¶
ServerCertificates returns the PEM-encoded monarch server key pair
func YamlConfig ¶
YamlConfig will unmarshal yaml data into the provided template pointer.
Types ¶
type Builder ¶
type Builder struct { // The directory where the build routine takes place SourceDir string `yaml:"source_dir"` // These are custom build arguments that can be used for building, in addition to default build arguments provided // by the C2 itself. BuildArgs []ProjectConfigBuildArg `yaml:"build_args"` }
type EndpointConfig ¶
type EndpointConfig struct { Paths []EndpointPath Headers map[string]string }
type EndpointPath ¶
type HttpConfig ¶
type HttpConfig struct { LoginEndpoint *EndpointConfig `json:"login_endpoint"` MainEndpoint *EndpointConfig `json:"main_endpoint"` StageEndpoint *EndpointConfig `json:"stage_endpoint"` }
type MonarchClientConfig ¶
type MonarchClientConfig struct { UUID string `json:"uuid"` Name string `json:"name"` RHost string `json:"rhost"` RPort int `json:"rport"` CertPEM []byte `json:"cert_pem"` KeyPEM []byte `json:"key_pem"` CaCertPEM []byte `json:"ca_cert_pem"` Secret []byte `json:"secret"` Challenge string `json:"challenge"` }
type MonarchConfig ¶
type MonarchConfig struct { // Set monarch logging level, which can be one of: debug (1), informational (2), warning (3), fatal (4) LogLevel uint16 // Path to the certificate file used for TLS enabled connections. CertFile string // Path to the key file used for TLS enabled connections. KeyFile string // certificate authority x509 key pair CaCert string CaKey string // The main interface that Monarch will bind to for operations. Interface string // The port to use for the Monarch HTTP listener. HttpPort int // The port to use for the Monarch HTTPS listener. HttpsPort int // RPC port for multiplayer MultiplayerPort int // Port to use for the Monarch TCP listener. TcpPort int // the deadline for socket reads in milliseconds. // This must be set as data sent through sockets is received in chunks TcpDeadline int // A customisable configuration file for each HTTP endpoint HttpConfig string // The folder where agent and c2 repositories are installed to. SessionTimeout int `yaml:"session_timeout_minutes"` InstallDir string // Credentials used by git for installing private packages GitUsername string GitPAT string // Ignore console warning logs IgnoreConsoleWarnings bool MysqlAddress string MysqlUsername string MysqlPassword string }
MonarchConfig is only used by monarch itself, not clients
type ProjectConfig ¶
type ProjectConfig struct { Name string Version string Author string URL string SupportedOSes []string `yaml:"supported_os"` // The command schema defines the possible commands that can be used with the agent. // If the agent doesn't use commands to operate, then this configuration parameter is not necessary. // On installation of the agent, the command schema is used by the builder when an operator requests to // view commands. CmdSchema []ProjectConfigCmd `yaml:"cmd_schema"` Builder Builder `yaml:"builder"` }
type ProjectConfigBuildArg ¶
type ProjectConfigCmd ¶
type ProjectConfigCmd struct { Name string Usage string MinArgs int32 `yaml:"min_args"` MaxArgs int32 `yaml:"max_args"` // Whether NArgs represents the minimum arg count or the exact // Specifies whether this command requires admin privileges or not Admin bool // If opcode is specified, the provided integer opcode is used in place of the command name, // promoting better OpSec Opcode int32 DescriptionShort string `yaml:"description_short"` DescriptionLong string `yaml:"description_long"` }
Click to show internal directories.
Click to hide internal directories.