133 lines
3.8 KiB
Go
133 lines
3.8 KiB
Go
package sessionbroker
|
|
|
|
import (
|
|
"time"
|
|
|
|
sessioncontracts "github.com/example/remote-access-platform/backend/pkg/contracts/session"
|
|
)
|
|
|
|
type AttachmentRole string
|
|
|
|
const (
|
|
AttachmentRoleController AttachmentRole = "controller"
|
|
)
|
|
|
|
type AttachmentState string
|
|
|
|
const (
|
|
AttachmentStateAttaching AttachmentState = "attaching"
|
|
AttachmentStateActive AttachmentState = "active"
|
|
AttachmentStateDetached AttachmentState = "detached"
|
|
AttachmentStateSuperseded AttachmentState = "superseded"
|
|
AttachmentStateRevoked AttachmentState = "revoked"
|
|
AttachmentStateClosed AttachmentState = "closed"
|
|
)
|
|
|
|
type ResourceTakeoverPolicy string
|
|
|
|
const (
|
|
ResourceTakeoverPolicyTrustedDevice ResourceTakeoverPolicy = "trusted_device"
|
|
ResourceTakeoverPolicySameUser ResourceTakeoverPolicy = "same_user"
|
|
ResourceTakeoverPolicyAdminOnly ResourceTakeoverPolicy = "admin_only"
|
|
)
|
|
|
|
type ResourceClipboardMode string
|
|
|
|
const (
|
|
ResourceClipboardModeDisabled ResourceClipboardMode = "disabled"
|
|
ResourceClipboardModeClientToServer ResourceClipboardMode = "client_to_server"
|
|
ResourceClipboardModeServerToClient ResourceClipboardMode = "server_to_client"
|
|
ResourceClipboardModeBidirectional ResourceClipboardMode = "bidirectional"
|
|
)
|
|
|
|
type ResourceFileTransferMode string
|
|
|
|
const (
|
|
ResourceFileTransferModeDisabled ResourceFileTransferMode = "disabled"
|
|
ResourceFileTransferModeClientToServer ResourceFileTransferMode = "client_to_server"
|
|
ResourceFileTransferModeServerToClient ResourceFileTransferMode = "server_to_client"
|
|
ResourceFileTransferModeBidirectional ResourceFileTransferMode = "bidirectional"
|
|
)
|
|
|
|
type RemoteSession struct {
|
|
ID string
|
|
OrganizationID string
|
|
ResourceID string
|
|
Protocol string
|
|
State sessioncontracts.State
|
|
WorkerID string
|
|
ControllerUserID string
|
|
DetachDeadlineAt *time.Time
|
|
LastHeartbeatAt *time.Time
|
|
TakeoverVersion int
|
|
RenderQualityProfile string
|
|
Metadata []byte
|
|
CreatedAt time.Time
|
|
UpdatedAt time.Time
|
|
}
|
|
|
|
type SessionAttachment struct {
|
|
ID string
|
|
RemoteSessionID string
|
|
UserID string
|
|
DeviceID string
|
|
Role AttachmentRole
|
|
State AttachmentState
|
|
SupersededBy *string
|
|
TakeoverOf *string
|
|
AttachedAt *time.Time
|
|
DetachedAt *time.Time
|
|
LastInputAt *time.Time
|
|
Metadata []byte
|
|
CreatedAt time.Time
|
|
UpdatedAt time.Time
|
|
}
|
|
|
|
type ResourcePolicy struct {
|
|
ResourceID string
|
|
MaxConcurrentSessions int
|
|
TakeoverPolicy ResourceTakeoverPolicy
|
|
RequireTrustedDevice bool
|
|
DetachGracePeriod time.Duration
|
|
ClipboardEnabled bool
|
|
ClipboardMode ResourceClipboardMode
|
|
FileTransferEnabled bool
|
|
FileTransferMode ResourceFileTransferMode
|
|
CreatedAt time.Time
|
|
UpdatedAt time.Time
|
|
}
|
|
|
|
type ResourceRuntimeSpec struct {
|
|
ID string
|
|
OrganizationID string
|
|
Name string
|
|
Address string
|
|
Protocol string
|
|
SecretRef *string
|
|
CertificateVerificationMode string
|
|
Metadata []byte
|
|
}
|
|
|
|
type AuditEvent struct {
|
|
ID string
|
|
ActorUserID *string
|
|
ActorDeviceID *string
|
|
EventType string
|
|
TargetType string
|
|
TargetID string
|
|
RemoteSessionID *string
|
|
Payload []byte
|
|
CreatedAt time.Time
|
|
}
|
|
|
|
const (
|
|
AuditEventSessionStarted = "session_started"
|
|
AuditEventSessionAttached = "session_attached"
|
|
AuditEventSessionDetached = "session_detached"
|
|
AuditEventSessionTakenOver = "session_taken_over"
|
|
AuditEventSessionTerminated = "session_terminated"
|
|
AuditEventSessionFailed = "session_failed"
|
|
AuditEventSecretAccessed = "resource_secret_accessed"
|
|
AuditEventSecretAccessDenied = "resource_secret_access_denied"
|
|
)
|