# 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
# 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