Track active VNC sessions in status and address CodeRabbit findings

This commit is contained in:
Viktor Liu
2026-05-16 17:06:19 +02:00
parent 9f0aa1ce26
commit 62cf9e873b
12 changed files with 708 additions and 471 deletions

View File

@@ -24,6 +24,7 @@ const (
type vncServer interface {
Start(ctx context.Context, addr netip.AddrPort, network netip.Prefix) error
Stop() error
ActiveSessions() []vncserver.ActiveSessionInfo
}
func (e *Engine) setupVNCPortRedirection() error {
@@ -208,9 +209,13 @@ func (e *Engine) updateVNCServerAuth(vncAuth *mgmProto.VNCAuth) {
})
}
// GetVNCServerStatus returns whether the VNC server is running.
func (e *Engine) GetVNCServerStatus() bool {
return e.vncSrv != nil
// GetVNCServerStatus returns whether the VNC server is running and the list
// of active VNC sessions.
func (e *Engine) GetVNCServerStatus() (enabled bool, sessions []vncserver.ActiveSessionInfo) {
if e.vncSrv == nil {
return false, nil
}
return true, e.vncSrv.ActiveSessions()
}
func (e *Engine) stopVNCServer() error {

View File

@@ -21,8 +21,7 @@ func newConsoleVNC() (vncserver.ScreenCapturer, vncserver.InputInjector, error)
}
inj, err := vncserver.NewUInputInjector(w, h)
if err != nil {
poller.Close()
return nil, nil, fmt.Errorf("uinput init: %w", err)
return poller, &vncserver.StubInputInjector{}, nil
}
return poller, inj, nil
}