]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/blobdiff - lib/rbot/irc.rb
Previous attempt at cleaning up the prefix matcher were too restrictive, try using...
[user/henk/code/ruby/rbot.git] / lib / rbot / irc.rb
index a07c8b230a8156a241cedb6709478fadb1003f04..c2c1e82fdd518c30889a1eed9cad0830857ea9de 100644 (file)
@@ -554,12 +554,18 @@ class Regexp
     # User-matching Regexp\r
     GEN_USER_ID = /(#{GEN_NICK})(?:(?:!(#{GEN_USER}))?@(#{GEN_HOST_EXT}))?/\r
 \r
-    # For Netmask, we want to allow wildcards * and ? in the nick\r
-    # (they are already allowed in the user and host part\r
-    GEN_NICK_MASK = /(?:#{NICK_FIRST}|[?*])?(?:#{NICK_ANY}|[?*])+/\r
+    # Things such has the BIP proxy send invalid nicks in a complete netmask,\r
+    # so we want to match this, rather: this matches either a compliant nick\r
+    # or a a string with a very generic nick, a very generic hostname after an\r
+    # @ sign, and an optional user after a !\r
+    BANG_AT = /#{GEN_NICK}|\S+?(?:!\S+?)?@\S+?/\r
 \r
-    # Netmask-matching Regexp\r
-    GEN_MASK = /(#{GEN_NICK_MASK})(?:(?:!(#{GEN_USER}))?@(#{GEN_HOST_EXT}))?/\r
+    # # For Netmask, we want to allow wildcards * and ? in the nick\r
+    # # (they are already allowed in the user and host part\r
+    # GEN_NICK_MASK = /(?:#{NICK_FIRST}|[?*])?(?:#{NICK_ANY}|[?*])+/\r
+\r
+    # # Netmask-matching Regexp\r
+    # GEN_MASK = /(#{GEN_NICK_MASK})(?:(?:!(#{GEN_USER}))?@(#{GEN_HOST_EXT}))?/\r
 \r
   end\r
 \r
@@ -608,7 +614,9 @@ module Irc
       # Now we can see if the given string _str_ is an actual Netmask\r
       if str.respond_to?(:to_str)\r
         case str.to_str\r
-        when /^(?:#{Regexp::Irc::GEN_MASK})?$/\r
+          # We match a pretty generic string, to work around non-compliant\r
+          # servers\r
+        when /^(?:(\S+?)(?:(?:!(\S+?))?@(\S+))?)?$/\r
           # We do assignment using our internal methods\r
           self.nick = $1\r
           self.user = $2\r