Documentation
¶
Index ¶
- Variables
- func Start(platform platforms.Platform, cfg *config.Instance, st *state.State, ...) error
- func StartWithReady(platform platforms.Platform, cfg *config.Instance, st *state.State, ...) error
- type MethodMap
- func (m *MethodMap) AddMethod(name string, handler func(requests.RequestEnv) (any, error)) error
- func (m *MethodMap) GetMethod(name string) (func(requests.RequestEnv) (any, error), bool)
- func (m *MethodMap) ListMethods() []string
- func (m *MethodMap) Load(key any) (any, bool)
- func (m *MethodMap) Range(f func(key, value any) bool)
- func (m *MethodMap) Store(key, value any)
- type OriginsProvider
- type PairingManager
- func (m *PairingManager) CancelPairing()
- func (m *PairingManager) HandlePairFinish() http.HandlerFunc
- func (m *PairingManager) HandlePairStart() http.HandlerFunc
- func (m *PairingManager) PendingPIN() (pin string, expiresAt time.Time)
- func (m *PairingManager) StartCleanup(ctx context.Context)
- func (m *PairingManager) StartPairing() (pin string, expiresAt time.Time, err error)
- type PairingOption
- type PairingResult
Constants ¶
This section is empty.
Variables ¶
var JSONRPCErrorInternalError = models.ErrorObject{
Code: -32603,
Message: "Internal error",
}
var JSONRPCErrorInvalidParams = models.ErrorObject{
Code: -32602,
Message: "Invalid params",
}
var JSONRPCErrorInvalidRequest = models.ErrorObject{
Code: -32600,
Message: "Invalid Request",
}
var JSONRPCErrorMethodNotFound = models.ErrorObject{
Code: -32601,
Message: "Method not found",
}
var JSONRPCErrorParseError = models.ErrorObject{
Code: -32700,
Message: "Parse error",
}
Functions ¶
func Start ¶
func Start( platform platforms.Platform, cfg *config.Instance, st *state.State, inTokenQueue chan<- tokens.Token, confirmQueue chan<- chan error, db *database.Database, limitsManager *playtime.LimitsManager, notifBroker *broker.Broker, mdnsHostname string, player audio.Player, indexPauser *syncutil.Pauser, ) error
Start starts the API web server and blocks until it shuts down.
func StartWithReady ¶ added in v2.11.0
func StartWithReady( platform platforms.Platform, cfg *config.Instance, st *state.State, inTokenQueue chan<- tokens.Token, confirmQueue chan<- chan error, db *database.Database, limitsManager *playtime.LimitsManager, notifBroker *broker.Broker, mdnsHostname string, player audio.Player, indexPauser *syncutil.Pauser, ready chan<- error, ) error
StartWithReady starts the API web server and reports bind success or failure before blocking for shutdown. This lets service startup fail synchronously when the configured API port is unavailable.
Types ¶
type MethodMap ¶
func NewMethodMap ¶
func NewMethodMap() *MethodMap
func (*MethodMap) ListMethods ¶
type OriginsProvider ¶ added in v2.9.0
type OriginsProvider func() []string
OriginsProvider is a function that returns custom origins from config.
type PairingManager ¶ added in v2.11.0
type PairingManager struct {
// contains filtered or unexported fields
}
PairingManager owns the PIN and in-flight sessions (single mutex protects all state).
func NewPairingManager ¶ added in v2.11.0
func NewPairingManager( db database.UserDBI, notifChan chan<- models.Notification, opts ...PairingOption, ) *PairingManager
NewPairingManager constructs a PairingManager (pass nil notifChan to disable notifications).
func (*PairingManager) CancelPairing ¶ added in v2.11.0
func (m *PairingManager) CancelPairing()
CancelPairing clears the current PIN and any in-flight sessions. Safe to call when no pairing is in progress.
func (*PairingManager) HandlePairFinish ¶ added in v2.11.0
func (m *PairingManager) HandlePairFinish() http.HandlerFunc
HandlePairFinish verifies HMAC, persists client, and returns auth token + confirmation.
func (*PairingManager) HandlePairStart ¶ added in v2.11.0
func (m *PairingManager) HandlePairStart() http.HandlerFunc
HandlePairStart runs the PAKE exchange and returns sessionID + server message.
func (*PairingManager) PendingPIN ¶ added in v2.11.0
func (m *PairingManager) PendingPIN() (pin string, expiresAt time.Time)
PendingPIN returns the currently displayed PIN and its expiry, or an empty PIN if no pairing is in progress.
func (*PairingManager) StartCleanup ¶ added in v2.11.0
func (m *PairingManager) StartCleanup(ctx context.Context)
StartCleanup begins the background cleanup goroutine. The goroutine exits when ctx is canceled. Safe to call multiple times only with distinct contexts; callers should call this once during server startup.
func (*PairingManager) StartPairing ¶ added in v2.11.0
func (m *PairingManager) StartPairing() (pin string, expiresAt time.Time, err error)
StartPairing generates a new PIN (fails fast if clients are at max).
type PairingOption ¶ added in v2.11.0
type PairingOption func(*PairingManager)
PairingOption configures a PairingManager at construction time.
func WithPairingCleanupInterval ¶ added in v2.11.0
func WithPairingCleanupInterval(d time.Duration) PairingOption
WithPairingCleanupInterval overrides the cleanup goroutine tick interval.
func WithPairingMaxAttempts ¶ added in v2.11.0
func WithPairingMaxAttempts(n int) PairingOption
WithPairingMaxAttempts overrides the maximum PIN attempts (default 3).
func WithPairingMaxClients ¶ added in v2.11.0
func WithPairingMaxClients(n int) PairingOption
WithPairingMaxClients overrides the maximum paired clients (default 50).
func WithPairingPINTTL ¶ added in v2.11.0
func WithPairingPINTTL(d time.Duration) PairingOption
WithPairingPINTTL overrides the PIN time-to-live (default 5min).
func WithPairingSessionTTL ¶ added in v2.11.0
func WithPairingSessionTTL(d time.Duration) PairingOption
WithPairingSessionTTL overrides the /pair/start session TTL (default 2min).
type PairingResult ¶ added in v2.11.0
PairingResult is the outcome of a successful PAKE handshake. The Client is persisted to the database; the ServerHMAC must be returned to the client so it can verify the server's identity.
Directories
¶
| Path | Synopsis |
|---|---|
|
Package crypto provides AES-256-GCM encryption with HKDF-derived per-session keys for the Zaparoo API WebSocket transport.
|
Package crypto provides AES-256-GCM encryption with HKDF-derived per-session keys for the Zaparoo API WebSocket transport. |
|
Package validation provides validation for API request parameters using go-playground/validator with custom validators for Zaparoo-specific types.
|
Package validation provides validation for API request parameters using go-playground/validator with custom validators for Zaparoo-specific types. |