3
0
mirror of https://github.com/jlu5/PyLink.git synced 2024-12-25 12:12:53 +01:00

relay: when filtering modes, ignore internal mode-type lists (modenames starting with *)

This commit is contained in:
James Lu 2015-07-23 13:36:40 -07:00
parent a8b16d9724
commit 4ce377944c

View File

@ -475,10 +475,14 @@ def relayModes(irc, remoteirc, sender, channel, modes=None):
for name, m in irc.cmodes.items():
supported_char = None
if modechar == m:
if name.startswith('*'):
# This internally is just used for storing which modes
# are which type; ignore them.
continue
if name not in whitelisted_cmodes:
log.debug("(%s) Relay mode: skipping mode (%r, %r) because "
"it isn't a whitelisted (safe) mode for relay.",
irc.name, modechar, arg)
log.debug("(%s) Relay mode: skipping mode %r (%r, %r) because "
"it isn't a whitelisted (safe) cmode for relay.",
irc.name, name, modechar, arg)
break
if modechar in irc.prefixmodes:
# This is a prefix mode (e.g. +o). We must coerse the argument
@ -523,11 +527,15 @@ def getSupportedUmodes(irc, remoteirc, modes):
arg = modepair[1]
for name, m in irc.umodes.items():
supported_char = None
if name.startswith('*'):
# This internally is just used for storing which modes
# are which type; ignore them.
continue
if modechar == m:
if name not in whitelisted_umodes:
log.debug("(%s) getSupportedUmodes: skipping mode (%r, %r) because "
"it isn't a whitelisted (safe) mode for relay.",
irc.name, modechar, arg)
log.debug("(%s) getSupportedUmodes: skipping mode %r (%r, %r) because "
"it isn't a whitelisted (safe) umode for relay.",
irc.name, name, modechar, arg)
break
supported_char = remoteirc.umodes.get(name)
if supported_char: