mirror of
https://github.com/jlu5/PyLink.git
synced 2024-11-30 14:49:28 +01:00
relay: mangle the mode name when forwarding extban->cmode so that +b syntax filters don't trigger
This should allow bidirectional forwarding between UnrealIRCd +b ~T:block:<glob> and InspIRCd +g <glob> to work. (#557)
This commit is contained in:
parent
8fcb5f9df0
commit
a2cb4daa46
@ -962,6 +962,10 @@ def get_supported_cmodes(irc, remoteirc, channel, modes):
|
|||||||
log.debug('(%s) relay.get_supported_cmodes: expanding acting extban %s%s %s to %s%s %s for %s',
|
log.debug('(%s) relay.get_supported_cmodes: expanding acting extban %s%s %s to %s%s %s for %s',
|
||||||
irc.name, prefix, orig_supported_char, old_arg, prefix,
|
irc.name, prefix, orig_supported_char, old_arg, prefix,
|
||||||
supported_char, arg, remoteirc.name)
|
supported_char, arg, remoteirc.name)
|
||||||
|
# Override the mode name so that we're not overly strict about nick!user@host
|
||||||
|
# conformance. Note: the reverse (cmode->extban) is not done because that would
|
||||||
|
# also trigger the nick!user@host filter for +b.
|
||||||
|
name = extban_name
|
||||||
elif extban_name in remoteirc.extbans_acting:
|
elif extban_name in remoteirc.extbans_acting:
|
||||||
# This is also an extban on the target network.
|
# This is also an extban on the target network.
|
||||||
# Just chop off the local prefix now; we rewrite it later after processing
|
# Just chop off the local prefix now; we rewrite it later after processing
|
||||||
@ -1020,8 +1024,9 @@ def get_supported_cmodes(irc, remoteirc, channel, modes):
|
|||||||
else:
|
else:
|
||||||
if name in ('ban', 'banexception', 'invex', 'quiet') and not remoteirc.is_hostmask(arg):
|
if name in ('ban', 'banexception', 'invex', 'quiet') and not remoteirc.is_hostmask(arg):
|
||||||
# Don't add unsupported bans that don't match n!u@h syntax.
|
# Don't add unsupported bans that don't match n!u@h syntax.
|
||||||
log.debug("(%s) relay.get_supported_cmodes: skipping unsupported extban/mode (%r, %r) because it doesn't match nick!user@host.",
|
log.debug("(%s) relay.get_supported_cmodes: skipping unsupported extban/mode (%r, %r) "
|
||||||
irc.name, supported_char, arg)
|
"because it doesn't match nick!user@host. (name=%r)",
|
||||||
|
irc.name, supported_char, arg, name)
|
||||||
break
|
break
|
||||||
|
|
||||||
# We broke up an acting extban earlier. Now, rewrite it into a new mode by joining the prefix and data together.
|
# We broke up an acting extban earlier. Now, rewrite it into a new mode by joining the prefix and data together.
|
||||||
|
Loading…
Reference in New Issue
Block a user