mirror of
https://github.com/fosrl/olm.git
synced 2026-02-07 21:46:40 +00:00
Include fingerprint and posture info in ping
This commit is contained in:
@@ -315,6 +315,14 @@ func (o *Olm) StartTunnel(config TunnelConfig) {
|
||||
config.Endpoint,
|
||||
30, // 30 seconds
|
||||
config.PingTimeoutDuration,
|
||||
websocket.WithPingDataProvider(func() map[string]any {
|
||||
o.metaMu.Lock()
|
||||
defer o.metaMu.Unlock()
|
||||
return map[string]any{
|
||||
"fingerprint": o.fingerprint,
|
||||
"postures": o.postures,
|
||||
}
|
||||
}),
|
||||
)
|
||||
if err != nil {
|
||||
logger.Error("Failed to create olm: %v", err)
|
||||
|
||||
@@ -99,6 +99,7 @@ type Client struct {
|
||||
processingMessage bool // Flag to track if a message is currently being processed
|
||||
processingMux sync.RWMutex // Protects processingMessage
|
||||
processingWg sync.WaitGroup // WaitGroup to wait for message processing to complete
|
||||
getPingData func() map[string]any // Callback to get additional ping data
|
||||
}
|
||||
|
||||
type ClientOption func(*Client)
|
||||
@@ -134,6 +135,13 @@ func WithTLSConfig(config TLSConfig) ClientOption {
|
||||
}
|
||||
}
|
||||
|
||||
// WithPingDataProvider sets a callback to provide additional data for ping messages
|
||||
func WithPingDataProvider(fn func() map[string]any) ClientOption {
|
||||
return func(c *Client) {
|
||||
c.getPingData = fn
|
||||
}
|
||||
}
|
||||
|
||||
func (c *Client) OnConnect(callback func() error) {
|
||||
c.onConnect = callback
|
||||
}
|
||||
@@ -670,12 +678,19 @@ func (c *Client) pingMonitor() {
|
||||
configVersion := c.configVersion
|
||||
c.configVersionMux.RUnlock()
|
||||
|
||||
pingMsg := WSMessage{
|
||||
Type: "olm/ping",
|
||||
Data: map[string]any{
|
||||
pingData := map[string]any{
|
||||
"timestamp": time.Now().Unix(),
|
||||
"userToken": c.config.UserToken,
|
||||
},
|
||||
}
|
||||
if c.getPingData != nil {
|
||||
for k, v := range c.getPingData() {
|
||||
pingData[k] = v
|
||||
}
|
||||
}
|
||||
|
||||
pingMsg := WSMessage{
|
||||
Type: "olm/ping",
|
||||
Data: pingData,
|
||||
ConfigVersion: configVersion,
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user