98 lines
1.5 KiB
Go
98 lines
1.5 KiB
Go
package comms
|
|
|
|
import (
|
|
"encoding/gob"
|
|
"os"
|
|
"os/user"
|
|
"runtime"
|
|
"time"
|
|
)
|
|
|
|
const PROTOCOL_VERSION = 1
|
|
|
|
func init() {
|
|
RegisterEventsWithGob()
|
|
}
|
|
|
|
// Client to server events
|
|
|
|
type AgentInfo struct {
|
|
Username string
|
|
Hostname string
|
|
Pwd string
|
|
OS string
|
|
}
|
|
|
|
type ClientInfo struct {
|
|
ClientId int
|
|
}
|
|
|
|
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 ProtocolVersion struct {
|
|
Version int
|
|
}
|
|
|
|
type UserPassword struct {
|
|
Username string
|
|
Password string
|
|
}
|
|
|
|
type ServerInfo struct {
|
|
UserPassword UserPassword
|
|
}
|
|
|
|
// 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(ProtocolVersion{})
|
|
gob.Register(UserPassword{})
|
|
|
|
// Wrapper event.
|
|
gob.Register(ConvergeMessage{})
|
|
}
|