http://moinmoin.wikiwikiweb.de/SurgeProtection?highlight=%28surge-log%2
surge_action_limits = { # allow max. <count> <action> requests per <dt> secs
# action: (count, dt)
'show': (20, 60),
'raw': (20, 40), # some people use this for css
'AttachFile': (60, 60),
'diff': (30, 60),
'fullsearch': (5, 60),
'edit': (10, 120),
'rss_rc': (1, 60),
'default': (30, 60),
}
surge_lockout_time = 3600 # secs you get locked out when you ignore warnings
http://moinmoin.wikiwikiweb.de/SurgeProtection?highlight=(surge-log%2
http://moinmoin.wikiwikiweb.de/HelpOnConfiguration/SurgeProtection?highlight=(surge)|(protection)
{{{ surge_action_limits = { # allow max. <count> <action> requests per <dt> secs
# action: (count, dt)
'show': (20, 60),
'raw': (20, 40), # some people use this for css
'AttachFile': (60, 60),
'diff': (30, 60),
'fullsearch': (5, 60),
'edit': (10, 120),
'rss_rc': (1, 60),
'default': (30, 60),
}
surge_lockout_time = 3600 # secs you get locked out when you ignore warnings
---- /!\ '''End of edit conflict''' ----
es wurde nicht gelockt und geschützt, da die Datei nicht vorhanden war. Nun dürften die Spammer und Leecher geblockt sein.
Jeden Tag eine neue Herausforderung
ln -s /usr/local/share/moin/mywiki/data/event-log /usr/local/share/moin/mywiki/data/surge-log
mobbing-gegner:~/MoinStuff/moin-1.5.2# grep -ri surge-log . | more ./MoinMoin/request.py: cache = caching.CacheEntry(self, 'surgeprotect', 'surge-log') ./ChangeLog: surge protection: use userid of logged in users, reorder surge-log entry format, fix error handling ./ChangeLog: surge protection: use userid of logged in users, reorder surge-log entry format, fix error handling ./build/lib/MoinMoin/request.py: cache = caching.CacheEntry(self, 'surgeprotect', 'surge-log')
/multiconfig.py: surge_action_limits = { # allow max. <count> <action> requests per <dt> secs
./multiconfig.py: surge_lockout_time = 3600 # secs you get locked out when you ignore warnings
./request.py: if not self.forbidden and self.surge_protect():
./request.py: def surge_protect(self):
./request.py: limits = self.cfg.surge_action_limits
./request.py: default_limit = self.cfg.surge_action_limits.get('default', (30, 60))
./request.py: surgedict = {}
./request.py: surge_detected = False
./request.py: cache = caching.CacheEntry(self, 'surgeprotect', 'surge-log')
./request.py: id, t, action, surge_indicator = line.split("\t")
./request.py: events = surgedict.setdefault(id, copy.copy({}))
./request.py: timestamps.append((t, surge_indicator))
./request.py: events = surgedict.setdefault(current_id, copy.copy({}))
./request.py: surge_detected = len(timestamps) > maxnum
./request.py: surge_indicator = surge_detected and "!" or ""
./request.py: timestamps.append((now, surge_indicator))
./request.py: if surge_detected:
./request.py: timestamps.append((now + self.cfg.surge_lockout_time, surge_indicator)) # continue like that and get locked out
./request.py: events = surgedict.setdefault(current_id, copy.copy({}))
./request.py: surge_detected = surge_detected or len(timestamps) > maxnum
./request.py: surge_indicator = surge_detected and "!" or ""
./request.py: timestamps.append((now, surge_indicator))
./request.py: if surge_detected:
./request.py: timestamps.append((now + self.cfg.surge_lockout_time, surge_indicator)) # continue like that and get locked out
./request.py: for id, events in surgedict.items():
./request.py: for t, surge_indicator in timestamps:
./request.py: data.append("%s\t%d\t%s\t%s" % (id, t, action, surge_indicator))
./request.py: return surge_detected
./request.py: "You triggered the wiki's surge protection by doing too many requests in a short time.\r\n"
Wiki/SurgeProtection (last edited 2009-03-25 08:45:52 by )