From f0263865bd200f3053537b17251df24e95086be7 Mon Sep 17 00:00:00 2001 From: Sylvie Crowe <107814465+oneirocosm@users.noreply.github.com> Date: Thu, 18 Jul 2024 16:56:00 -0700 Subject: [PATCH] Remote Pty Resize (#123) fix: set SIGWINCH on remote pty blocks --- pkg/blockcontroller/blockcontroller.go | 5 ++++- pkg/shellexec/conninterface.go | 9 +++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/pkg/blockcontroller/blockcontroller.go b/pkg/blockcontroller/blockcontroller.go index a686f6d68..a04f04509 100644 --- a/pkg/blockcontroller/blockcontroller.go +++ b/pkg/blockcontroller/blockcontroller.go @@ -346,8 +346,11 @@ func (bc *BlockController) DoRunShellCommand(rc *RunShellOpts, blockMeta map[str if err != nil { log.Printf("error setting term size: %v\n", err) } + err = bc.ShellProc.Cmd.SetSize(ic.TermSize.Rows, ic.TermSize.Cols) + if err != nil { + log.Printf("error setting remote SIGWINCH: %v\n", err) + } } - // TODO signals } }() go func() { diff --git a/pkg/shellexec/conninterface.go b/pkg/shellexec/conninterface.go index 178af27ee..1fcaa8fef 100644 --- a/pkg/shellexec/conninterface.go +++ b/pkg/shellexec/conninterface.go @@ -15,6 +15,7 @@ type ConnInterface interface { StdinPipe() (io.WriteCloser, error) StdoutPipe() (io.ReadCloser, error) StderrPipe() (io.ReadCloser, error) + SetSize(w int, h int) error } type CmdWrap struct { @@ -52,6 +53,10 @@ func (cw CmdWrap) StderrPipe() (io.ReadCloser, error) { return cw.Cmd.StderrPipe() } +func (cw CmdWrap) SetSize(w int, h int) error { + return nil +} + type SessionWrap struct { Session *ssh.Session StartCmd string @@ -90,3 +95,7 @@ func (sw SessionWrap) StderrPipe() (io.ReadCloser, error) { } return io.NopCloser(stderrReader), nil } + +func (sw SessionWrap) SetSize(h int, w int) error { + return sw.Session.WindowChange(h, w) +}