Documentation
¶
Overview ¶
Package server implements the Waymon server with privilege separation
Index ¶
- type ClientManager
- func (cm *ClientManager) GetActiveClient() *ConnectedClient
- func (cm *ClientManager) GetConnectedClients() []*ConnectedClient
- func (cm *ClientManager) HandleInputEvent(event *protocol.InputEvent)
- func (cm *ClientManager) HandleStatusQuery(query *pb.StatusQuery) (*pb.IPCMessage, error)
- func (cm *ClientManager) HandleSwitchCommand(cmd *pb.SwitchCommand) (*pb.IPCMessage, error)
- func (cm *ClientManager) IsControllingLocal() bool
- func (cm *ClientManager) MarkEmergencyRelease()
- func (cm *ClientManager) NotifyShutdown()
- func (cm *ClientManager) RegisterClient(id, name, address string)
- func (cm *ClientManager) SetOnActivity(callback func(level, message string))
- func (cm *ClientManager) SetSSHServer(sshServer *network.SSHServer)
- func (cm *ClientManager) Start(ctx context.Context, port int) error
- func (cm *ClientManager) Stop() error
- func (cm *ClientManager) SwitchToClient(clientID string) error
- func (cm *ClientManager) SwitchToLocal() error
- func (cm *ClientManager) SwitchToNextClient() error
- func (cm *ClientManager) UnregisterClient(id string)
- type ConnectedClient
- type EmergencyRelease
- type Server
- func (s *Server) GetClientManager() *ClientManager
- func (s *Server) GetName() string
- func (s *Server) GetNetworkServer() *network.SSHServer
- func (s *Server) GetPort() int
- func (s *Server) GetSSHAuthKeysPath() string
- func (s *Server) GetSSHHostKeyPath() string
- func (s *Server) Start(ctx context.Context) error
- func (s *Server) StartNetworking(ctx context.Context) error
- func (s *Server) Stop()
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ClientManager ¶
type ClientManager struct {
// contains filtered or unexported fields
}
ClientManager manages connected clients and input routing
func NewClientManager ¶
func NewClientManager(inputBackend input.InputBackend) (*ClientManager, error)
NewClientManager creates a new client manager for the server
func (*ClientManager) GetActiveClient ¶
func (cm *ClientManager) GetActiveClient() *ConnectedClient
GetActiveClient returns the currently controlled client
func (*ClientManager) GetConnectedClients ¶
func (cm *ClientManager) GetConnectedClients() []*ConnectedClient
GetConnectedClients returns a list of connected clients
func (*ClientManager) HandleInputEvent ¶
func (cm *ClientManager) HandleInputEvent(event *protocol.InputEvent)
HandleInputEvent processes input events and routes them to the appropriate target
func (*ClientManager) HandleStatusQuery ¶
func (cm *ClientManager) HandleStatusQuery(query *pb.StatusQuery) (*pb.IPCMessage, error)
HandleStatusQuery implements ipc.MessageHandler
func (*ClientManager) HandleSwitchCommand ¶
func (cm *ClientManager) HandleSwitchCommand(cmd *pb.SwitchCommand) (*pb.IPCMessage, error)
HandleSwitchCommand implements ipc.MessageHandler
func (*ClientManager) IsControllingLocal ¶
func (cm *ClientManager) IsControllingLocal() bool
IsControllingLocal returns whether the server is controlling the local system
func (*ClientManager) MarkEmergencyRelease ¶
func (cm *ClientManager) MarkEmergencyRelease()
MarkEmergencyRelease marks that an emergency release has occurred
func (*ClientManager) NotifyShutdown ¶
func (cm *ClientManager) NotifyShutdown()
NotifyShutdown sends shutdown notification to all connected clients
func (*ClientManager) RegisterClient ¶
func (cm *ClientManager) RegisterClient(id, name, address string)
RegisterClient registers a new client connection
func (*ClientManager) SetOnActivity ¶
func (cm *ClientManager) SetOnActivity(callback func(level, message string))
SetOnActivity sets a callback for activity notifications
func (*ClientManager) SetSSHServer ¶
func (cm *ClientManager) SetSSHServer(sshServer *network.SSHServer)
SetSSHServer sets the SSH server for sending events to clients
func (*ClientManager) Start ¶
func (cm *ClientManager) Start(ctx context.Context, port int) error
Start starts the client manager SSH server
func (*ClientManager) SwitchToClient ¶
func (cm *ClientManager) SwitchToClient(clientID string) error
SwitchToClient switches input control to the specified client
func (*ClientManager) SwitchToLocal ¶
func (cm *ClientManager) SwitchToLocal() error
SwitchToLocal switches input control back to the local system
func (*ClientManager) SwitchToNextClient ¶
func (cm *ClientManager) SwitchToNextClient() error
SwitchToNextClient switches to the next available client
func (*ClientManager) UnregisterClient ¶
func (cm *ClientManager) UnregisterClient(id string)
UnregisterClient removes a client connection
type ConnectedClient ¶
type ConnectedClient struct {
ID string
Name string
Address string
Status protocol.ClientStatus
ConnectedAt time.Time
// Client configuration received on connect
Monitors []*protocol.Monitor
Capabilities *protocol.ClientCapabilities
}
ConnectedClient represents a client that can receive input
type EmergencyRelease ¶
type EmergencyRelease struct {
// contains filtered or unexported fields
}
EmergencyRelease provides multiple mechanisms for emergency control release
func NewEmergencyRelease ¶
func NewEmergencyRelease(manager *ClientManager) *EmergencyRelease
NewEmergencyRelease creates a new emergency release handler
func (*EmergencyRelease) Start ¶
func (er *EmergencyRelease) Start()
Start begins monitoring for emergency release conditions
func (*EmergencyRelease) Stop ¶
func (er *EmergencyRelease) Stop()
Stop stops all emergency monitoring
func (*EmergencyRelease) UpdateActivity ¶
func (er *EmergencyRelease) UpdateActivity()
UpdateActivity updates the last activity timestamp
type Server ¶
type Server struct {
// contains filtered or unexported fields
}
Server represents the main server
func (*Server) GetClientManager ¶
func (s *Server) GetClientManager() *ClientManager
GetClientManager returns the client manager instance
func (*Server) GetNetworkServer ¶
GetNetworkServer returns the SSH server instance
func (*Server) GetSSHAuthKeysPath ¶
GetSSHAuthKeysPath returns the expanded SSH authorized keys path
func (*Server) GetSSHHostKeyPath ¶
GetSSHHostKeyPath returns the expanded SSH host key path
func (*Server) StartNetworking ¶
StartNetworking starts the SSH server after auth handlers are set