From eb10bad08ef64fb17642eecf4f0e2ce6362c34c2 Mon Sep 17 00:00:00 2001 From: Andrey Petrov Date: Fri, 15 Mar 2019 16:01:47 -0400 Subject: [PATCH] sshchat, chat: Override terminal echo and do our own echo --- chat/room.go | 11 +---------- host.go | 9 +++++++++ 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/chat/room.go b/chat/room.go index 71e3171..4fb56dd 100644 --- a/chat/room.go +++ b/chat/room.go @@ -90,12 +90,7 @@ func (r *Room) HandleMsg(m message.Message) { user := m.To() user.Send(m) default: - fromMsg, skip := m.(message.MessageFrom) - var skipUser *message.User - if skip { - skipUser = fromMsg.From() - } - + fromMsg, _ := m.(message.MessageFrom) r.history.Add(m) r.Members.Each(func(_ string, item set.Item) (err error) { user := item.Value().(*Member).User @@ -105,10 +100,6 @@ func (r *Room) HandleMsg(m message.Message) { return } - if skip && skipUser == user { - // Skip self - return - } if _, ok := m.(*message.AnnounceMsg); ok { if user.Config().Quiet { // Skip announcements diff --git a/host.go b/host.go index 068b969..9db1479 100644 --- a/host.go +++ b/host.go @@ -175,6 +175,15 @@ func (h *Host) Connect(term *sshd.Terminal) { term.SetPrompt(GetPrompt(user)) user.SetHighlight(user.Name()) } + + // Gross hack to override line echo in golang.org/x/crypto/ssh/terminal + term.Write([]byte{ + 27, // keyEscape + '[', 'A', // Up + 27, // keyEscape + '[', '2', 'K', // Clear line + }) + // May the gods have mercy on our souls. } err = h.Leave(user)