Fix regression from repeat protection rework.

This commit is contained in:
Krytarik Raido 2021-07-25 03:34:04 +02:00
parent dc0615a29a
commit 8d0d64e843

View File

@ -1607,8 +1607,7 @@ class ChanTracker(callbacks.Plugin, plugins.ChannelDBHandler):
f = self._logChan
if be:
if reason and len(reason):
bm = i.mark(irc, uid, reason, msg.prefix,
self.getDb(irc.network), f, self)
bm = i.mark(irc, uid, reason, msg.prefix, self.getDb(irc.network), f, self)
else:
bm = True
b = b and be and bm
@ -3986,11 +3985,11 @@ class ChanTracker(callbacks.Plugin, plugins.ChannelDBHandler):
flag = ircdb.makeChannelCapability(channel, 'flood')
isFlood = False
if ircdb.checkCapability(msg.prefix, flag):
isFlood = self._isFlood(irc, channel, best)
isFlood = self._isSomething(irc, channel, best, 'flood')
flag = ircdb.makeChannelCapability(channel, 'lowFlood')
isLowFlood = False
if ircdb.checkCapability(msg.prefix, flag):
isLowFlood = self._isLowFlood(irc, channel, best)
isLowFlood = self._isSomething(irc, channel, best, 'lowFlood')
flag = ircdb.makeChannelCapability(channel, 'repeat')
isRepeat = False
if ircdb.checkCapability(msg.prefix, flag):
@ -4005,6 +4004,7 @@ class ChanTracker(callbacks.Plugin, plugins.ChannelDBHandler):
isCap = self._isCap(irc, channel, best, text)
flag = ircdb.makeChannelCapability(channel, 'pattern')
isPattern = False
isTemporaryPattern = False
if ircdb.checkCapability(msg.prefix, flag):
for p in chan.patterns:
pattern = chan.patterns[p]
@ -4032,9 +4032,6 @@ class ChanTracker(callbacks.Plugin, plugins.ChannelDBHandler):
isBad = self._isBad(irc, channel, best)
self.forceTickle = True
chan.countpattern(isPattern.uid, self.getDb(irc.network))
isTemporaryPattern = False
if isPattern:
pass
elif not isRepeat:
key = 'pattern%s' % channel
if key in chan.repeatLogs:
@ -4052,8 +4049,8 @@ class ChanTracker(callbacks.Plugin, plugins.ChannelDBHandler):
'repeatDuration', channel=channel, network=irc.network), 'temporary pattern', msg.nick)
isBad = self._isBad(irc, channel, best)
self.forceTickle = True
elif not isTemporaryPattern:
if isFlood or isHilight or isRepeat or isCap or isCtcp or isLowFlood:
if not (isPattern or isTemporaryPattern) \
and (isFlood or isLowFlood or isRepeat or isHilight or isCap or isCtcp):
isBad = self._isBad(irc, channel, best)
kind = None
duration = 0
@ -4744,15 +4741,9 @@ class ChanTracker(callbacks.Plugin, plugins.ChannelDBHandler):
+ self.registryValue('attackDuration', channel=channel, network=irc.network)))
return b
def _isFlood(self, irc, channel, key):
return self._isSomething(irc, channel, key, 'flood')
def _isLowFlood(self, irc, channel, key):
return self._isSomething(irc, channel, key, 'lowFlood')
def _isHilight(self, irc, channel, key, message):
limit = self.registryValue('hilightPermit', channel=channel, network=irc.network)
if limit == -1:
if limit < 0:
return False
count = 0
users = []
@ -4852,8 +4843,7 @@ class ChanTracker(callbacks.Plugin, plugins.ChannelDBHandler):
return result
def _isCap(self, irc, channel, key, message):
limit = self.registryValue('capPermit', channel=channel, network=irc.network)
if limit == -1:
if self.registryValue('capPermit', channel=channel, network=irc.network) < 0:
return False
trigger = self.registryValue('capPercent', channel=channel, network=irc.network)
match = self.recaps.findall(message)