# HG changeset patch # User David Demelier # Date 1500995299 -7200 # Node ID 8b615d37d303827223b4dafb0c44e898b963a7b3 # Parent 108e63b449ebffc31c1b59e78b5df6c1941d5d5b Fix #642: plugins must be case sensitive diff -r 108e63b449eb -r 8b615d37d303 CHANGES.md --- a/CHANGES.md Thu Jul 20 16:06:55 2017 +0200 +++ b/CHANGES.md Tue Jul 25 17:08:19 2017 +0200 @@ -4,8 +4,8 @@ irccd 2.1.3 ---------------------- - - Rules are now case insensitive (#645). - + - Rules are now case insensitive (#645), + - Plugin hangman, history and logger are now case insensitive (#642). irccd 2.1.2 2017-06-02 ---------------------- diff -r 108e63b449eb -r 8b615d37d303 plugins/history/history.js --- a/plugins/history/history.js Thu Jul 20 16:06:55 2017 +0200 +++ b/plugins/history/history.js Tue Jul 25 17:08:19 2017 +0200 @@ -142,6 +142,8 @@ function onCommand(server, origin, channel, message) { + channel = channel.toLowerCase(); + var args = message.trim().split(" "); var kw = { channel: channel, @@ -162,6 +164,8 @@ return; } + args[1] = args[1].toLowerCase(); + if (isSelf(server, args[1])) return; @@ -186,19 +190,28 @@ function onJoin(server, origin, channel) { - write(server, channel, Util.splituser(origin)); + origin = Util.splituser(origin).toLowerCase(); + channel = channel.toLowerCase(); + + write(server, channel, origin); } function onMessage(server, origin, channel, message) { - write(server, channel, Util.splituser(origin), message); + origin = Util.splituser(origin).toLowerCase(); + channel = channel.toLowerCase(); + + write(server, channel, origin, message); } onMe = onMessage; function onTopic(server, origin, channel) { - write(server, channel, Util.splituser(origin)); + origin = Util.splituser(origin).toLowerCase(); + channel = channel.toLowerCase(); + + write(server, origin, channel) } function onLoad() @@ -220,5 +233,5 @@ function onNames(server, channel, list) { for (var i = 0; i < list.length; ++i) - write(server, channel, list[i]); + write(server, channel.toLowerCase(), list[i]); } diff -r 108e63b449eb -r 8b615d37d303 plugins/logger/logger.js --- a/plugins/logger/logger.js Thu Jul 20 16:06:55 2017 +0200 +++ b/plugins/logger/logger.js Tue Jul 25 17:08:19 2017 +0200 @@ -124,65 +124,88 @@ function onChannelMode(server, origin, channel, mode, arg) { + origin = origin.toLowerCase(); + channel = channel.toLowerCase(); + write("cmode", keywords(server, channel, origin, { - "arg": arg, - "mode": mode, - "source": channel + "arg": arg, + "mode": mode, + "source": channel })); } function onChannelNotice(server, origin, channel, notice) { + origin = origin.toLowerCase(); + channel = channel.toLowerCase(); + write("cnotice", keywords(server, channel, origin, { - "message": notice, - "source": channel + "message": notice, + "source": channel })); } function onInvite(server, origin, channel) { + origin = origin.toLowerCase(); + channel = channel.toLowerCase(); + write("invite", keywords(server, channel, origin, { - "source": channel + "source": channel })); } function onJoin(server, origin, channel) { + origin = origin.toLowerCase(); + channel = channel.toLowerCase(); + write("join", keywords(server, channel, origin, { - "source": channel + "source": channel })); } function onKick(server, origin, channel, target, reason) { + origin = origin.toLowerCase(); + channel = channel.toLowerCase(); + write("kick", keywords(server, channel, origin, { - "target": target, - "source": channel, - "reason": reason + "target": target, + "source": channel, + "reason": reason })); } function onMe(server, origin, channel, message) { + origin = origin.toLowerCase(); + channel = channel.toLowerCase(); + write("me", keywords(server, channel, origin, { - "message": message, - "source": channel + "message": message, + "source": channel })); } function onMessage(server, origin, channel, message) { + origin = origin.toLowerCase(); + channel = channel.toLowerCase(); + write("message", keywords(server, channel, origin, { - "message": message, - "source": channel + "message": message, + "source": channel })); } function onMode(server, origin, mode) { + origin = origin.toLowerCase(); + write("mode", keywords(server, undefined, origin, { - "mode": mode, - "source": Util.splituser(origin) + "mode": mode, + "source": Util.splituser(origin) })); } @@ -193,32 +216,42 @@ function onNotice(server, origin, notice) { + origin = origin.toLowerCase(); + write("notice", keywords(server, undefined, origin, { - "message": notice, - "source": Util.splituser(origin) + "message": notice, + "source": Util.splituser(origin) })); } function onPart(server, origin, channel, reason) { + origin = origin.toLowerCase(); + channel = channel.toLowerCase(); + write("part", keywords(server, channel, origin, { - "reason": reason, - "source": channel + "reason": reason, + "source": channel })); } function onQuery(server, origin, message) { + origin = origin.toLowerCase(); + write("query", keywords(server, undefined, origin, { - "source": Util.splituser(origin), - "message": message + "source": Util.splituser(origin), + "message": message })); } function onTopic(server, origin, channel, topic) { + origin = origin.toLowerCase(); + channel = channel.toLowerCase(); + write("topic", keywords(server, channel, origin, { - "source": channel, + "source": channel, "topic": topic })); } diff -r 108e63b449eb -r 8b615d37d303 tests/plugin-hangman/main.cpp --- a/tests/plugin-hangman/main.cpp Thu Jul 20 16:06:55 2017 +0200 +++ b/tests/plugin-hangman/main.cpp Tue Jul 25 17:08:19 2017 +0200 @@ -198,7 +198,7 @@ ASSERT_EQ("#hangman:found=hangman:!hangman:test:#hangman:francis!francis@localhost:francis:s k _", m_server->last()); } -TEST_F(HangmanTest, caseInsensitive) +TEST_F(HangmanTest, case_fix_642) { load(); diff -r 108e63b449eb -r 8b615d37d303 tests/plugin-history/main.cpp --- a/tests/plugin-history/main.cpp Thu Jul 20 16:06:55 2017 +0200 +++ b/tests/plugin-history/main.cpp Tue Jul 25 17:08:19 2017 +0200 @@ -124,6 +124,21 @@ ASSERT_EQ("#history:unknown=history:!history:test:#history:destructor!dst@localhost:destructor:nobody", m_server->last()); } +TEST_F(HistoryTest, case_fix_642) +{ + std::regex rule("#history:said=history:!history:test:#history:destructor!dst@localhost:destructor:jean:hello:\\d{2}:\\d{2}"); + + remove(BINARYDIR "/case.json"); + load({{"file", BINARYDIR "/case.json"}}); + + m_plugin->onMessage(m_irccd, MessageEvent{m_server, "JeaN!JeaN@localhost", "#history", "hello"}); + + m_plugin->onCommand(m_irccd, MessageEvent{m_server, "destructor!dst@localhost", "#HISTORY", "said JEAN"}); + ASSERT_TRUE(std::regex_match(m_server->last(), rule)); + m_plugin->onCommand(m_irccd, MessageEvent{m_server, "destructor!dst@localhost", "#HiSToRy", "said JeaN"}); + ASSERT_TRUE(std::regex_match(m_server->last(), rule)); +} + int main(int argc, char **argv) { path::setApplicationPath(argv[0]); diff -r 108e63b449eb -r 8b615d37d303 tests/plugin-logger/main.cpp --- a/tests/plugin-logger/main.cpp Thu Jul 20 16:06:55 2017 +0200 +++ b/tests/plugin-logger/main.cpp Tue Jul 25 17:08:19 2017 +0200 @@ -182,6 +182,15 @@ ASSERT_EQ("topic=test:#staff:jean!jean@localhost:jean:oh yeah yeaaaaaaaah\n", last()); } +TEST_F(LoggerTest, case_fix_642) +{ + load(); + + m_plugin->onMessage(m_irccd, MessageEvent{m_server, "jean!jean@localhost", "#STAFF", "hello guys"}); + + ASSERT_EQ("message=test:#staff:jean!jean@localhost:jean:hello guys\n", last()); +} + int main(int argc, char **argv) { path::setApplicationPath(argv[0]);