fix: Log spam when using a web terminal #547

This commit is contained in:
john-- 2025-06-01 10:34:26 -04:00
parent 8d77d75294
commit d87c3fb31a
1 changed files with 15 additions and 9 deletions

View File

@ -1,6 +1,7 @@
package kvm package kvm
import ( import (
"bytes"
"encoding/json" "encoding/json"
"io" "io"
"os" "os"
@ -55,19 +56,24 @@ func handleTerminalChannel(d *webrtc.DataChannel) {
return return
} }
if msg.IsString { if msg.IsString {
maybeJson := bytes.TrimSpace(msg.Data)
// Cheap check to see if this resembles JSON
if len(maybeJson) > 1 && maybeJson[0] == '{' && maybeJson[len(maybeJson)-1] == '}' {
var size TerminalSize var size TerminalSize
err := json.Unmarshal([]byte(msg.Data), &size) err := json.Unmarshal(maybeJson, &size)
if err == nil { if err == nil {
err = pty.Setsize(ptmx, &pty.Winsize{ err = pty.Setsize(ptmx, &pty.Winsize{
Rows: uint16(size.Rows), Rows: uint16(size.Rows),
Cols: uint16(size.Cols), Cols: uint16(size.Cols),
}) })
if err == nil { if err == nil {
scopedLogger.Info().Int("rows", size.Rows).Int("cols", size.Cols).Msg("Set terminal size")
return return
} }
} }
scopedLogger.Warn().Err(err).Msg("Failed to parse terminal size") scopedLogger.Warn().Err(err).Msg("Failed to parse terminal size")
} }
}
_, err := ptmx.Write(msg.Data) _, err := ptmx.Write(msg.Data)
if err != nil { if err != nil {
scopedLogger.Warn().Err(err).Msg("Failed to write to pty") scopedLogger.Warn().Err(err).Msg("Failed to write to pty")