mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-09-30 06:16:37 +08:00
55 lines
1.3 KiB
Go
55 lines
1.3 KiB
Go
package service
|
|
|
|
import (
|
|
"log/slog"
|
|
)
|
|
|
|
var DefaultFlaredWSHub = NewWSHub("flared")
|
|
|
|
func RegisterFlaredWSClient(tunnelID string) *WSClient {
|
|
return DefaultFlaredWSHub.Register(tunnelID)
|
|
}
|
|
|
|
func UnregisterFlaredWSClient(client *WSClient) {
|
|
DefaultFlaredWSHub.Unregister(client)
|
|
}
|
|
|
|
func IsFlaredWSConnected(tunnelID string) bool {
|
|
return DefaultFlaredWSHub.IsConnected(tunnelID)
|
|
}
|
|
|
|
func SendFlaredWSPong(tunnelID string) bool {
|
|
return DefaultFlaredWSHub.SendMessage(tunnelID, WSMessage{
|
|
Type: "pong",
|
|
})
|
|
}
|
|
|
|
func SendFlaredWSActiveConfig(tunnelID string, activeConfig *ActiveConfigMeta) bool {
|
|
if activeConfig == nil {
|
|
return false
|
|
}
|
|
return DefaultFlaredWSHub.SendMessage(tunnelID, WSMessage{
|
|
Type: "active_config",
|
|
Payload: activeConfig,
|
|
})
|
|
}
|
|
|
|
func BroadcastFlaredWSActiveConfig(activeConfig *ActiveConfigMeta) WSBroadcastResult {
|
|
if activeConfig == nil {
|
|
slog.Debug("flared ws broadcast skipped because active config is nil")
|
|
return WSBroadcastResult{}
|
|
}
|
|
res := DefaultFlaredWSHub.Broadcast(WSMessage{
|
|
Type: "active_config",
|
|
Payload: activeConfig,
|
|
})
|
|
slog.Debug("flared ws broadcast active config",
|
|
"version", activeConfig.Version,
|
|
"checksum", activeConfig.Checksum,
|
|
"client_count", res.ClientCount,
|
|
"success_count", res.SuccessCount,
|
|
"failed_tunnels", res.FailedIDs,
|
|
)
|
|
return res
|
|
}
|