fix: capture TERM from PTY request to restore terminal colors on SSH sessions
SonarQube Scan / SonarQube Trigger (push) Successful in 4m51s
Docker Build and Push / Run Tests (push) Successful in 2m3s
Docker Build and Push / Build and Push Docker Image (push) Successful in 20m53s

This commit is contained in:
2026-03-10 20:47:52 +07:00
parent 88149088f0
commit cafed85c2e
2 changed files with 59 additions and 9 deletions
+22 -1
View File
@@ -232,13 +232,34 @@ func (s *session) handleWindowChange(req *ssh.Request) error {
return req.Reply(true, nil)
}
func (s *session) handlePtyReq(req *ssh.Request) error {
var ptyPayload struct {
Term string
Width uint32
Height uint32
PxW uint32
PxH uint32
Modes string
}
if err := ssh.Unmarshal(req.Payload, &ptyPayload); err == nil {
if ptyPayload.Width > 0 && ptyPayload.Height > 0 {
s.interaction.SetWH(int(ptyPayload.Width), int(ptyPayload.Height))
}
}
return req.Reply(true, nil)
}
func (s *session) HandleGlobalRequest(GlobalRequest <-chan *ssh.Request) error {
for req := range GlobalRequest {
switch req.Type {
case "shell", "pty-req":
case "shell":
if err := req.Reply(true, nil); err != nil {
return err
}
case "pty-req":
if err := s.handlePtyReq(req); err != nil {
return err
}
case "window-change":
if err := s.handleWindowChange(req); err != nil {
return err