Mercurial > irccd
changeset 454:8b615d37d303 release-2.1
Fix #642: plugins must be case sensitive
author | David Demelier <markand@malikania.fr> |
---|---|
date | Tue, 25 Jul 2017 17:08:19 +0200 |
parents | 108e63b449eb |
children | c81b38ec7bd2 |
files | CHANGES.md plugins/history/history.js plugins/logger/logger.js tests/plugin-hangman/main.cpp tests/plugin-history/main.cpp tests/plugin-logger/main.cpp |
diffstat | 6 files changed, 100 insertions(+), 30 deletions(-) [+] |
line wrap: on
line diff
--- 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 ----------------------
--- 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]); }
--- 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 })); }
--- 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();
--- 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]);
--- 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]);