Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func StorageBasePath ¶
func StorageBasePath() string
Types ¶
type Configuration ¶
type Configuration struct {
WebServer struct {
Address string `toml:"address" default:":8080" validate:"required"` // Listen address for the web application server e.g. ":8080" or "0.0.0.0:8080"
TLSDir string `toml:"tls_dir" default:""` // Directory containing a crt and a key file for TLS. Leave empty to use HTTP instead of HTTPS.
ReloadTemplatesOnEachRender bool `toml:"reload_templates_on_each_render" default:"false"` // For development purposes. If true, templates are reloaded from disk on each render.
RedirectServerAddresses []string `toml:"redirect_server_addresses" default:"[]" validate:"dive,required"` // List of addresses ("host:port" or ":port") to which HTTP requests should be redirected to HTTPS. If your web app is on ":443", you might want to redirect ":80" here.
PublicURL string `toml:"public_url" default:""` // Optional externally reachable base URL used inside containers (e.g. "https://koth.cyber.lab")
} `toml:"web_server"` // Web server configuration
Database struct {
File string `toml:"file" default:"koth.db" validate:"required"` // Path to the MySQL database file
} `toml:"database"` // Database configuration
LDAP struct {
Address string `toml:"address" default:"" validate:"required"` // LDAP server address (e.g. "ldaps://domain.cyber.lab:636")
DomainSLD string `toml:"domain_sld" default:"" validate:"required"` // LDAP domain second-level domain (e.g. "cyber" for "domain.cyber.lab")
DomainTLD string `toml:"domain_tld" default:"" validate:"required"` // LDAP domain top-level domain (e.g. "lab" for "domain.cyber.lab")
AccountsCN string `toml:"accounts_cn" default:"accounts" validate:"required"` // LDAP container name for accounts (usually "accounts")
UsersCN string `toml:"users_cn" default:"users" validate:"required"` // LDAP container name for users (usually "users")
GroupsCN string `toml:"groups_cn" default:"groups" validate:"required"` // LDAP container name for groups (usually "groups")
AdminGroups []string `toml:"admin_groups" default:"[\"admins\"]" validate:"required"` // LDAP groups whose members should have admin access to the web app
UserGroups []string `toml:"user_groups" default:"[\"ipausers\"]" validate:"required"` // LDAP groups whose members should have user access to the web app
} `toml:"ldap"` // LDAP configuration
Proxmox struct {
Hostname string `toml:"hostname" default:"proxmox.local" validate:"required"` // Proxmox VE server hostname or IP address (e.g. "proxmox.cyber.lab")
Port string `toml:"port" default:"8006" validate:"required"` // Proxmox VE API port (usually "8006")
TokenID string `toml:"token_id" default:"" validate:"required"` // Proxmox VE API token ID (e.g. "laas-api-token-id")
Secret string `toml:"secret" default:"" validate:"required"` // Proxmox VE API token secret
Username string `toml:"username" default:""` // Proxmox VE username (with realm) for ticket-based console auth, e.g. "root@pam"
Password string `toml:"password" default:""` // Proxmox VE password for ticket-based console auth
Testing struct {
Enabled bool `toml:"enabled" default:"false"` // Enable Proxmox VE integration testing mode
SubnetCIDR string `toml:"subnet_cidr" default:"10.255.0.0/16"` // Subnet CIDR to use for testing VMs
Storage string `toml:"storage" default:"team"` // Proxmox VE storage to use for testing VMs
UbuntuTemplate string `toml:"ubuntu_template" default:"isos-ct_templates:vztmpl/ubuntu-25.04-standard_25.04-1.1_amd64.tar.zst"` // Proxmox VE container template to use for testing VMs
Gateway string `toml:"gateway" default:"10.0.0.1"` // Gateway IP for testing VMs
DNS string `toml:"dns" default:"10.0.0.2"` // DNS server IP for testing VMs
SearchDomain string `toml:"search_domain" default:"cyber.lab"` // Search domain for testing VMs
} `toml:"testing"` // Proxmox VE integration testing configuration
} `toml:"proxmox"` // Proxmox VE integration configuration
Storage struct {
BasePath string `toml:"base_path" default:"./koth_live_data" validate:"required"` // Root directory where uploaded competition packages are stored
} `toml:"storage"`
Network NetworkConfig `toml:"network"`
ContainerRestrictions ContainerRestrictionsConfig `toml:"container_restrictions"`
}
var Config Configuration
type ContainerRestrictionsConfig ¶
type ContainerRestrictionsConfig struct {
AllowedLXCTemplates []string `toml:"allowed_lxc_templates" default:"[]"`
AllowedStoragePools []string `toml:"allowed_storage_pools" default:"[]"`
MaxCPUCores int `toml:"max_cpu_cores" default:"4" validate:"min=1"`
MaxMemoryMB int `toml:"max_memory_mb" default:"8192" validate:"min=1"`
MaxDiskMB int `toml:"max_disk_mb" default:"32768" validate:"min=1"`
}
type NetworkConfig ¶
type NetworkConfig struct {
PoolCIDR string `toml:"pool_cidr" default:"10.0.0.0/8" validate:"required"`
CompetitionSubnetPrefix int `toml:"competition_subnet_prefix" default:"16" validate:"min=8,max=30"`
TeamSubnetPrefix int `toml:"team_subnet_prefix" default:"24" validate:"min=8,max=30"`
ContainerCIDR int `toml:"container_cidr" default:"8" validate:"min=1,max=30"`
ContainerGateway string `toml:"container_gateway" default:"10.0.0.1" validate:"required,ipv4"`
ContainerNameserver string `toml:"container_nameserver" default:"10.0.0.2" validate:"required,ipv4"`
ContainerSearchDomain string `toml:"container_search_domain" default:"cyber.lab" validate:"required"`
// contains filtered or unexported fields
}
func (*NetworkConfig) ParsedPool ¶
func (n *NetworkConfig) ParsedPool() *net.IPNet
Click to show internal directories.
Click to hide internal directories.