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]);