Окукливание сайта в MediaWiki
Иногда случается, что сайт на базе движка MediaWiki требуется окуклить — например, в случае необходимости создания закрытого сайта или же в случае использования незащищённых механизмов MediaWiki для уничтожения содержимого сайта.
Содержание
Способы окукливания
Сервер
Добавление в LocalSettings.php директив $wgGroupPermissions, например:
$wgGroupPermissions['user']['move'] = false;
запретит простым юзерам переименовывать страницы.
Titleblacklist
Окукливание при помощи расширения Titleblacklist. Преимущества — технически может выполнить любой администратор, не труебтся доступ к серверу для собственно окукливания.
Добавляем директивы на страницу MediaWiki:Titleblacklist:
.* <noedit>
запретит правку всем участникам
.* <newaccountonly>
запретит регистрацию новых учётных записей.
Параметром errmsg можно задать системное сообщение, показываемое при ошибке, например |errmsg=titleblacklist-error-noedit будет выводить сообщение из MediaWiki:Titleblacklist-error-noedit
AbuseFilter
Запрещает правку страниц с помощью особых эвристических фильтров, позволяющих применять ограничения к конкретному пространству имён, ограничивать по скорости или запрещать править по маске IP или определённые пространства имён.
Общий синтаксис фильтров:
ПРАВИЛО ОПЕРАТОР ПРАВИЛО ОПЕРАТОР
Правило — регулярное выражение
Оператор — в основном используются & (и), &! (не)
Правила могут быть заданы как
( ПРАВИЛО | ПРАВИЛО )
Что будет означать необходимость только одного из правил
Основные правила:
action == 'edit'
основная директива для реакции на правки
user_editcount
счётчик правок участника. user_editcount < 20 ограничит фильтры пользователями с правками меньше 20.
ip_in_range
адрес в диапазоне: ограничивает фильтр диапазоном адресов.
article_namespace
пространство имён. для примера article_namespace == 2 сработает на правки в пространстве имён «Участник».
contains_any
первый параметр содержит любой из других; применяется для ограничения по группам, например &! contains_any(user_groups,'editor','sysop') запретит срабатывания на патрулирующих и операторов.
article_text
название статьи без префикса пространства имён.