Commit d43a2b01 authored by Juliusz Chroboczek's avatar Juliusz Chroboczek

Implement WallOps to send a warning to all operators.

parent 65357759
...@@ -480,6 +480,24 @@ func (g *Group) Shutdown(message string) { ...@@ -480,6 +480,24 @@ func (g *Group) Shutdown(message string) {
}) })
} }
type warner interface {
Warn(oponly bool, message string) error
}
func (g *Group) WallOps(message string) {
clients := g.GetClients(nil)
for _, c := range clients {
w, ok := c.(warner)
if !ok {
continue
}
err := w.Warn(true, message)
if err != nil {
log.Printf("WallOps: %v", err)
}
}
}
func FromJSTime(tm int64) time.Time { func FromJSTime(tm int64) time.Time {
if tm == 0 { if tm == 0 {
return time.Time{} return time.Time{}
......
...@@ -1393,6 +1393,20 @@ func clientWriter(conn *websocket.Conn, ch <-chan interface{}, done chan<- struc ...@@ -1393,6 +1393,20 @@ func clientWriter(conn *websocket.Conn, ch <-chan interface{}, done chan<- struc
} }
} }
func (c *webClient) Warn(oponly bool, message string) error {
if oponly && !c.permissions.Op {
return nil
}
return c.write(clientMessage{
Type: "usermessage",
Kind: "warning",
Dest: c.id,
Privileged: true,
Value: &message,
})
}
var ErrClientDead = errors.New("client is dead") var ErrClientDead = errors.New("client is dead")
func (c *webClient) action(m interface{}) error { func (c *webClient) action(m interface{}) error {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment