in src/sessionmanagerplugin/session/shellsession/shellsession_unix.go [62:86]
func (s *ShellSession) handleKeyboardInput(log log.T) (err error) {
var (
stdinBytesLen int
)
//handle double echo and disable input buffering
s.disableEchoAndInputBuffering()
stdinBytes := make([]byte, StdinBufferLimit)
reader := bufio.NewReader(os.Stdin)
for {
if stdinBytesLen, err = reader.Read(stdinBytes); err != nil {
log.Errorf("Unable read from Stdin: %v", err)
break
}
if err = s.Session.DataChannel.SendInputDataMessage(log, message.Output, stdinBytes[:stdinBytesLen]); err != nil {
log.Errorf("Failed to send UTF8 char: %v", err)
break
}
// sleep to limit the rate of data transfer
time.Sleep(time.Millisecond)
}
return
}