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,18 +56,23 @@ func handleTerminalChannel(d *webrtc.DataChannel) {
return return
} }
if msg.IsString { if msg.IsString {
var size TerminalSize maybeJson := bytes.TrimSpace(msg.Data)
err := json.Unmarshal([]byte(msg.Data), &size) // Cheap check to see if this resembles JSON
if err == nil { if len(maybeJson) > 1 && maybeJson[0] == '{' && maybeJson[len(maybeJson)-1] == '}' {
err = pty.Setsize(ptmx, &pty.Winsize{ var size TerminalSize
Rows: uint16(size.Rows), err := json.Unmarshal(maybeJson, &size)
Cols: uint16(size.Cols),
})
if err == nil { if err == nil {
return err = pty.Setsize(ptmx, &pty.Winsize{
Rows: uint16(size.Rows),
Cols: uint16(size.Cols),
})
if err == nil {
scopedLogger.Info().Int("rows", size.Rows).Int("cols", size.Cols).Msg("Set terminal size")
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 {