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{}) }