Documentation
¶
Index ¶
- type AdminToken
- type BasicUserQuery
- type BroadcastHelloEmailUserQuery
- type Client
- type EmailArgs
- type HostConfigPacket
- type InitOK
- type Load
- type LobbyConfigStore
- type LobbyInfo
- type Login
- type MailConfig
- type NewHostParams
- type NewPeerParams
- type PeerConfigPacket
- type PeerInfo
- type Register
- type RootError
- type Save
- type Session
- type SignalPacket
- type TemplateData
- type UserQuery
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AdminToken ¶
type AdminToken struct {
Token string `json:"token" validate:"required,ulid" label:"token"`
}
Used for admin requests
type BasicUserQuery ¶
type Client ¶
type Client struct { Conn *websocket.Conn Email string UserState bitfield.Bitfield8 // Bitfield SessionState bitfield.Bitfield8 // Bitfield ID uint64 // For client manager tracking only UGI string IsHost bool // Set to true when CONFIG_HOST is received or the server makes another peer the host with HOST_RECLAIM, or a peer with CLAIM_HOST IsPeer bool // Set to true when CONFIG_PEER is received Authorization string // ULID session token Username string ULID string Expiry int64 // UNIX time ValidSession bool Origin string // Hostname of the origin of the connection GameName string DeveloperName string Lobby string Lock sync.RWMutex PublicKey string // Set when CONFIG_HOST or CONFIG_PEER. ECDH-P256-AES-GCM with SPKI-BASE64 encoding. }
type EmailArgs ¶
type EmailArgs struct { Template string // Name of template to use (/pkg/data/email_templates/*.html) Subject string // Subject of email To string // Email address of recipient (to user) Nickname string // Nickname of sender (i.e. this server) }
Arguments needed to send an email
type HostConfigPacket ¶
type HostConfigPacket struct { Opcode string `json:"opcode" validate:"required" label:"opcode"` Payload struct { LobbyID string `json:"lobby_id" label:"lobby_id"` AllowHostReclaim bool `json:"allow_host_reclaim" validate:"boolean" label:"allow_host_reclaim"` AllowPeersToReclaim bool `json:"allow_peers_to_claim_host" validate:"boolean" label:"allow_peers_to_claim_host"` MaximumPeers int `json:"max_peers" validate:"min=0,max=100" label:"max_peers"` Password string `json:"password" validate:"omitempty,max=128" label:"password"` PublicKey string `json:"pubkey,omitempty" validate:"omitempty" label:"pubkey"` } `json:"payload" validate:"required_with=LobbyID AllowHostReclaim AllowPeersToReclaim MaximumPeers" label:"payload"` }
type InitOK ¶
type InitOK struct { User string `json:"user"` Id string `json:"id"` Game string `json:"game"` Developer string `json:"developer"` }
JSON structure for signaling INIT_OK response.
type Load ¶
type Load struct { UGI string `json:"ugi" validate:"required" label:"ugi"` Token string `json:"token" validate:"required" label:"token"` SaveSlot uint8 `json:"save_slot" validate:"required,min=1,max=10" label:"save_slot"` }
JSON structure for loading a save slot.
type LobbyConfigStore ¶
type LobbyConfigStore struct { ID string MaximumPeers int AllowHostReclaim bool AllowPeersToReclaim bool CurrentOwnerID uint64 // For client manager tracking only CurrentOwnerULID string // For signaling CurrentOwnerUsername string // For lobby manager Password string // Scrypt hash or empty IsPublic bool Locked bool }
Managing lobbies
type Login ¶
type Login struct { Email string `json:"email" validate:"required,email,max=320" label:"email"` Password string `json:"password" validate:"required,min=8,max=128" label:"password"` }
JSON structure for logging in.
type MailConfig ¶
Email configuration parameters
type NewHostParams ¶
type NewHostParams struct { ID string `json:"id"` User string `json:"user"` LobbyID string `json:"lobby_id"` PublicKey string `json:"pubkey,omitempty"` }
Declare the packet format for the NEW_HOST signaling event.
type NewPeerParams ¶
type NewPeerParams struct { ID string `json:"id"` User string `json:"user"` PublicKey string `json:"pubkey,omitempty"` }
Declare the packet format for the NEW_PEER signaling event.
type PeerConfigPacket ¶
type PeerConfigPacket struct { Opcode string `json:"opcode" validate:"required" label:"opcode"` Payload struct { LobbyID string `json:"lobby_id" validate:"required" label:"lobby_id"` Password string `json:"password" validate:"omitempty,max=128" label:"password"` PublicKey string `json:"pubkey,omitempty" validate:"omitempty" label:"pubkey"` } `json:"payload" validate:"required_with=LobbyID" label:"payload"` }
Declare the packet format for the CONFIG_PEER signaling command.
type Register ¶
type Register struct { Username string `json:"username" validate:"required,min=3,max=20" label:"username"` Password string `json:"password" validate:"required,min=8,max=128" label:"password"` Email string `json:"email" validate:"required,email,max=320" label:"email"` }
JSON structure for user creation.
type Save ¶
type Save struct { UGI string `json:"ugi" validate:"required" label:"ugi"` Token string `json:"token" validate:"required" label:"token"` SaveSlot uint8 `json:"save_slot" validate:"required,min=1,max=10" label:"save_slot"` SaveData any `json:"save_data" validate:"required,max=10000" label:"save_data"` }
JSON structure for creating/updating a save slot.
type SignalPacket ¶
type SignalPacket struct { Opcode string `json:"opcode" validate:"required" label:"opcode"` // Required for protocol compliance Payload any `json:"payload,omitempty" validate:"required" label:"payload"` // Required for protocol compliance Origin *PeerInfo `json:"origin,omitempty" validate:"omitempty,ulid" label:"origin"` // Server -> Client, identifies client that sent the message Recipient string `json:"recipient,omitempty" validate:"omitempty,ulid" label:"recipient"` // Client -> Server, identifies client that should receive the message Listener string `json:"listener,omitempty" validate:"omitempty" label:"listener"` // For clients to listen to server replies }
Declare the packet format for signaling.
Click to show internal directories.
Click to hide internal directories.