diff --git a/protocols/clientbot.py b/protocols/clientbot.py index 43a2c5c..d04e13f 100644 --- a/protocols/clientbot.py +++ b/protocols/clientbot.py @@ -601,7 +601,7 @@ class ClientbotWrapperProtocol(IRCCommonProtocol): # <- :charybdis.midnight.vpn 353 ice = #test :ice @GL # Mark "@"-type channels as secret automatically, per RFC2812. - channel = self.to_lower(args[2]) + channel = args[2] if args[1] == '@': self.apply_modes(channel, [('+s', None)]) @@ -720,7 +720,7 @@ class ClientbotWrapperProtocol(IRCCommonProtocol): users = self.who_received.copy() self.who_received.clear() - channel = self.to_lower(args[1]) + channel = args[1] c = self.channels[channel] c.who_received = True @@ -755,7 +755,7 @@ class ClientbotWrapperProtocol(IRCCommonProtocol): Handles incoming JOINs. """ # <- :GL|!~GL@127.0.0.1 JOIN #whatever - channel = self.to_lower(args[0]) + channel = args[0] self.join(source, channel) return {'channel': channel, 'users': [source], 'modes': self.channels[channel].modes} @@ -765,7 +765,7 @@ class ClientbotWrapperProtocol(IRCCommonProtocol): Handles incoming KICKs. """ # <- :GL!~gl@127.0.0.1 KICK #whatever GL| :xd - channel = self.to_lower(args[0]) + channel = args[0] target = self.nick_to_uid(args[1]) try: @@ -805,7 +805,6 @@ class ClientbotWrapperProtocol(IRCCommonProtocol): # <- :ice MODE ice :+Zi target = args[0] if utils.isChannel(target): - target = self.to_lower(target) oldobj = self.channels[target].deepcopy() else: target = self.nick_to_uid(target) @@ -829,7 +828,7 @@ class ClientbotWrapperProtocol(IRCCommonProtocol): # -> MODE #test # <- :midnight.vpn 324 GL #test +nt # <- :midnight.vpn 329 GL #test 1491773459 - channel = self.to_lower(args[1]) + channel = args[1] modes = args[2:] log.debug('(%s) Got RPL_CHANNELMODEIS (324) modes %s for %s', self.name, modes, channel) changedmodes = self.parse_modes(channel, modes) @@ -837,7 +836,7 @@ class ClientbotWrapperProtocol(IRCCommonProtocol): def handle_329(self, source, command, args): """Handles TS announcements via RPL_CREATIONTIME.""" - channel = self.to_lower(args[1]) + channel = args[1] ts = int(args[2]) self.channels[channel].ts = ts @@ -900,11 +899,9 @@ class ClientbotWrapperProtocol(IRCCommonProtocol): log.warning('(%s) Received %s to %s being routed the wrong way!', self.name, command, target) return - # We use lowercase channels internally. - if utils.isChannel(target): - target = self.to_lower(target) - else: + if not utils.isChannel(target): target = self.nick_to_uid(target) + if target: return {'target': target, 'text': args[1]} handle_notice = handle_privmsg diff --git a/protocols/hybrid.py b/protocols/hybrid.py index ebcb3f1..452f089 100644 --- a/protocols/hybrid.py +++ b/protocols/hybrid.py @@ -210,7 +210,7 @@ class HybridProtocol(TS6Protocol): def handle_tburst(self, numeric, command, args): """Handles incoming topic burst (TBURST) commands.""" # <- :0UY TBURST 1459308205 #testchan 1459309379 dan!~d@localhost :sdf - channel = self.to_lower(args[1]) + channel = args[1] ts = args[2] setter = args[3] topic = args[-1] diff --git a/protocols/inspircd.py b/protocols/inspircd.py index 758a012..89b2184 100644 --- a/protocols/inspircd.py +++ b/protocols/inspircd.py @@ -207,7 +207,7 @@ class InspIRCdProtocol(TS6BaseProtocol): self.apply_modes(target, modes) joinedmodes = self.join_modes(modes) if utils.isChannel(target): - ts = ts or self.channels[self.to_lower(target)].ts + ts = ts or self.channels[target].ts self._send_with_prefix(numeric, 'FMODE %s %s %s' % (target, ts, joinedmodes)) else: self._send_with_prefix(numeric, 'MODE %s %s' % (target, joinedmodes)) @@ -526,7 +526,7 @@ class InspIRCdProtocol(TS6BaseProtocol): def handle_fjoin(self, servernumeric, command, args): """Handles incoming FJOIN commands (InspIRCd equivalent of JOIN/SJOIN).""" # :70M FJOIN #chat 1423790411 +AFPfjnt 6:5 7:5 9:5 :o,1SRAABIT4 v,1IOAAF53R <...> - channel = self.to_lower(args[0]) + channel = args[0] chandata = self.channels[channel].deepcopy() # InspIRCd sends each channel's users in the form of 'modeprefix(es),UID' userlist = args[-1].split() @@ -614,7 +614,7 @@ class InspIRCdProtocol(TS6BaseProtocol): def handle_fmode(self, numeric, command, args): """Handles the FMODE command, used for channel mode changes.""" # <- :70MAAAAAA FMODE #chat 1433653462 +hhT 70MAAAAAA 70MAAAAAD - channel = self.to_lower(args[0]) + channel = args[0] oldobj = self.channels[channel].deepcopy() modes = args[2:] changedmodes = self.parse_modes(channel, modes) @@ -645,7 +645,7 @@ class InspIRCdProtocol(TS6BaseProtocol): def handle_ftopic(self, numeric, command, args): """Handles incoming FTOPIC (sets topic on burst).""" # <- :70M FTOPIC #channel 1434510754 GLo|o|!GLolol@escape.the.dreamland.ca :Some channel topic - channel = self.to_lower(args[0]) + channel = args[0] ts = args[1] setter = args[2] topic = args[-1] @@ -659,7 +659,7 @@ class InspIRCdProtocol(TS6BaseProtocol): def handle_knock(self, numeric, command, args): """Handles channel KNOCKs.""" # <- :70MAAAAAA ENCAP * KNOCK #blah :abcdefg - channel = self.to_lower(args[0]) + channel = args[0] text = args[1] return {'channel': channel, 'text': text} @@ -770,7 +770,7 @@ class InspIRCdProtocol(TS6BaseProtocol): # ENCAP -> SAKICK args: ['#test', '0ALAAAAAB', 'test'] target = args[1] - channel = self.to_lower(args[0]) + channel = args[0] try: reason = args[2] except IndexError: diff --git a/protocols/ircs2s_common.py b/protocols/ircs2s_common.py index 5f3244d..5a52128 100644 --- a/protocols/ircs2s_common.py +++ b/protocols/ircs2s_common.py @@ -450,8 +450,6 @@ class IRCS2SProtocol(IRCCommonProtocol): if (not self.is_internal_client(source)) and (not self.is_internal_server(source)): raise LookupError('No such PyLink client/server exists.') - target = self.to_lower(target) - self._send_with_prefix(source, 'TOPIC %s :%s' % (target, text)) self.channels[target].topic = text self.channels[target].topicset = True @@ -479,7 +477,7 @@ class IRCS2SProtocol(IRCCommonProtocol): # Note that the target is a nickname, not a numeric. target = self._get_UID(args[0]) - channel = self.to_lower(args[1]) + channel = args[1] curtime = int(time.time()) try: @@ -494,7 +492,7 @@ class IRCS2SProtocol(IRCCommonProtocol): def handle_kick(self, source, command, args): """Handles incoming KICKs.""" # :70MAAAAAA KICK #test 70MAAAAAA :some reason - channel = self.to_lower(args[0]) + channel = args[0] kicked = self._get_UID(args[1]) try: @@ -588,7 +586,6 @@ class IRCS2SProtocol(IRCCommonProtocol): # <- ABAAA OM #test +h ABAAA target = self._get_UID(args[0]) if utils.isChannel(target): - target = self.to_lower(target) channeldata = self.channels[target].deepcopy() else: channeldata = None @@ -607,7 +604,7 @@ class IRCS2SProtocol(IRCCommonProtocol): def handle_part(self, source, command, args): """Handles incoming PART commands.""" - channels = self.to_lower(args[0]).split(',') + channels = args[0].split(',') for channel in channels.copy(): if source not in channel: @@ -655,7 +652,7 @@ class IRCS2SProtocol(IRCCommonProtocol): # Note: don't mess with the case of the channel prefix, or ~#channel # messages will break on RFC1459 casemapping networks (it becomes ^#channel # instead). - target = '#'.join((split_channel[0], self.to_lower(split_channel[1]))) + target = '#'.join((split_channel[0], split_channel[1])) log.debug('(%s) Normalizing channel target %s to %s', self.name, args[0], target) return {'target': target, 'text': args[1]} @@ -674,7 +671,7 @@ class IRCS2SProtocol(IRCCommonProtocol): def handle_topic(self, numeric, command, args): """Handles incoming TOPIC changes from clients.""" # <- :70MAAAAAA TOPIC #test :test - channel = self.to_lower(args[0]) + channel = args[0] topic = args[1] oldtopic = self.channels[channel].topic diff --git a/protocols/ngircd.py b/protocols/ngircd.py index 0573463..d5173ef 100644 --- a/protocols/ngircd.py +++ b/protocols/ngircd.py @@ -329,7 +329,7 @@ class NgIRCdProtocol(IRCS2SProtocol): # CHANINFO + # If there is no key, the key is "*". If there is no limit, the limit is "0". - channel = self.to_lower(args[0]) + channel = args[0] # Get rid of +l and +k in the initial parsing; we handle that later by looking at the CHANINFO arguments modes = self.parse_modes(channel, args[1].replace('l', '').replace('k', '')) @@ -468,7 +468,7 @@ class NgIRCdProtocol(IRCS2SProtocol): def handle_njoin(self, source, command, args): # <- :ngircd.midnight.local NJOIN #test :tester,@%GL - channel = self.to_lower(args[0]) + channel = args[0] chandata = self.channels[channel].deepcopy() namelist = [] diff --git a/protocols/p10.py b/protocols/p10.py index 982180f..519b0ea 100644 --- a/protocols/p10.py +++ b/protocols/p10.py @@ -409,7 +409,7 @@ class P10Protocol(IRCS2SProtocol): is_cmode = utils.isChannel(target) if is_cmode: # Channel mode changes have a trailing TS. User mode changes do not. - cobj = self.channels[self.to_lower(target)] + cobj = self.channels[target] ts = ts or cobj.ts # Prevent mode bounces by sending our mode through the server if @@ -1003,7 +1003,7 @@ class P10Protocol(IRCS2SProtocol): # No useful data was sent, ignore. return - channel = self.to_lower(args[0]) + channel = args[0] chandata = self.channels[channel].deepcopy() bans = [] @@ -1101,7 +1101,7 @@ class P10Protocol(IRCS2SProtocol): return {'channels': oldchans, 'text': 'Left all channels.', 'parse_as': 'PART'} else: - channel = self.to_lower(args[0]) + channel = args[0] if ts: # Only update TS if one was sent. self.updateTS(source, channel, ts) @@ -1123,7 +1123,7 @@ class P10Protocol(IRCS2SProtocol): def handle_kick(self, source, command, args): """Handles incoming KICKs.""" # <- ABAAA K #TEST AyAAA :PyLink-devel - channel = self.to_lower(args[0]) + channel = args[0] kicked = args[1] self.handle_part(kicked, 'KICK', [channel, args[2]]) @@ -1137,7 +1137,7 @@ class P10Protocol(IRCS2SProtocol): def handle_topic(self, source, command, args): """Handles TOPIC changes.""" # <- ABAAA T #test GL!~gl@nefarious.midnight.vpn 1460852591 1460855795 :blah - channel = self.to_lower(args[0]) + channel = args[0] topic = args[-1] oldtopic = self.channels[channel].topic @@ -1150,7 +1150,7 @@ class P10Protocol(IRCS2SProtocol): def handle_clearmode(self, numeric, command, args): """Handles CLEARMODE, which is used to clear a channel's modes.""" # <- ABAAA CM #test ovpsmikbl - channel = self.to_lower(args[0]) + channel = args[0] modes = args[1] # Enumerate a list of our existing modes, including prefix modes. diff --git a/protocols/ts6.py b/protocols/ts6.py index b447e33..2fbd147 100644 --- a/protocols/ts6.py +++ b/protocols/ts6.py @@ -178,7 +178,7 @@ class TS6Protocol(TS6BaseProtocol): modes = list(modes) if utils.isChannel(target): - ts = ts or self.channels[self.to_lower(target)].ts + ts = ts or self.channels[target].ts # TMODE: # parameters: channelTS, channel, cmode changes, opt. cmode parameters... @@ -438,7 +438,7 @@ class TS6Protocol(TS6BaseProtocol): """Handles incoming SJOIN commands.""" # parameters: channelTS, channel, simple modes, opt. mode parameters..., nicklist # <- :0UY SJOIN 1451041566 #channel +nt :@0UYAAAAAB - channel = self.to_lower(args[1]) + channel = args[1] chandata = self.channels[channel].deepcopy() userlist = args[-1].split() @@ -501,7 +501,7 @@ class TS6Protocol(TS6BaseProtocol): self.users[numeric].channels.discard(channel) return {'channels': oldchans, 'text': 'Left all channels.', 'parse_as': 'PART'} else: - channel = self.to_lower(args[1]) + channel = args[1] self.updateTS(numeric, channel, ts) self.users[numeric].channels.add(channel) @@ -602,7 +602,7 @@ class TS6Protocol(TS6BaseProtocol): """Handles incoming TMODE commands (channel mode change).""" # <- :42XAAAAAB TMODE 1437450768 #test -c+lkC 3 agte4 # <- :0UYAAAAAD TMODE 0 #a +h 0UYAAAAAD - channel = self.to_lower(args[1]) + channel = args[1] oldobj = self.channels[channel].deepcopy() modes = args[2:] changedmodes = self.parse_modes(channel, modes) @@ -614,7 +614,7 @@ class TS6Protocol(TS6BaseProtocol): def handle_tb(self, numeric, command, args): """Handles incoming topic burst (TB) commands.""" # <- :42X TB #chat 1467427448 GL!~gl@127.0.0.1 :test - channel = self.to_lower(args[0]) + channel = args[0] ts = args[1] setter = args[2] topic = args[-1] @@ -626,7 +626,7 @@ class TS6Protocol(TS6BaseProtocol): """Handles extended topic burst (ETB).""" # <- :00AAAAAAC ETB 0 #test 1470021157 GL :test | abcd # Same as TB, with extra TS and extensions arguments. - channel = self.to_lower(args[1]) + channel = args[1] ts = args[2] setter = args[3] topic = args[-1] @@ -644,7 +644,7 @@ class TS6Protocol(TS6BaseProtocol): """Handles incoming BMASK commands (ban propagation on burst).""" # <- :42X BMASK 1424222769 #dev b :*!test@*.isp.net *!badident@* # This is used for propagating bans, not TMODE! - channel = self.to_lower(args[1]) + channel = args[1] mode = args[2] ts = int(args[0]) modes = [] diff --git a/protocols/unreal.py b/protocols/unreal.py index cfb91a7..5c6d9b5 100644 --- a/protocols/unreal.py +++ b/protocols/unreal.py @@ -217,7 +217,7 @@ class UnrealProtocol(TS6BaseProtocol): modes[idx] = (mode[0], self._expandPUID(mode[1])) # The MODE command is used for channel mode changes only - ts = ts or self.channels[self.to_lower(target)].ts + ts = ts or self.channels[target].ts # 7 characters for "MODE", the space between MODE and the target, the space between the # target and mode list, and the space between the mode list and TS. @@ -559,7 +559,7 @@ class UnrealProtocol(TS6BaseProtocol): """Handles the UnrealIRCd SJOIN command.""" # <- :001 SJOIN 1444361345 #test :001AAAAAA @001AAAAAB +001AAAAAC # <- :001 SJOIN 1483250129 #services +nt :+001OR9V02 @*~001DH6901 &*!*@test "*!*@blah.blah '*!*@yes.no - channel = self.to_lower(args[1]) + channel = args[1] chandata = self.channels[channel].deepcopy() userlist = args[-1].split() @@ -685,7 +685,7 @@ class UnrealProtocol(TS6BaseProtocol): # Also, we need to get rid of that extra space following the +f argument. :| if utils.isChannel(args[0]): - channel = self.to_lower(args[0]) + channel = args[0] oldobj = self.channels[channel].deepcopy() modes = [arg for arg in args[1:] if arg] # normalize whitespace @@ -850,7 +850,7 @@ class UnrealProtocol(TS6BaseProtocol): """Handles the TOPIC command.""" # <- GL TOPIC #services GL 1444699395 :weeee # <- TOPIC #services devel.relay 1452399682 :test - channel = self.to_lower(args[0]) + channel = args[0] topic = args[-1] setter = args[1] ts = args[2]