sshchat, chat: Override terminal echo and do our own echo

This commit is contained in:
Andrey Petrov 2019-03-15 16:01:47 -04:00
parent 6d3fce47cc
commit eb10bad08e
2 changed files with 10 additions and 10 deletions

View File

@ -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

View File

@ -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)