diff --git a/client.go b/client.go index 9b5166e..858e038 100644 --- a/client.go +++ b/client.go @@ -26,11 +26,12 @@ const HELP_TEXT string = SYSTEM_MESSAGE_FORMAT + `-> Available commands: ` + RESET const OP_HELP_TEXT string = SYSTEM_MESSAGE_FORMAT + `-> Available operator commands: - /ban $NAME - Banish a user from the chat - /kick $NAME - Kick em' out. - /op $NAME - Promote a user to server operator. - /silence $NAME - Revoke a user's ability to speak. - /motd $MESSAGE - Sets the Message of the Day + /ban $NAME - Banish a user from the chat + /kick $NAME - Kick em' out. + /op $NAME - Promote a user to server operator. + /silence $NAME - Revoke a user's ability to speak. + /motd $MESSAGE - Sets the Message of the Day + /whitelist $FINGERPRINT - Adds pubkey fingerprint to the connection whitelist ` + RESET const ABOUT_TEXT string = SYSTEM_MESSAGE_FORMAT + `-> ssh-chat is made by @shazow. @@ -324,6 +325,16 @@ func (c *Client) handleShell(channel ssh.Channel) { c.Server.SetMotd(c, newmotd) c.Server.MotdBroadcast(c) } + case "/whitelist": /* whitelist a fingerprint */ + if !c.Server.IsOp(c) { + c.SysMsg("You're not an admin.") + } else if len(parts) != 2 { + c.SysMsg("Missing $FINGERPRINT from: /whitelist $FINGERPRINT") + } else { + fingerprint := parts[1] + c.Server.Whitelist(fingerprint) + c.SysMsg("Added %s to the whitelist", fingerprint) + } default: c.SysMsg("Invalid command: %s", line) diff --git a/server.go b/server.go index fe6d220..77235c5 100644 --- a/server.go +++ b/server.go @@ -237,9 +237,9 @@ func (s *Server) Op(fingerprint string) { func (s *Server) Whitelist(fingerprint string) { logger.Infof("Adding whitelist: %s", fingerprint) - s.lock.Lock() + s.Lock() s.whitelist[fingerprint] = struct{}{} - s.lock.Unlock() + s.Unlock() } func (s *Server) Uptime() string {