@@ -0,0 +1,119 @@
|
||||
package model
|
||||
|
||||
import "time"
|
||||
|
||||
const ProtocolVersion = 1
|
||||
|
||||
type OIDCConfig struct {
|
||||
Issuer string `json:"issuer"`
|
||||
ClientID string `json:"client_id"`
|
||||
ClientSecret string `json:"client_secret"`
|
||||
RedirectURL string `json:"redirect_url"`
|
||||
AdminGroups []string `json:"admin_groups,omitempty"`
|
||||
SecureCookie bool `json:"secure_cookie"`
|
||||
}
|
||||
|
||||
type CleanupPolicy struct {
|
||||
Enabled bool `json:"enabled"`
|
||||
GraceSeconds int `json:"grace_seconds"`
|
||||
PollSeconds int `json:"poll_seconds"`
|
||||
RetrySeconds int `json:"retry_seconds"`
|
||||
DryRun bool `json:"dry_run"`
|
||||
ExcludeUsers []string `json:"exclude_users,omitempty"`
|
||||
ExcludeSIDs []string `json:"exclude_sids,omitempty"`
|
||||
AllowedProfileRoots []string `json:"allowed_profile_roots,omitempty"`
|
||||
}
|
||||
|
||||
type ShortcutSpec struct {
|
||||
Target string `json:"target"`
|
||||
Arguments string `json:"arguments,omitempty"`
|
||||
WorkingDirectory string `json:"working_directory,omitempty"`
|
||||
IconLocation string `json:"icon_location,omitempty"`
|
||||
Description string `json:"description,omitempty"`
|
||||
}
|
||||
|
||||
type TemplateItem struct {
|
||||
ID string `json:"id"`
|
||||
Kind string `json:"kind"` // file, directory, url, shortcut
|
||||
Target string `json:"target"`
|
||||
Source string `json:"source,omitempty"`
|
||||
Content string `json:"content,omitempty"`
|
||||
ContentBase64 string `json:"content_base64,omitempty"`
|
||||
URL string `json:"url,omitempty"`
|
||||
Shortcut *ShortcutSpec `json:"shortcut,omitempty"`
|
||||
Overwrite bool `json:"overwrite"`
|
||||
}
|
||||
|
||||
type Policy struct {
|
||||
Revision string `json:"revision"`
|
||||
UpdatedAt time.Time `json:"updated_at"`
|
||||
Cleanup CleanupPolicy `json:"cleanup"`
|
||||
Templates []TemplateItem `json:"templates,omitempty"`
|
||||
}
|
||||
|
||||
type Session struct {
|
||||
ID uint32 `json:"id"`
|
||||
State string `json:"state"`
|
||||
User string `json:"user,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
SID string `json:"sid,omitempty"`
|
||||
ClientName string `json:"client_name,omitempty"`
|
||||
StationName string `json:"station_name,omitempty"`
|
||||
}
|
||||
|
||||
type ServerInfo struct {
|
||||
Hostname string `json:"hostname"`
|
||||
OS string `json:"os"`
|
||||
Version string `json:"version,omitempty"`
|
||||
Build string `json:"build,omitempty"`
|
||||
UptimeSeconds uint64 `json:"uptime_seconds"`
|
||||
MemoryTotal uint64 `json:"memory_total"`
|
||||
MemoryAvailable uint64 `json:"memory_available"`
|
||||
}
|
||||
|
||||
type CleanupJob struct {
|
||||
SID string `json:"sid"`
|
||||
User string `json:"user"`
|
||||
ProfilePath string `json:"profile_path"`
|
||||
DueAt time.Time `json:"due_at"`
|
||||
Attempts int `json:"attempts"`
|
||||
LastError string `json:"last_error,omitempty"`
|
||||
}
|
||||
|
||||
type AgentSnapshot struct {
|
||||
ProtocolVersion int `json:"protocol_version"`
|
||||
AgentID string `json:"agent_id"`
|
||||
Server ServerInfo `json:"server"`
|
||||
Sessions []Session `json:"sessions"`
|
||||
PendingCleanup []CleanupJob `json:"pending_cleanup,omitempty"`
|
||||
PolicyRevision string `json:"policy_revision"`
|
||||
AgentVersion string `json:"agent_version"`
|
||||
Time time.Time `json:"time"`
|
||||
}
|
||||
|
||||
type AgentRecord struct {
|
||||
ID string `json:"id"`
|
||||
Name string `json:"name"`
|
||||
MachineID string `json:"machine_id"`
|
||||
TokenHash string `json:"token_hash"`
|
||||
EnrolledAt time.Time `json:"enrolled_at"`
|
||||
LastSeen time.Time `json:"last_seen"`
|
||||
Snapshot AgentSnapshot `json:"snapshot"`
|
||||
DesiredPolicy *Policy `json:"desired_policy,omitempty"`
|
||||
}
|
||||
|
||||
type EnrollRequest struct {
|
||||
EnrollmentToken string `json:"enrollment_token"`
|
||||
Name string `json:"name"`
|
||||
MachineID string `json:"machine_id"`
|
||||
}
|
||||
|
||||
type EnrollResponse struct {
|
||||
AgentID string `json:"agent_id"`
|
||||
Token string `json:"token"`
|
||||
}
|
||||
|
||||
type HeartbeatResponse struct {
|
||||
DesiredPolicy *Policy `json:"desired_policy,omitempty"`
|
||||
ServerTime time.Time `json:"server_time"`
|
||||
}
|
||||
Reference in New Issue
Block a user