Окукливание сайта в MediaWiki

Материал из ЭНЭ
Версия от 05:13, 3 октября 2009; Redii (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Иногда случается, что сайт на базе движка 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

название статьи без префикса пространства имён.

UserRestrictions

См. также