models

package
v0.0.0-...-b33ff70 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 22, 2023 License: MIT Imports: 14 Imported by: 0

Documentation

Index

Constants

View Source
const (
	JobStatusSuccessful = "successful"
	JobStatusRunning    = "running"
	JobStatusFailed     = "failed"
	JobStatusUnknown    = "unknown"

	ChannelStdout = "stdout"
	ChannelStderr = "stderr"
)
View Source
const (
	ZeroHost       = "0.0.0.0"
	LocalHost      = "127.0.0.1"
	ProtocolTCP    = "tcp"
	ProtocolUDP    = "udp"
	ProtocolTCPUDP = "tcp+udp"
)
View Source
const (
	IDKey = "id"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Capabilities

type Capabilities struct {
	ServerVersion     string
	MonitoringVersion int
}

type Job

type Job struct {
	JID          string     `json:"jid"`
	Status       string     `json:"status"`
	FinishedAt   *time.Time `json:"finished_at"`
	ClientID     string     `json:"client_id"`
	ClientName   string     `json:"client_name"`
	Command      string     `json:"command"`
	Cwd          string     `json:"cwd"`
	Interpreter  string     `json:"interpreter"`
	PID          *int       `json:"pid"`
	StartedAt    time.Time  `json:"started_at"`
	CreatedBy    string     `json:"created_by"`
	TimeoutSec   int        `json:"timeout_sec"`
	MultiJobID   *string    `json:"multi_job_id"`
	ScheduleID   *string    `json:"schedule_id"`
	Error        string     `json:"error"`
	Result       *JobResult `json:"result"`
	IsSudo       bool       `json:"is_sudo"`
	IsScript     bool       `json:"is_script"`
	StreamResult bool       `json:"stream_result"`
}

func (Job) LogPrefix

func (j Job) LogPrefix() string

type JobClientTags

type JobClientTags struct {
	Tags     []string `json:"tags"`
	Operator string   `json:"operator"`
}

func (*JobClientTags) String

func (jct *JobClientTags) String() string

TODO: add some unit tests. not high priority but good to get done.

type JobResult

type JobResult struct {
	StdOut  string `json:"stdout"`
	StdErr  string `json:"stderr"`
	Summary string `json:"summary"`
}

type Measurement

type Measurement struct {
	ClientID           string    `json:"client_id" db:"client_id"`
	Timestamp          time.Time `json:"timestamp" db:"timestamp"`
	CPUUsagePercent    float64   `json:"cpu_usage_percent" db:"cpu_usage_percent"`
	MemoryUsagePercent float64   `json:"memory_usage_percent" db:"memory_usage_percent"`
	IoUsagePercent     float64   `json:"io_usage_percent" db:"io_usage_percent"`
	Processes          string    `json:"processes" db:"processes"`
	Mountpoints        string    `json:"mountpoints" db:"mountpoints"`
	NetLan             *NetBytes `json:"net_lan" db:"net_lan"`
	NetWan             *NetBytes `json:"net_wan" db:"net_wan"`
}

type MultiJob

type MultiJob struct {
	MultiJobSummary
	ClientIDs   []string       `json:"client_ids"`
	GroupIDs    []string       `json:"group_ids"`
	ClientTags  *JobClientTags `json:"tags"`
	Command     string         `json:"command"`
	Cwd         string         `json:"cwd"`
	Interpreter string         `json:"interpreter"`
	TimeoutSec  int            `json:"timeout_sec"`
	Concurrent  bool           `json:"concurrent"`
	AbortOnErr  bool           `json:"abort_on_err"`
	Jobs        []*Job         `json:"jobs"`
	IsSudo      bool           `json:"is_sudo"`
	IsScript    bool           `json:"is_script"`
}

TODO: check that ClientTags is populated where required

type MultiJobResult

type MultiJobResult struct {
	Status string     `json:"status"`
	StdErr string     `json:"stderr"`
	Result *JobResult `json:"result"`
}

type MultiJobSummary

type MultiJobSummary struct {
	JID        string    `json:"jid"`
	StartedAt  time.Time `json:"started_at"`
	CreatedBy  string    `json:"created_by"`
	ScheduleID *string   `json:"schedule_id"`
}

type NetBytes

type NetBytes struct {
	In  int `json:"in"`
	Out int `json:"out"`
}

type NetworkCard

type NetworkCard struct {
	Name     string `json:"name"`
	MaxSpeed int    `json:"max_speed"`
}

func DecodeCard

func DecodeCard(sCard []string) (*NetworkCard, error)

type Remote

type Remote struct {
	Name               string        `json:"name"`
	Protocol           string        `json:"protocol"`
	LocalHost          string        `json:"lhost"`
	LocalPort          string        `json:"lport"`
	LocalPortRandom    bool          `json:"lport_random"`
	RemoteHost         string        `json:"rhost"`
	RemotePort         string        `json:"rport"`
	Scheme             *string       `json:"scheme"`
	ACL                *string       `json:"acl"` // string representation of Tunnel.TunnelACL field
	IdleTimeoutMinutes int           `json:"idle_timeout_minutes"`
	AutoClose          time.Duration `json:"auto_close"`
	HTTPProxy          bool          `json:"http_proxy"`
	HostHeader         string        `json:"host_header"`
	AuthUser           string        `json:"auth_user"`
	AuthPassword       string        `json:"auth_password"`
	TunnelURL          string        `json:"tunnel_url"`
}

TODO(m-terel): Remote should be only used for parsing command args and URL query params. Current Remote is kind of a Tunnel model. Refactor to use separate models for representation and business logic.

func NewRemote

func NewRemote(s string) (*Remote, error)

func (*Remote) EqualACL

func (r *Remote) EqualACL(acl *string) bool

func (*Remote) Equals

func (r *Remote) Equals(other *Remote) bool

func (*Remote) GetTunnelDomains

func (r *Remote) GetTunnelDomains() (subdomain string, basedomain string, err error)

func (*Remote) HasSubdomainTunnel

func (r *Remote) HasSubdomainTunnel() bool

func (*Remote) IsLocalSpecified

func (r *Remote) IsLocalSpecified() bool

func (*Remote) IsProtocol

func (r *Remote) IsProtocol(other string) bool

IsProtocol compares remote's protocol with other, it returns true when tcp+udp is compared against either tcp or udp

func (*Remote) Local

func (r *Remote) Local() string

func (*Remote) NewDownstreamProxyURL

func (r *Remote) NewDownstreamProxyURL(subdomain string, basedomain string, port string) (proxyURL string)

func (*Remote) Remote

func (r *Remote) Remote() string

func (Remote) String

func (r Remote) String() string

implement Stringer

type UpdateSummary

type UpdateSummary struct {
	Title            string `json:"title"`
	Description      string `json:"description"`
	RebootRequired   bool   `json:"reboot_required"`
	IsSecurityUpdate bool   `json:"is_security_update"`
}

type UpdatesStatus

type UpdatesStatus struct {
	Refreshed                time.Time       `json:"refreshed"`
	UpdatesAvailable         int             `json:"updates_available"`
	SecurityUpdatesAvailable int             `json:"security_updates_available"`
	UpdateSummaries          []UpdateSummary `json:"update_summaries"`
	RebootPending            bool            `json:"reboot_pending"`
	Error                    string          `json:"error,omitempty"`
	Hint                     string          `json:"hint,omitempty"`
}

type UploadResponse

type UploadResponse struct {
	UploadResponseShort
	Message string `json:"message"`
	Status  string `json:"status"`
}

type UploadResponseShort

type UploadResponseShort struct {
	ID        string `json:"uuid"`
	Filepath  string `json:"filepath"`
	SizeBytes int64  `json:"size"`
}

type UploadedFile

type UploadedFile struct {
	ID                   string
	SourceFilePath       string
	DestinationPath      string
	DestinationFileMode  os.FileMode
	DestinationFileOwner string
	DestinationFileGroup string
	ForceWrite           bool
	Sync                 bool
	Md5Checksum          []byte
}

func (*UploadedFile) FromBytes

func (uf *UploadedFile) FromBytes(rawData []byte) error

func (*UploadedFile) FromMultipartRequest

func (uf *UploadedFile) FromMultipartRequest(req *http.Request) error

func (*UploadedFile) ToBytes

func (uf *UploadedFile) ToBytes() (data []byte, err error)

func (UploadedFile) Validate

func (uf UploadedFile) Validate() error

func (UploadedFile) ValidateDestinationPath

func (uf UploadedFile) ValidateDestinationPath(globPatters []string, log *logger.Logger) error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL