74 lines
3.7 KiB
Go
74 lines
3.7 KiB
Go
package awsserversdk
|
|
|
|
import (
|
|
"context"
|
|
"net/http"
|
|
)
|
|
|
|
type AgentService struct{ client *Client }
|
|
type AgentStatus map[string]any
|
|
type AgentCommandRequest struct {
|
|
Action string `json:"action"`
|
|
Service string `json:"service,omitempty"`
|
|
}
|
|
type MOTDPolicyRequest struct {
|
|
Mode string `json:"mode"`
|
|
Template string `json:"template,omitempty"`
|
|
}
|
|
type SSHAuditPolicyRequest struct {
|
|
Mode string `json:"mode"`
|
|
}
|
|
|
|
func (s *AgentService) Get(ctx context.Context, region, instanceID string) (AgentStatus, error) {
|
|
result := AgentStatus{}
|
|
err := s.client.do(ctx, http.MethodGet, instancesPath(region, instanceID)+"/agent", nil, &result, "")
|
|
return result, err
|
|
}
|
|
func (s *AgentService) GetTraffic(ctx context.Context, region, instanceID string) (map[string]any, error) {
|
|
result := map[string]any{}
|
|
err := s.client.do(ctx, http.MethodGet, instancesPath(region, instanceID)+"/agent/traffic", nil, &result, "")
|
|
return result, err
|
|
}
|
|
func (s *AgentService) GetMOTD(ctx context.Context, region, instanceID string) (map[string]any, error) {
|
|
result := map[string]any{}
|
|
err := s.client.do(ctx, http.MethodGet, instancesPath(region, instanceID)+"/agent/motd", nil, &result, "")
|
|
return result, err
|
|
}
|
|
func (s *AgentService) UpdateMOTD(ctx context.Context, region, instanceID string, input MOTDPolicyRequest) (map[string]any, error) {
|
|
result := map[string]any{}
|
|
err := s.client.do(ctx, http.MethodPatch, instancesPath(region, instanceID)+"/agent/motd", input, &result, newID())
|
|
return result, err
|
|
}
|
|
func (s *AgentService) GetSSHAudit(ctx context.Context, region, instanceID string) (map[string]any, error) {
|
|
result := map[string]any{}
|
|
err := s.client.do(ctx, http.MethodGet, instancesPath(region, instanceID)+"/agent/ssh-audit", nil, &result, "")
|
|
return result, err
|
|
}
|
|
func (s *AgentService) UpdateSSHAudit(ctx context.Context, region, instanceID string, input SSHAuditPolicyRequest) (map[string]any, error) {
|
|
result := map[string]any{}
|
|
err := s.client.do(ctx, http.MethodPatch, instancesPath(region, instanceID)+"/agent/ssh-audit", input, &result, newID())
|
|
return result, err
|
|
}
|
|
func (s *AgentService) ListSSHConnections(ctx context.Context, region, instanceID string) (map[string]any, error) {
|
|
result := map[string]any{}
|
|
err := s.client.do(ctx, http.MethodGet, instancesPath(region, instanceID)+"/agent/ssh-connections", nil, &result, "")
|
|
return result, err
|
|
}
|
|
func (s *AgentService) Command(ctx context.Context, region, instanceID string, input AgentCommandRequest, options ...RequestOption) (*Operation, error) {
|
|
return (&InstancesService{client: s.client}).operation(ctx, http.MethodPost, instancesPath(region, instanceID)+"/agent/commands", input, options...)
|
|
}
|
|
func (s *AgentService) GetCommand(ctx context.Context, region, instanceID, commandID string) (map[string]any, error) {
|
|
result := map[string]any{}
|
|
err := s.client.do(ctx, http.MethodGet, instancesPath(region, instanceID)+"/agent/commands/"+escaped(commandID), nil, &result, "")
|
|
return result, err
|
|
}
|
|
func (s *AgentService) Upgrade(ctx context.Context, region, instanceID, version string, options ...RequestOption) (*Operation, error) {
|
|
return (&InstancesService{client: s.client}).operation(ctx, http.MethodPost, instancesPath(region, instanceID)+"/agent/upgrade", map[string]string{"version": version}, options...)
|
|
}
|
|
func (s *AgentService) RetryInstall(ctx context.Context, region, instanceID string, options ...RequestOption) (*Operation, error) {
|
|
return (&InstancesService{client: s.client}).operation(ctx, http.MethodPost, instancesPath(region, instanceID)+"/agent/retry-install", map[string]any{}, options...)
|
|
}
|
|
func (s *AgentService) Revoke(ctx context.Context, region, instanceID string) error {
|
|
return s.client.do(ctx, http.MethodPost, instancesPath(region, instanceID)+"/agent/revoke", map[string]any{}, nil, newID())
|
|
}
|