mirror of
https://github.com/shazow/ssh-chat.git
synced 2025-07-21 04:54:34 +02:00
sshchat, chat: Override terminal echo and do our own echo
This commit is contained in:
parent
6d3fce47cc
commit
eb10bad08e
11
chat/room.go
11
chat/room.go
@ -90,12 +90,7 @@ func (r *Room) HandleMsg(m message.Message) {
|
|||||||
user := m.To()
|
user := m.To()
|
||||||
user.Send(m)
|
user.Send(m)
|
||||||
default:
|
default:
|
||||||
fromMsg, skip := m.(message.MessageFrom)
|
fromMsg, _ := m.(message.MessageFrom)
|
||||||
var skipUser *message.User
|
|
||||||
if skip {
|
|
||||||
skipUser = fromMsg.From()
|
|
||||||
}
|
|
||||||
|
|
||||||
r.history.Add(m)
|
r.history.Add(m)
|
||||||
r.Members.Each(func(_ string, item set.Item) (err error) {
|
r.Members.Each(func(_ string, item set.Item) (err error) {
|
||||||
user := item.Value().(*Member).User
|
user := item.Value().(*Member).User
|
||||||
@ -105,10 +100,6 @@ func (r *Room) HandleMsg(m message.Message) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if skip && skipUser == user {
|
|
||||||
// Skip self
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if _, ok := m.(*message.AnnounceMsg); ok {
|
if _, ok := m.(*message.AnnounceMsg); ok {
|
||||||
if user.Config().Quiet {
|
if user.Config().Quiet {
|
||||||
// Skip announcements
|
// Skip announcements
|
||||||
|
9
host.go
9
host.go
@ -175,6 +175,15 @@ func (h *Host) Connect(term *sshd.Terminal) {
|
|||||||
term.SetPrompt(GetPrompt(user))
|
term.SetPrompt(GetPrompt(user))
|
||||||
user.SetHighlight(user.Name())
|
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)
|
err = h.Leave(user)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user