X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/ae0bf810cc05fdd140193920cf8c2de459c45ea8..cc3827b52013a0bd2ff397592ee64a9a1698583e:/utils/cron_ipanalyse.py diff --git a/utils/cron_ipanalyse.py b/utils/cron_ipanalyse.py index 4c66b001..66d122cd 100755 --- a/utils/cron_ipanalyse.py +++ b/utils/cron_ipanalyse.py @@ -232,9 +232,9 @@ class IPstats: self.bad_ua = False def add_long(self, logentry): + self.long_total += 1 if logentry.retcode == 301: return - self.long_total += 1 if logentry.request is not None: self.long_api += 1 if not self.bad_ua: @@ -253,8 +253,8 @@ class IPstats: def add_block(self, logentry): self.block_total += 1 - def ignores_warnings(self): - return self.block_total > 5 + def ignores_warnings(self, wasblocked): + return self.block_total > 5 or (wasblocked and self.redirected > 5) def new_state(self, was_blocked, was_bulked): if was_blocked: @@ -263,7 +263,7 @@ class IPstats: return None if self.long_total < 20 else 'block' if self.long_api > BLOCK_UPPER \ or self.short_api > BLOCK_UPPER / 3 \ - or self.short_total == self.redirected: + or (self.redirected > 100 and self.short_total == self.redirected): # client totally overdoing it return 'block' if was_bulked: @@ -397,6 +397,6 @@ if __name__ == '__main__': if blocked: fd.write(logstr % ('new block:', ', '.join(blocked))) for k,v in stats.items(): - if v.ignores_warnings() and k not in notlogged and ':' not in k: + if v.ignores_warnings(k in bl.prevblocks) and k not in notlogged and ':' not in k: fd.write(logstr % ('Warning ignored:', k)) fd.close()