## Please edit system and help pages ONLY in the master wiki!
## For more information, please see MoinMoin:MoinDev/Translation.
##master-page:
##master-date:
#acl -All:write Default
#format wiki
#language en
= Surge Protection =
<<TableOfContents>>
Especially on an internet wiki sometimes the cpu and disk load gets quite high because the wiki has to process many requests. A high load makes the wiki slow or unusable for its legitimate users.

This is caused by:
 * some bad guys (spammers, vandals, ...) trying to put spam or trash on your pages
 * some less-bad guys (people just ''mirroring'' the wiki, without thinking about the load and the lots of useless requests and high traffic they cause)
 * some bots, indexing the wiki content for some search engine

== What can we do? ==
MoinMoin tracks requests by user name (if logged in) or IP address (if not logged in).

If the request count goes beyond some configured limit in some configured time interval, it will start to warn you (you will see a surge protection warning message instead of the expected wiki output). If you see this warning, just read it and do what it tells.

You should stop doing those requests for a minute in that case (just read the stuff you already got, drink some water, ...). You will have no problems if you continue a while later (just slow down a bit, so you won't go beyond the limit again).

If you don't pause and ignore the warnings and the requests don't stop hammering the wiki server, the wiki will think you are doing something nasty and will lock you out for some configurable amount of time.

== Configuration ==
Configuration is done as usual: in your wikiconfig. These are the built-in default values:

{{{#!python
    surge_action_limits = {
        # allow max. <count> <action> requests per <dt> secs
        # Format:
        # action:     (count,  dt)
        'all':           (30,  30), # all requests (except cache/AttachFile action) count for this limit
        'default':       (30,  60), # default limit for actions without a specific limit
        'show':          (30,  60),
        'recall':        (10, 120),
        'raw':           (20,  40), # some people use this for css
        'diff':          (30,  60),
        'fullsearch':    (10, 120),
        'edit':          (30, 300), # can be lowered after making preview different from edit
        'rss_rc':         (1,  60),

        # The following actions are often used for images - to avoid pages with lots of images
        # (like photo galleries) triggering surge protection, we assign rather high limits:
        'AttachFile':   (300,  30),
        'cache':        (600,  30), # cache action is very cheap/efficient

        # The following actions are often abused by spambots, trying to create and login into accounts:
        'newaccount': (4, 4000),
        'login': (4, 400),

    }
    surge_lockout_time = 3600       # secs you get locked out when you ignore warnings
}}} 

== Hints ==
=== Big proxy or firewall ===
If you happen to be behind a big proxy or firewall (china? big company network?) you might get trouble with surge protection because all requests come from a single IP address, looking like a really nasty user or bot.

But you can easily work around that by just logging in, so it really counts ''your'' requests (it uses your name in that case to count requests, not your proxy/firewall IP).

You will also have no problem, if your proxy uses the 'x-forwarded-for' header with your real IP.

=== Disabling surge protection ===
(!) It is not advised to do that. If it triggers too fast, adjust the limits to your needs. Even in an intranet wiki, it is no good if a single user can make the wiki unusable for everybody by firing up some leech tool at it.

If you want to do it nevertheless:

{{{
    surge_action_limits = None # disable surge protection
}}}
