Расширения MediaWiki
Расширения MediaWiki (Расширения МедиаКлизма) — возможность дополнения функциональности движка MediaWiki при помощи расширений. Особенностью расширений является то, что они подключаются при помощи файла настройки и так же легко отключаются, что позволяет легко производить обновление движка до новых версий вместе с расширениями без необходимости вручную править множество файлов (как в случае с модификациями MediaWiki, которые делаются непосредственно в самом движке и должны переноситься вручную при необходимости обновления).
Заметное количество базовой функциональности движка, к которой все привыкли по Педивикии, вынесено именно в расширения, и поэтому при установке новой копии движка они отсутствуют, и требуется их устанавливать вручную. С некоторых версий MediaWiki при постановке движка позволено выбрать из нескольких самых основных расширений, которые включаются в файл с движком, хотя их список всё равно ограничен. Постановка дополнительных расширений осуществляется через ручное их скачивание и настройку на стороне сервера, веб-интерфейса для этого, подобного многим популярным CMS, там нет.
Особенности[править]
Стандартное расширение закачивается в папку extensions, где располагается в отдельной папке с названием расширения. Для подключения большинства расширений достаточно скачать и затем добавить wfLoadExtension('Extension'); (ранее использовалась более простая директива include_once с полным путём до главного .php расширения) в основной файл настроек движка, после чего оно или будет работать сразу же, или потребуется запустить /maintenance/update.php, который создаст необходимые таблицы в базе данных. Но для отдельных расширений, позволяющих интегрировать MediaWiki со сторонними сервисами, этого не достаточно — нужно ещё поставить определённые сервисы.
Скачивание производится с официального сайта (с использованием утилит типа wget на сервере или же простого скачивания через браузер с последующим использованием FTP). Можно также использовать системы контроля версий типа git, но это уже для продвинутых пользователей. На 2023 одних только стабильных (проверенных на наличие багов) расширений опубликовано более 750.
Основная информация о расширении находится в пукнутом файле extension.json (ранее располагалось непосредственно в основном файле расширения, но засилье разработчиков мигрантами-дегенератами вроде известного извращенца заставило их изменить красивое и понятное внутреннее устройство на такое, какое для человека крайне неудобно в использовании и редактировании). В конфигурации указана последняя версия скачанного расширения, его авторы, зависимости, краткое описание, и прочая второстепенная информация.
Современные расширения состоят из сотни файлов, которые включают в себя дополнительные файлы .JS и .CSS, различные шаблоны, файлы локализации для разных языков и прочие модули.
Технически расширения работают за счёт использования принципа Hooks: в определённых точках работы движка вызываются hook-функции, которых может быть любое количество, в которые передаётся вся информация из этих точек работы. Расширения могут использовать любое количество hook-функций, запускаемых в эти моменты и модифицирующих информацию в движке сообразно нуждам расширения. Hook-функции установлены далеко не во всех нужных местах, поэтому в итоге всё равно может потребоваться изменить исходный код самого движка или расширений. Разработка большинства расширений делается только по нуждам петушиного фонда Wikimedia, так что то, что в Викимедиа не применяется, например качественное ограничение доступа, в расширениях может отсутствовать или не обновляться (если какой энтузиаст всё равно сделал).
Случаи обратного же крайне редки. Единственным примером стало расширение Oversight, которое оказалось добавлено в базовые возможности движка.
Базовые расширения[править]
- Interwiki — позволяет редактировать префиксы интервики, предназначенные для того, чтобы легко ссылаться на страницы на других сайтах.
- Renameuser — разрешает бюрократам изменять имя пользователя. Note: как ни странно, такой вполне логичной особенности, как возможность изменения своего имени, в MediaWiki в принципе нет. Многие сайты позволяют менять своё имя на произвольное каждые несколько месяцев, например, но в MediaWiki такой опции за почти 20 лет так и не ввели.
- WikiEditor — базовые функции разметки вики-текста в виде панели над окном редактирования. Раньше были частью ядра движка, пока какому-то гомогению не пришло в голову убрать то, что нужно абсолютно всем, в расширение. Русскоязычным пользователям также привычен викификатор, который нужно вручную копировать с Википедии и подключать через JS.
- Cite — позволяет вставлять в текст статей цитирование.
- ParserFunctions — реализация отдельных функций парсера, которые повсеместно используются в шаблонах и без которых нормальное написание шаблонов невозможно.
- Poem — форматирование стихов.
- SyntaxHighlight — форматирование исходного кода на ЯП, полезно в тех местах, где выкладывается много кода скриптов, в общем на вики для погромистов. Бонус: системные страницы .JS и .CSS также примут в себя это расширение и станут подсвечивать тот код, который необходимо.
- Hit Counters — также ранее базовая функциональность счётчика просмотров на вики, которая вынесена в отдельное расширение. Интересно, что из основного движка при обновлении информация о просмотрах стирается моментально, поэтому при обновлении надо сначала добавить расширение, а только потом обновлять основной движок, иначе счётчик потеряется.
- MobileFrontend — полезное расширение для современных сайтов, которое создаёт отдельную мобильную версия сайта для удобства пользователей всяких гаджетов, которых в современности становится всё больше. Упор делается, очевидно, на удобное чтение, а не редактирование.
- CharInsert — создаёт привычное всем поле с нестандартными символами и шаблонами под редактированием движка.
Важные расширения[править]
AbuseFilter[править]
Известное цензурное расширение, первое отступление от принципа, что всё в вики должно быть открытым. Позволяет создавать довольно сложные правила, основанные на собственном языке, чтобы определить потенциально вандальные правки и не позволить их сохранить. Для пользователя же отображается, что правка была отклонена и краткое публичное описание правила. Технически, правила AbuseFilter можно сделать публичными, но в этом нет никакого смысла, поскольку тогда их эффективность быстро опадёт до нуля, и абсолютно все свои фильтры скрывают.
Помимо цензуры, есть и полезное применение этого расширения: а именно, борьба со спамом. Многие спамеры крайне тупы и работают автоматически, поэтому посредством этого расширения есть возможность заметно снизить спамерскую активность (хотя, здесь помогает и простая каптча).
Типичнейшим способом обхода расширения, с которым сделать можно мало что, является добавление комментариев с произвольным бредом в те слова, которые подвергаются фильтрации. В целом понятно, что помогает фильтр только от слабых дурачков, а грамотный человек всегда найдёт способ запостить информацию, как бы огорожен проект не был.
AnonPrivacy[править]
Легендарное расширение, изначально просто модификация движка MediaWiki для сокрытия IP-адресов анонимов. Впервые реализовано такое было на Лурке, впоследствии также расширение поставлено на ALL. А затем кто-то написал полноценное расширение, уже не требующее вносить изменения непосредственно в вики-движок.
По умолчанию всем показывается только «Анонимус», а вот администраторы уже обладают возможностью посмотреть IP-адрес и пристрелить его. Кроме того, по умолчанию расширение не защищает от утечки IP-адреса при откатах и т. п. модификациях контента страницы, здесь расширения движка надо править самостоятельно.
CheckUser[править]
Ещё одно расширение, без которого не обходится практически ни одна вики. Позволяет сохранять IP-адреса участников и их User-Agent в отдельной табличке, также автоматически пробивает прозрачные прокси и позволяет искать по диапазонам. Благодаря расширению чекюзеры становятся весьма активны, способны выискивать самые разные вещи с использованием интернет-интерфейса.
В общем-то стандартное для CMS средство для автоматической пробивки данных пользователей (во многих местах это полномочия вполне себе обычного модератора, и никакого специального расширения не требуется), которое стало мемом из-за того, что в вики среди оппозиции было много кукловодов, для которых возможность пробива оказалась смертельно опасной, в том числе школьников, не понимающих, как создать корректных виртуалов.
ConfirmEdit[править]
Капча. Да, это простая каптча, но на самом деле не вполне простая, так как базовые настройки легко ломаются, а для использования продвинутых надо или серьёзно заморачиваться, или использовать сторонние сервисы. Кроме того, версия расширения по умолчанию имеет критические недоработки — не работает с некоторыми расширениями, а также не поддерживает ввод каптчи на странице загрузки файлов (из-за чего дятел может активно долбить загрузками, если такая опция имеется). На всех более-менее популярных вики обязательно использование или каптчи, или ConfirmEdit, иначе сайт станет раздольем для разнообразных дятликов, которые крайне рады вдалбливаться в сочное тело вики.
- Простая каптча — спрашивает простой математический вопрос, любой грамотный бот взломает её,
- Красивая каптча — требует ввести слово с искажениями и специфическим шрифтом, которые надо сгенерировать на стороне сервера,
- Математическая каптча — нет, не матановая, а та же простая задача, но только не текстом, а на картинке,
- Вопросы — надо ответить на заранее заданный вопрос, каковые вводят админы. Как только вандал ответит на все, сможет долбить как обычно,
- ReCaptcha — каптча от Google, хорошо работает против прокси-дятлов и слабовзламываемая,
- hCaptcha — альтернативная каптча от CloudFlare.
FlaggedRevs[править]
Известное расширение, которое предназначалось для проверки статей на предмет отсутствия вандализма. После проверки устанавливался соответствующий статус, можно было на часто долбимых статьях устанавливать отображение только проверенной версии. Это создавало некий компромисс между полным ограничением правок и созданием рая для вандалов.
Также в оригинальной версии уровней оценки предполагалось несколько — простая проверка на отсутствие явного вандализма и чёткая проверка всех указанных в статье фактов, для чего предполагалось привлекать профессионалов. Однако профессионалам оказалось это банально не нужно, проверять статьи бесплатно, так что идея захирела, равно как и идея оценки статей по нескольким параметрам, например полноте, оформлению и т. д. В итоге статус проверки остался, но означал только то, что в статье нет явного вандализма, и на этом и порешали.
Стояло в Лурке и Викиреальности, и там и там было сочтено излишним и больше не стоит.
Lockdown[править]
Важное расширение для тех, кто хочет более грамотно ограничивать возможность просмотра отдельных служебных страниц и целых пространств имён только для обладателей некоторых прав. По умолчанию MediaWiki была создана в рамках концепции того, что каждый пользователь может спокойно смотреть любые страницы, которые только пожелает, поэтому иногда расширение может работать некорректно. Тем не менее, в отдельных случаях практически незаменимо.
VisualEditor[править]
Скандальное расширение для «более простого редактирования» страниц сайта, которое работает на принципах «что вижу, то и на сервере». На деле генерирует довольно странный и кривой код, особенно при попытках редактировать через него шаблоны и таблицы, из-за чего огромное количество старых википедов предпочитает использовать «редактирование исходного кода». Активно форсится на Wikia, а также и с определённого момента на Википедии. А вот хардкорные старые участники, которые восседают в альтернативных википроектах, предпочитают его не использовать, часто оно и вовсе не установлено.
Уникальные расширения[править]
Расширения, которые были поставлены только в некоторых википроектах, являются авторскими, и недоступны на официальном сайте MediaWiki. Обычно сделаны закрытыми в целях того, чтобы сохранить функциональность и эксклюзивность в тайне. При этом любой достаточно грамотный разработчик способен написать аналог этих расширений, но обычно они сами по себе особо и не нужны широкому кругу общественности.
- CheckUser Protect — позволяет запретить проверять отдельных админов при помощи CheckUser. По сути — просто модификация для стандартного CheckUser, которая работала на некоторых альтернативных вики. Написание расширения отлично посмаковали на форуме одного из альтернативных проектов. Широкого распространения расширение не получило:
Сможет, но без удовольствия. Радость проверяющего будет ограничена технически.
- BlockClown — расширение, которое реализовала флаг клоуна и позволяло получивших таковой флаг блокировать. Фактически — позволяло пристрелить определённого участника с дополнительными издевательствами, а для простых участников — почувствовать себя временно админами, да и посмеяться над смешным лохом. Использовалось в Новопедии.
- Premoderation — расширение авторства википеда Cryptocoryne, которое тот написал для Новопедии в качестве эксперимента. Позволяет реализовать очередь модерации для новых правок. В результате было невозбранно украдено Edward Chernenko, который приписал авторство расширения себе и опубликовал на официальном сайте MediaWiki, а также поставил в своей Абсурдопедии. Что ж, любитель железной двери всегда найдёт способ установить железную дверь, причём даже более твёрдую, чем AbuseFilter (премодерируются вообще все анонимные правки и вклад и регистрации новых участников).
Проблемы[править]
К сожалению, из-за отсутствия нормального code review, который производили бы разработчики MediaWiki, и открытости системы, высок шанс того, что злоумышленник или некомпетентный пользователь сможет закачать на сайт какое-то не то расширение, в котором будут намеренно или по ошибке включены уязвимости. Например, повсеместно использовавшееся расширение EmbedVideo на большом количестве сайтов из-за сочетания старого движка и внутреннего бага позволяло включить на страницы произвольный JS-код, что теоретически могло приводить ко взломам сайтов.
Поэтому использовать расширения стоит только в том случае, если они используются на сайтах Wikimedia, либо код просмотрен и сочтен безопасным, в противном случае высок риск взлома сайтов (аналогичная ситуация с расширениями для других популярных CMS, таких как Wordpress, где часто ломают сайты из-за кривых и дырявых расширений).