diff --git a/model/model.go b/model/model.go index c4a9833..14a3e02 100644 --- a/model/model.go +++ b/model/model.go @@ -412,6 +412,18 @@ type ContainerPort struct { Type string `json:"type"` } +// DiscoveredService is a listening service an agent found on its own network (local sockets or an +// opt-in scan of configured subnets). Hammerhead offers these as suggested targets; nothing is +// proxied until an administrator picks one. +type DiscoveredService struct { + Host string `json:"host"` // address to dial, as seen from the agent + Port int `json:"port"` + Proto string `json:"proto"` // "tcp" + Service string `json:"service,omitempty"` // best guess: http, https, ssh, smtp, ftp, mysql, ... (empty = unknown) + Detail string `json:"detail,omitempty"` // banner or Server header, trimmed + Source string `json:"source"` // "local" (listening socket on the agent's host) or "scan" +} + // EdgeReport is what blacktip posts back. type EdgeReport struct { IPs []string `json:"ips"` @@ -455,14 +467,15 @@ type SiteConfig struct { // SiteReport is what bamboo posts back. type SiteReport struct { - PublicKey string `json:"publicKey"` // the agent's WireGuard public key - MailEgress map[string]string `json:"mailEgress"` // egress ID -> "" (listening) or an error - Connected []string `json:"connected"` - Containers []Container `json:"containers"` - Version string `json:"version,omitempty"` - AutoUpdate bool `json:"autoUpdate,omitempty"` - UpdateMsg string `json:"updateMsg,omitempty"` - UpdateID string `json:"updateId,omitempty"` + PublicKey string `json:"publicKey"` // the agent's WireGuard public key + MailEgress map[string]string `json:"mailEgress"` // egress ID -> "" (listening) or an error + Connected []string `json:"connected"` + Containers []Container `json:"containers"` + Discovered []DiscoveredService `json:"discovered,omitempty"` + Version string `json:"version,omitempty"` + AutoUpdate bool `json:"autoUpdate,omitempty"` + UpdateMsg string `json:"updateMsg,omitempty"` + UpdateID string `json:"updateId,omitempty"` // progress of that update, for the dashboard's progress bar and log UpdateStage string `json:"updateStage,omitempty"` UpdatePct int `json:"updatePct,omitempty"`