diff --git a/server.go b/server.go index 896843c..efd66aa 100644 --- a/server.go +++ b/server.go @@ -141,11 +141,39 @@ func (s *Server) RunWorker() { s.DisconnectClient() // if not already done } -func (s *Server) upstreamWorker() { +func (s *Server) postGeneralMessageInRoom(msg string) { // FIXME blank names work well in hexchat, but not in yaaic var BLANK_NICK = "" // "!@" + s.name // "PtokaX" // "\xC2\xA0" + // CTCP action conversion + words := strings.Split(msg, " ") + firstWord := words[0] + remainder := strings.Join(words[1:], " ") + if firstWord == "*" { + firstWord = words[1] + remainder = strings.Join(words[2:], " ") + } + + if s.upstream.UserExists(firstWord) { + // it's a /me in disguise - convert back to a CTCP ACTION + // If it's **our own** action, skip it + if firstWord != s.upstreamLauncher.Self.Nick { + s.reply( + rplMsg, firstWord+"!"+firstWord+"@"+firstWord, BLESSED_CHANNEL, + "\x01ACTION "+remainder+"\x01", + ) + } + + } else { + // genuine system message + s.reply(rplMsg, BLANK_NICK, BLESSED_CHANNEL, msg) + } + +} + +func (s *Server) upstreamWorker() { + // Read loop for { select { @@ -168,7 +196,8 @@ func (s *Server) upstreamWorker() { // description change - no relevance for IRC users case libnmdc.EVENT_CONNECTION_STATE_CHANGED: - s.reply(rplMsg, BLANK_NICK, BLESSED_CHANNEL, "* Upstream: "+hubEvent.StateChange.Format()) + s.postGeneralMessageInRoom("* Upstream: " + hubEvent.StateChange.Format()) + if hubEvent.StateChange == libnmdc.CONNECTIONSTATE_CONNECTED { s.sendNames() // delay doing this until now } @@ -192,28 +221,7 @@ func (s *Server) upstreamWorker() { } case libnmdc.EVENT_SYSTEM_MESSAGE_FROM_CONN, libnmdc.EVENT_SYSTEM_MESSAGE_FROM_HUB: - words := strings.Split(hubEvent.Message, " ") - firstWord := words[0] - remainder := strings.Join(words[1:], " ") - if firstWord == "*" { - firstWord = words[1] - remainder = strings.Join(words[2:], " ") - } - - if s.upstream.UserExists(firstWord) { - // it's a /me in disguise - convert back to a CTCP ACTION - // If it's **our own** action, skip it - if firstWord != s.upstreamLauncher.Self.Nick { - s.reply( - rplMsg, firstWord+"!"+firstWord+"@"+firstWord, BLESSED_CHANNEL, - "\x01ACTION "+remainder+"\x01", - ) - } - - } else { - // genuine system message - s.reply(rplMsg, BLANK_NICK, BLESSED_CHANNEL, hubEvent.Message) - } + s.postGeneralMessageInRoom(hubEvent.Message) } }