Documentation ¶
Index ¶
- Constants
- type ActiveSession
- type Announcement
- type AnnouncementShort
- type AuthClaims
- type Billing
- func (b *Billing) HasCurrentPeriodEnd() bool
- func (b *Billing) HasCutomer() bool
- func (b *Billing) HasSubscription() bool
- func (b *Billing) IsActive() bool
- func (b *Billing) IsNil() bool
- func (b *Billing) SetCurrentPeriodEnd(end int64)
- func (b *Billing) SetCustomer(id string)
- func (b *Billing) SetSubscription(id string, status BillingStatus)
- func (b *Billing) UpdateBillingStatus(status BillingStatus)
- type BillingEvaluation
- type BillingStatus
- type ConnectedDevice
- type Device
- type DeviceAuth
- type DeviceAuthClaims
- type DeviceAuthRequest
- type DeviceAuthResponse
- type DeviceIdentity
- type DeviceInfo
- type DevicePosition
- type DeviceRemoved
- type DeviceStatus
- type Endpoints
- type Filter
- type FirewallFilter
- type FirewallRule
- type FirewallRuleFields
- type FirewallRuleUpdate
- type ID
- type Info
- type License
- type Member
- type MqttACLQuery
- type MqttAuthQuery
- type MqttClientEvent
- type MqttEvent
- type Namespace
- type NamespaceSettings
- type OperatorParams
- type PrivateKey
- type PropertyParams
- type PublicKey
- type PublicKeyAuthRequest
- type PublicKeyAuthResponse
- type PublicKeyFields
- type PublicKeyFilter
- type PublicKeyUpdate
- type RecordedSession
- type Session
- type SessionPosition
- type SessionRecorded
- type Stats
- type Status
- type SystemInfo
- type SystemInfoEndpoints
- type Tenant
- type UID
- type User
- type UserAuthClaims
- type UserAuthRequest
- type UserAuthResponse
- type UserData
- type UserPassword
- type UserTokenRecover
- type Username
Constants ¶
const ( MqttClientConnectedEventType = "client_connected" MqttClientDisconnectedEventType = "client_disconnected" )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ActiveSession ¶
type Announcement ¶ added in v0.10.10
type AnnouncementShort ¶ added in v0.10.10
type AuthClaims ¶ added in v0.2.0
type AuthClaims struct {
Claims string `json:"claims"`
}
type Billing ¶ added in v0.8.0
type Billing struct { // Active indicates if the subscription is active. // IT IS THE SOURCE OF TRUTH THAT DEFINES WHETHER A SUBSCRIPTION IS ACTIVE OR NOT and change due to the status of // the subscription. // // A subscription is active if its status is `active`, `trailing`, `past_due` or `to_cancel_at_end_of_period`. // `past_due` is a temporary status that occurs when a payment to renew the subscription fails, but the subscription // has not been canceled yet. // `to_cancel_at_end_of_period` is a custom status used by this package to indicate that the subscription is set to // cancel at the end of the period. // A subscription is not active if its status is `incomplete`, `incomplete_expired`, `canceled`, `unpaid` or `paused`. // TODO: evaluate if `paused` should be considered active. Active bool `json:"active" bson:"active"` // Status is the current status of the subscription. Status BillingStatus `json:"status" bson:"status"` // Customer is the ID of the customer the subscription belongs to. // Customer string `json:"customer" bson:"customer"` CustomerID string `json:"customer_id" bson:"customer_id"` // SubscriptionID is the ID of the subscription. SubscriptionID string `json:"subscription_id" bson:"subscription_id"` // CurrentPeriodEnd is the end of the current period. CurrentPeriodEnd int64 `json:"current_period_end" bson:"current_period_end"` // CreatedAt is the time at which this billing was created. // It must follow the RFC 3339 format. CreatedAt string `json:"created_at" bson:"created_at"` // UpdatedAt is the time at which this billing was last updated. // It must follow the RFC 3339 format. UpdatedAt string `json:"updated_at" bson:"updated_at"` }
Billing contains information about the ShellHub's subscription.
func NewBilling ¶ added in v0.12.4
func NewBilling(status BillingStatus, customer, subscription string, currentPeridoEnd int64) *Billing
func (*Billing) HasCurrentPeriodEnd ¶ added in v0.12.4
func (*Billing) HasCutomer ¶ added in v0.12.4
func (*Billing) HasSubscription ¶ added in v0.12.4
func (*Billing) SetCurrentPeriodEnd ¶ added in v0.12.4
func (*Billing) SetCustomer ¶ added in v0.12.4
func (*Billing) SetSubscription ¶ added in v0.12.4
func (b *Billing) SetSubscription(id string, status BillingStatus)
func (*Billing) UpdateBillingStatus ¶ added in v0.12.4
func (b *Billing) UpdateBillingStatus(status BillingStatus)
UpdateBillingStatus updates the status of the billing.
type BillingEvaluation ¶ added in v0.12.4
type BillingEvaluation struct { // CanAccept indicates if the namespace can accept a new device. CanAccept bool `json:"can_accept"` // CanConnect indicates if the namespace can create a new connection SSH. CanConnect bool `json:"can_connect"` }
BillingEvaluation contains information about the billing evaluation of acceptance and connection. It is used to evaluate if a device can be accepted or a connection SSH can be created. Its idea is simplify the check the state of the namespace when related to billing.
type BillingStatus ¶ added in v0.12.4
type BillingStatus string
BillingStatus represents the status of a subscription.
https://stripe.com/docs/api/subscriptions/object#subscription_object-status https://stripe.com/docs/billing/subscriptions/overview#subscription-lifecycle
const ( // BillingStatusInactive represents inactive status. BillingStatusInactive BillingStatus = "inactive" // BillingStatusActive represents active status without any issues. BillingStatusActive BillingStatus = "active" // BillingStatusTrialing represents active status without any issues, but the subscription is in trial period. BillingStatusTrialing BillingStatus = "trialing" // BillingStatusIncomplete represents incomplete status. // If the initial payment attempt fails, the status of the subscription becomes incomplete. // If payment fails because of a card error, such as a decline, the status of the PaymentIntent is // requires_card and the subscription is incomplete. BillingStatusIncomplete BillingStatus = "incomplete" // BillingStatusIncompleteExpired represents incomplete_expired status. // If the first invoice is not paid within 23 hours, the status of the subscription becomes incomplete_expired. BillingStatusIncompleteExpired BillingStatus = "incomplete_expired" // BillingStatusPastDue represents past_due status. // The subscription’s status remains active as long as automatic payments succeed. If automatic payment fails, the // subscription updates to past_due and Stripe attempts to recover payment based on your retry rules. If payment // recovery fails, you can set the subscription status to canceled, unpaid, or leave it past_due. BillingStatusPastDue BillingStatus = "past_due" // BillingStatusCanceled represents canceled status. BillingStatusCanceled BillingStatus = "canceled" // BillingStatusUnpaid represents unpaid status. // If the retry attempts are exhausted, the status of the subscription becomes unpaid, depending on your subscriptions settings. BillingStatusUnpaid BillingStatus = "unpaid" // BillingStatusPaused represents paused status. BillingStatusPaused BillingStatus = "paused" // BillingStatusToCancelAtEndOfPeriod represents to_cancel_at_end_of_period status. // BillingStatusToCancelAtEndOfPeriod is not a Stripe status, but a custom status used by this package to indicate that the subscription is set to cancel at the end of the period. BillingStatusToCancelAtEndOfPeriod BillingStatus = "to_cancel_at_end_of_period" )
Represents the possible statuses of a subscription.
func (BillingStatus) IsActive ¶ added in v0.12.4
func (s BillingStatus) IsActive() bool
IsActive returns true if the subscription is active. It is active if its status is `active`, `past_due`, `trailing` or `to_cancel_at_end_of_period`.
type ConnectedDevice ¶
type Device ¶
type Device struct { // UID is the unique identifier for a device. UID string `json:"uid"` Name string `json:"name" bson:"name,omitempty" validate:"required,hostname_rfc1123,excludes=."` Identity *DeviceIdentity `json:"identity"` Info *DeviceInfo `json:"info"` PublicKey string `json:"public_key" bson:"public_key"` TenantID string `json:"tenant_id" bson:"tenant_id"` LastSeen time.Time `json:"last_seen" bson:"last_seen"` Online bool `json:"online" bson:",omitempty"` Namespace string `json:"namespace" bson:",omitempty"` Status DeviceStatus `json:"status" bson:"status,omitempty" validate:"oneof=accepted rejected pending unused"` StatusUpdatedAt time.Time `json:"status_updated_at" bson:"status_updated_at,omitempty"` CreatedAt time.Time `json:"created_at" bson:"created_at,omitempty"` RemoteAddr string `json:"remote_addr" bson:"remote_addr"` Position *DevicePosition `json:"position" bson:"position"` Tags []string `json:"tags" bson:"tags,omitempty"` PublicURL bool `json:"public_url" bson:"public_url,omitempty"` PublicURLAddress string `json:"public_url_address" bson:"public_url_address,omitempty"` Acceptable bool `json:"acceptable" bson:"acceptable,omitempty"` }
type DeviceAuth ¶
type DeviceAuth struct { Hostname string `json:"hostname,omitempty" bson:"hostname,omitempty" validate:"required_without=Identity,omitempty,hostname_rfc1123" hash:"-"` Identity *DeviceIdentity `json:"identity,omitempty" bson:"identity,omitempty" validate:"required_without=Hostname,omitempty"` PublicKey string `json:"public_key"` TenantID string `json:"tenant_id"` }
type DeviceAuthClaims ¶
type DeviceAuthClaims struct { UID string `json:"uid"` AuthClaims `mapstruct:",squash"` jwt.RegisteredClaims `mapstruct:",squash"` }
type DeviceAuthRequest ¶
type DeviceAuthRequest struct { Info *DeviceInfo `json:"info"` Sessions []string `json:"sessions,omitempty"` *DeviceAuth }
type DeviceAuthResponse ¶
type DeviceIdentity ¶ added in v0.2.1
type DeviceIdentity struct {
MAC string `json:"mac"`
}
type DeviceInfo ¶ added in v0.2.1
type DevicePosition ¶ added in v0.8.0
type DeviceRemoved ¶ added in v0.11.8
type DeviceStatus ¶ added in v0.11.8
type DeviceStatus string
const ( DeviceStatusAccepted DeviceStatus = "accepted" DeviceStatusPending DeviceStatus = "pending" DeviceStatusRejected DeviceStatus = "rejected" DeviceStatusRemoved DeviceStatus = "removed" DeviceStatusUnused DeviceStatus = "unused" )
type Filter ¶ added in v0.3.0
type Filter struct { // Type os the filter. Type can be "property" or "operator". When Type is "property", the Params field must is set // to PropertyParams structure and when set "operator", the Params field must be set to OperatorParams structure. Type string `json:"type,omitempty"` // Params is the filter params. Params can be either PropertyParams or OperatorParams. Params interface{} `json:"params,omitempty"` }
Filter is a helper struct to filter results from the database. TODO: Gives a better explanation about the filter and how to use it.
func (*Filter) UnmarshalJSON ¶ added in v0.3.2
type FirewallFilter ¶ added in v0.9.1
type FirewallFilter struct { Hostname string `json:"hostname,omitempty" bson:"hostname,omitempty" validate:"required_without=Tags,excluded_with=Tags,regexp"` Tags []string `` /* 164-byte string literal not displayed */ }
FirewallFilter contains the filter rule of a Public Key.
A FirewallFilter can contain either Hostname, string, or Tags, slice of strings never both.
type FirewallRule ¶ added in v0.3.3
type FirewallRule struct { ID string `json:"id,omitempty" bson:"_id,omitempty"` TenantID string `json:"tenant_id" bson:"tenant_id"` FirewallRuleFields `bson:",inline"` }
type FirewallRuleFields ¶ added in v0.3.3
type FirewallRuleFields struct { Priority int `json:"priority"` Action string `json:"action" validate:"required,oneof=allow deny"` Active bool `json:"active"` SourceIP string `json:"source_ip" bson:"source_ip" validate:"required,regexp"` Username string `json:"username" validate:"required,regexp"` Filter FirewallFilter `json:"filter" bson:"filter" validate:"required"` }
func (*FirewallRuleFields) Validate ¶ added in v0.3.3
func (f *FirewallRuleFields) Validate() error
type FirewallRuleUpdate ¶ added in v0.3.3
type FirewallRuleUpdate struct {
FirewallRuleFields `bson:",inline"`
}
type MqttACLQuery ¶
type MqttAuthQuery ¶
type MqttClientEvent ¶
type MqttEvent ¶
type MqttEvent struct { Action string `json:"action"` MqttClientEvent }
type Namespace ¶ added in v0.5.0
type Namespace struct { Name string `json:"name" validate:"required,hostname_rfc1123,excludes=.,lowercase"` Owner string `json:"owner"` TenantID string `json:"tenant_id" bson:"tenant_id,omitempty"` Members []Member `json:"members" bson:"members"` Settings *NamespaceSettings `json:"settings"` Devices int `json:"-" bson:"devices,omitempty"` Sessions int `json:"-" bson:"sessions,omitempty"` MaxDevices int `json:"max_devices" bson:"max_devices"` DevicesCount int `json:"devices_count" bson:"devices_count,omitempty"` CreatedAt time.Time `json:"created_at" bson:"created_at"` Billing *Billing `json:"billing" bson:"billing,omitempty"` }
func (*Namespace) HasMaxDevices ¶ added in v0.11.8
HasMaxDevices checks if the namespace has a maximum number of devices.
Generally, a namespace has a MaxDevices value greater than 0 when the ShellHub is either in community version or the namespace does not have a billing plan enabled, because, in this case, we set this value to -1.
func (*Namespace) HasMaxDevicesReached ¶ added in v0.11.8
HasMaxDevicesReached checks if the namespace has reached the maximum number of devices.
type NamespaceSettings ¶ added in v0.5.0
type NamespaceSettings struct {
SessionRecord bool `json:"session_record" bson:"session_record,omitempty"`
}
type OperatorParams ¶ added in v0.3.2
type OperatorParams struct {
Name string `json:"name"`
}
type PrivateKey ¶ added in v0.5.0
type PropertyParams ¶ added in v0.3.2
type PublicKeyAuthRequest ¶ added in v0.5.0
type PublicKeyAuthResponse ¶ added in v0.5.0
type PublicKeyAuthResponse struct {
Signature string `json:"signature"`
}
type PublicKeyFields ¶ added in v0.5.0
type PublicKeyFields struct { Name string `json:"name"` Username string `json:"username" bson:"username" validate:"regexp"` Filter PublicKeyFilter `json:"filter" bson:"filter" validate:"required"` }
func (*PublicKeyFields) Validate ¶ added in v0.6.1
func (p *PublicKeyFields) Validate() error
type PublicKeyFilter ¶ added in v0.9.1
type PublicKeyFilter struct { Hostname string `json:"hostname,omitempty" bson:"hostname,omitempty" validate:"required_without=Tags,excluded_with=Tags,regexp"` Tags []string `` /* 164-byte string literal not displayed */ }
PublicKeyFilter contains the filter rule of a Public Key.
A PublicKeyFilter can contain either Hostname, string, or Tags, slice of strings never both.
type PublicKeyUpdate ¶ added in v0.5.0
type PublicKeyUpdate struct {
PublicKeyFields `bson:",inline"`
}
type RecordedSession ¶ added in v0.4.0
type RecordedSession struct { UID UID `json:"uid"` Message string `json:"message" bson:"message"` TenantID string `json:"tenant_id" bson:"tenant_id,omitempty"` Time time.Time `json:"time" bson:"time,omitempty"` Width int `json:"width" bson:"width,omitempty"` Height int `json:"height" bson:"height,omitempty"` }
type Session ¶
type Session struct { UID string `json:"uid"` DeviceUID UID `json:"device_uid,omitempty" bson:"device_uid"` Device *Device `json:"device" bson:"device,omitempty"` TenantID string `json:"tenant_id" bson:"tenant_id"` Username string `json:"username"` IPAddress string `json:"ip_address" bson:"ip_address"` StartedAt time.Time `json:"started_at" bson:"started_at"` LastSeen time.Time `json:"last_seen" bson:"last_seen"` Active bool `json:"active" bson:",omitempty"` Closed bool `json:"-" bson:"closed"` Authenticated bool `json:"authenticated" bson:"authenticated"` Recorded bool `json:"recorded" bson:"recorded"` Type string `json:"type" bson:"type"` Term string `json:"term" bson:"term"` Position SessionPosition `json:"position" bson:"position"` }
type SessionPosition ¶ added in v0.10.0
type SessionRecorded ¶ added in v0.7.3
type SystemInfo ¶ added in v0.11.8
type SystemInfo struct { Version string `json:"version"` Endpoints *SystemInfoEndpoints `json:"endpoints"` }
type SystemInfoEndpoints ¶ added in v0.11.8
type User ¶
type User struct { ID string `json:"id,omitempty" bson:"_id,omitempty"` Namespaces int `json:"namespaces" bson:"namespaces,omitempty"` MaxNamespaces int `json:"max_namespaces" bson:"max_namespaces"` Confirmed bool `json:"confirmed"` CreatedAt time.Time `json:"created_at" bson:"created_at"` LastLogin time.Time `json:"last_login" bson:"last_login"` EmailMarketing bool `json:"email_marketing" bson:"email_marketing"` UserData `bson:",inline"` UserPassword `bson:",inline"` }
type UserAuthClaims ¶
type UserAuthClaims struct { Username string `json:"name"` Admin bool `json:"admin"` Tenant string `json:"tenant"` ID string `json:"id"` Role string `json:"role"` AuthClaims `mapstruct:",squash"` jwt.RegisteredClaims `mapstruct:",squash"` }
type UserAuthRequest ¶
type UserAuthResponse ¶
type UserPassword ¶ added in v0.8.0
type UserPassword struct {
Password string `json:"password" bson:",omitempty" validate:"required,min=5,max=30"`
}