converge/pkg/comms/events.go
Erik Brakkee d839583f7b communication between agent and server. Removed the flags libray for command-line parsing.
Heartbeat mechanism from client to server over the custom connection for sending events to guarantee that the connectoin stays up.
2024-09-08 11:16:48 +02:00

79 lines
1.3 KiB
Go

package comms
import (
"encoding/gob"
"os"
"os/user"
"runtime"
"time"
)
// Client to server events
type AgentInfo struct {
Username string
Hostname string
Pwd string
OS string
}
type SessionInfo struct {
// "ssh", "sftp"
SessionType string
}
type ExpiryTimeUpdate struct {
ExpiryTime time.Time
}
type HeartBeat struct {
// Empty
}
// Message sent from converge server to agent
type UserPassword struct {
Username string
Password string
}
// Generic wrapper message required to send messages of arbitrary type
type ConvergeMessage struct {
Value interface{}
}
func NewAgentInfo() AgentInfo {
username, _ := user.Current()
host, _ := os.Hostname()
pwd, _ := os.Getwd()
return AgentInfo{
Username: username.Username,
Hostname: host,
Pwd: pwd,
OS: runtime.GOOS,
}
}
func NewSessionInfo(sessionType string) SessionInfo {
return SessionInfo{SessionType: sessionType}
}
func NewExpiryTimeUpdate(expiryTime time.Time) ExpiryTimeUpdate {
return ExpiryTimeUpdate{ExpiryTime: expiryTime}
}
func RegisterEventsWithGob() {
// Agent to ConvergeServer
gob.Register(AgentInfo{})
gob.Register(SessionInfo{})
gob.Register(ExpiryTimeUpdate{})
gob.Register(HeartBeat{})
// ConvergeServer to Agent
gob.Register(UserPassword{})
// Wrapper event.
gob.Register(ConvergeMessage{})
}