converge/pkg/comms/events.go
Erik Brakkee 3c803d6125 removed password based access
authorized keys can now be modified within the session.
keep last set of keys when no valid keys were found and keys are changed during the session .
2024-08-06 22:03:36 +02:00

125 lines
2.1 KiB
Go

package comms
import (
"encoding/gob"
"os"
"os/user"
"runtime"
"time"
)
const PROTOCOL_VERSION = 2
func init() {
RegisterEventsWithGob()
}
// Agent to server events
type AgentInfo struct {
Username string
Hostname string
Pwd string
OS string
Shell string
}
type ClientInfo struct {
ClientId int
}
type SessionInfo struct {
ClientId string
// "ssh", "sftp"
SessionType string
}
type ExpiryTimeUpdate struct {
ExpiryTime time.Time
}
type HeartBeat struct {
// Empty
}
type ProtocolVersion struct {
Version int
}
type UserPassword struct {
Username string
}
// initialization mesaage when agent connects to server
type ServerInfo struct {
UserPassword UserPassword
}
// confirmation message when agent connects
type AgentRegistration struct {
Ok bool
Message string
// final Id assigned by the server. Usually identical to the requested id
// but if there is a conflict, a new id is chosen.
Id string
}
// Generic wrapper message required to send messages of arbitrary type
type ConvergeMessage struct {
Value interface{}
}
func NewAgentInfo(shell string) AgentInfo {
username, _ := user.Current()
host, _ := os.Hostname()
pwd, _ := os.Getwd()
return AgentInfo{
Username: username.Username,
Hostname: host,
Pwd: pwd,
OS: runtime.GOOS,
Shell: shell,
}
}
func NewSessionInfo(clientId, sessionType string) SessionInfo {
return SessionInfo{
ClientId: clientId,
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 and client
gob.Register(ProtocolVersion{})
// ConvergeServer to Agent
gob.Register(UserPassword{})
// ConvergeServer to Client
gob.Register(ClientConnectionInfo{})
// Wrapper event.
gob.Register(ConvergeMessage{})
}
// Server to client events
type ClientConnectionInfo struct {
Ok bool
Message string
}