135 lines
4.3 KiB
Go
135 lines
4.3 KiB
Go
package client
|
|
|
|
import "time"
|
|
|
|
type Org struct {
|
|
ID string `json:"id"`
|
|
Name string `json:"name"`
|
|
AllowLocal bool `json:"allowLocal"`
|
|
}
|
|
|
|
type Edge struct {
|
|
ID string `json:"id,omitempty"`
|
|
Name string `json:"name"`
|
|
IPs []string `json:"ips,omitempty"`
|
|
Online bool `json:"online,omitempty"`
|
|
TunnelAddr string `json:"tunnelAddr,omitempty"`
|
|
Token string `json:"token,omitempty"`
|
|
OrgIDs []string `json:"orgIds"`
|
|
Version string `json:"version,omitempty"`
|
|
}
|
|
|
|
type Site struct {
|
|
ID string `json:"id"`
|
|
OrgID string `json:"orgId"`
|
|
Name string `json:"name"`
|
|
Token string `json:"token,omitempty"`
|
|
Connected []string `json:"connected"`
|
|
LastSeen time.Time `json:"lastSeen"`
|
|
Local bool `json:"local"`
|
|
EdgeID string `json:"edgeId,omitempty"`
|
|
Tags []string `json:"tags,omitempty"`
|
|
TunnelIP string `json:"tunnelIp,omitempty"`
|
|
Version string `json:"version,omitempty"`
|
|
}
|
|
|
|
type Domain struct {
|
|
ID string `json:"id,omitempty"`
|
|
OrgID string `json:"orgId,omitempty"`
|
|
Name string `json:"name"`
|
|
EdgeID string `json:"edgeId"`
|
|
IP string `json:"ip"`
|
|
Note string `json:"note"`
|
|
}
|
|
|
|
type Target struct {
|
|
SiteID string `json:"siteId"`
|
|
Host string `json:"host"`
|
|
Port int `json:"port"`
|
|
}
|
|
|
|
type Auth struct {
|
|
SSO bool `json:"sso"`
|
|
Password bool `json:"password"`
|
|
Pin bool `json:"pin"`
|
|
Email bool `json:"email"`
|
|
AllowedRoles []string `json:"allowedRoles"`
|
|
AllowedUsers []string `json:"allowedUsers"`
|
|
AllowedMails []string `json:"allowedMails"`
|
|
SessionHours int `json:"sessionHours"`
|
|
}
|
|
|
|
type Rule struct {
|
|
Action string `json:"action"`
|
|
Match string `json:"match"`
|
|
Value string `json:"value"`
|
|
}
|
|
|
|
// Port is what the dashboard calls a port (the server's "mapping"): a public port or hostname
|
|
// on an edge, forwarded to targets. NewPassword and NewPin are write-only: nil keeps, "" removes.
|
|
type Port struct {
|
|
ID string `json:"id,omitempty"`
|
|
OrgID string `json:"orgId,omitempty"`
|
|
Name string `json:"name"`
|
|
Proto string `json:"proto"`
|
|
EdgeID string `json:"edgeId"`
|
|
BindIP string `json:"bindIp"`
|
|
Port int `json:"port"`
|
|
PortEnd int `json:"portEnd,omitempty"`
|
|
Hostname string `json:"hostname,omitempty"`
|
|
Targets []Target `json:"targets"`
|
|
Enabled bool `json:"enabled"`
|
|
Tags []string `json:"tags,omitempty"`
|
|
ProxyProtocol string `json:"proxyProtocol,omitempty"`
|
|
RedirectTo string `json:"redirectTo,omitempty"`
|
|
RedirectPermanent bool `json:"redirectPermanent,omitempty"`
|
|
RedirectKeepPath bool `json:"redirectKeepPath,omitempty"`
|
|
Auth Auth `json:"auth"`
|
|
AuthEpoch int64 `json:"authEpoch,omitempty"`
|
|
Rules []Rule `json:"rules"`
|
|
RedirectHTTP bool `json:"redirectHttp"`
|
|
BackendHTTPS bool `json:"backendHttps"`
|
|
RewriteHost string `json:"rewriteHost"`
|
|
HealthPath string `json:"healthPath"`
|
|
HealthSeconds int `json:"healthSeconds"`
|
|
|
|
NewPassword *string `json:"newPassword,omitempty"`
|
|
NewPin *string `json:"newPin,omitempty"`
|
|
}
|
|
|
|
type Channel struct {
|
|
ID string `json:"id,omitempty"`
|
|
OrgID string `json:"orgId,omitempty"`
|
|
Name string `json:"name"`
|
|
Kind string `json:"kind"` // email, webhook or sandbar
|
|
Target string `json:"target"`
|
|
Format string `json:"format,omitempty"`
|
|
Token string `json:"token,omitempty"`
|
|
Policy string `json:"policy,omitempty"`
|
|
AllowPrivate bool `json:"allowPrivate"`
|
|
Enabled bool `json:"enabled"`
|
|
}
|
|
|
|
type AlertRow struct {
|
|
Key string `json:"key"`
|
|
Kind string `json:"kind"`
|
|
Name string `json:"name"`
|
|
Message string `json:"message"`
|
|
Since time.Time `json:"since"`
|
|
Fired bool `json:"fired"`
|
|
}
|
|
|
|
// Alerts is the alerts overview of an organization (or, with the server flag, of the server).
|
|
type Alerts struct {
|
|
Channels []Channel `json:"channels"`
|
|
Active []AlertRow `json:"active"`
|
|
Settings map[string]int `json:"settings"`
|
|
}
|
|
|
|
type State struct {
|
|
Edges []Edge `json:"edges"`
|
|
Sites []Site `json:"sites"`
|
|
Domains []Domain `json:"domains"`
|
|
Mappings []Port `json:"mappings"`
|
|
}
|