46 lines
1.1 KiB
Go
46 lines
1.1 KiB
Go
|
package api
|
||
|
|
||
|
import (
|
||
|
"net/http"
|
||
|
"sync"
|
||
|
"time"
|
||
|
|
||
|
"github.com/gorilla/websocket"
|
||
|
|
||
|
"github.com/photoprism/photoprism/internal/acl"
|
||
|
"github.com/photoprism/photoprism/internal/entity"
|
||
|
)
|
||
|
|
||
|
// wsTimeout specifies the timeout duration for WebSocket connections.
|
||
|
var wsTimeout = 90 * time.Second
|
||
|
|
||
|
// wsSubPerm specifies the permissions required to subscribe to a channel.
|
||
|
var wsSubscribePerms = acl.Permissions{acl.ActionSubscribe}
|
||
|
|
||
|
// wsAuth maps connection IDs to specific users and session IDs.
|
||
|
var wsAuth = struct {
|
||
|
sid map[string]string
|
||
|
rid map[string]string
|
||
|
user map[string]entity.User
|
||
|
mutex sync.RWMutex
|
||
|
}{
|
||
|
sid: make(map[string]string),
|
||
|
rid: make(map[string]string),
|
||
|
user: make(map[string]entity.User),
|
||
|
}
|
||
|
|
||
|
// wsConnection upgrades the HTTP server connection to the WebSocket protocol.
|
||
|
var wsConnection = websocket.Upgrader{
|
||
|
CheckOrigin: func(r *http.Request) bool {
|
||
|
return true
|
||
|
},
|
||
|
}
|
||
|
|
||
|
// wsClient represents information about the WebSocket client.
|
||
|
type wsClient struct {
|
||
|
AuthToken string `json:"session"`
|
||
|
CssUri string `json:"css"`
|
||
|
JsUri string `json:"js"`
|
||
|
Version string `json:"version"`
|
||
|
}
|