Make highlighting optional for broadcasts

...And beeping on broadcasts, too
This commit is contained in:
Ken Piper 2014-12-15 01:21:40 -05:00
parent d4da1ac1cc
commit 7634d0b170
2 changed files with 11 additions and 11 deletions

View File

@ -233,7 +233,7 @@ func (c *Client) handleShell(channel ssh.Channel) {
if c.IsSilenced() || len(msg) > 1000 { if c.IsSilenced() || len(msg) > 1000 {
c.SysMsg("Message rejected.") c.SysMsg("Message rejected.")
} else { } else {
c.Server.Broadcast(msg, nil) c.Server.Broadcast(msg, nil, false)
} }
case "/nick": case "/nick":
if len(parts) == 2 { if len(parts) == 2 {
@ -280,7 +280,7 @@ func (c *Client) handleShell(channel ssh.Channel) {
client.SysMsg("Banned by %s.", c.ColoredName()) client.SysMsg("Banned by %s.", c.ColoredName())
c.Server.Ban(fingerprint, nil) c.Server.Ban(fingerprint, nil)
client.Conn.Close() client.Conn.Close()
c.Server.Broadcast(fmt.Sprintf("* %s was banned by %s", parts[1], c.ColoredName()), nil) c.Server.Broadcast(fmt.Sprintf("* %s was banned by %s", parts[1], c.ColoredName()), nil, true)
} }
} }
case "/op": case "/op":
@ -310,7 +310,7 @@ func (c *Client) handleShell(channel ssh.Channel) {
} else { } else {
client.SysMsg("Kicked by %s.", c.ColoredName()) client.SysMsg("Kicked by %s.", c.ColoredName())
client.Conn.Close() client.Conn.Close()
c.Server.Broadcast(fmt.Sprintf("* %s was kicked by %s", parts[1], c.ColoredName()), nil) c.Server.Broadcast(fmt.Sprintf("* %s was kicked by %s", parts[1], c.ColoredName()), nil, true)
} }
} }
case "/silence": case "/silence":
@ -347,7 +347,7 @@ func (c *Client) handleShell(channel ssh.Channel) {
} }
// Shutdown after 5 seconds // Shutdown after 5 seconds
go func() { go func() {
c.Server.Broadcast(ColorString("31", msg), nil) c.Server.Broadcast(ColorString("31", msg), nil, true)
time.Sleep(time.Second * 5) time.Sleep(time.Second * 5)
c.Server.Stop() c.Server.Stop()
}() }()
@ -422,7 +422,7 @@ func (c *Client) handleShell(channel ssh.Channel) {
c.SysMsg("Message rejected.") c.SysMsg("Message rejected.")
continue continue
} }
c.Server.Broadcast(msg, c) c.Server.Broadcast(msg, c, true)
c.lastTX = time.Now() c.lastTX = time.Now()
} }

View File

@ -91,11 +91,11 @@ func (s *Server) Len() int {
// SysMsg broadcasts the given message to everyone // SysMsg broadcasts the given message to everyone
func (s *Server) SysMsg(msg string, args ...interface{}) { func (s *Server) SysMsg(msg string, args ...interface{}) {
s.Broadcast(ContinuousFormat(systemMessageFormat, " * "+fmt.Sprintf(msg, args...)), nil) s.Broadcast(ContinuousFormat(systemMessageFormat, " * "+fmt.Sprintf(msg, args...)), nil, false)
} }
// Broadcast broadcasts the given message to everyone except for the given client // Broadcast broadcasts the given message to everyone except for the given client
func (s *Server) Broadcast(msg string, except *Client) { func (s *Server) Broadcast(msg string, except *Client, canHighlight bool) {
logger.Debugf("Broadcast to %d: %s", s.Len(), msg) logger.Debugf("Broadcast to %d: %s", s.Len(), msg)
s.history.Add(msg) s.history.Add(msg)
@ -104,7 +104,7 @@ func (s *Server) Broadcast(msg string, except *Client) {
continue continue
} }
if strings.Contains(msg, client.Name) { if strings.Contains(msg, client.Name) && canHighlight {
// Turn message red if client's name is mentioned, and send BEL if they have enabled beeping // Turn message red if client's name is mentioned, and send BEL if they have enabled beeping
tmpMsg := strings.Split(msg, Reset) tmpMsg := strings.Split(msg, Reset)
if client.beepMe { if client.beepMe {
@ -150,8 +150,8 @@ func (s *Server) MotdBroadcast(client *Client) {
if s.motd == "" { if s.motd == "" {
return return
} }
s.Broadcast(ContinuousFormat(systemMessageFormat, fmt.Sprintf(" * New MOTD set by %s.", client.ColoredName())), client) s.Broadcast(ContinuousFormat(systemMessageFormat, fmt.Sprintf(" * New MOTD set by %s.", client.ColoredName())), client, false)
s.Broadcast(s.motd, client) s.Broadcast(s.motd, client, false)
} }
// Add adds the client to the list of clients // Add adds the client to the list of clients
@ -174,7 +174,7 @@ func (s *Server) Add(client *Client) {
num := len(s.clients) num := len(s.clients)
s.Unlock() s.Unlock()
s.Broadcast(ContinuousFormat(systemMessageFormat, fmt.Sprintf(" * %s joined. (Total connected: %d)", client.ColoredName(), num)), client) s.Broadcast(ContinuousFormat(systemMessageFormat, fmt.Sprintf(" * %s joined. (Total connected: %d)", client.ColoredName(), num)), client, false)
} }
// Remove removes the given client from the list of clients // Remove removes the given client from the list of clients