BotBan

Новости проекта

Модуль 1.2 обновляет себя сам, а кабинет предупреждает, если не смог

Больше не нужно следить за версией модуля руками: он обновится сам, а файл без верной подписи не запишет никогда. Если папка закрыта на запись, кабинет и письмо напомнят.

Вчера мы выпустили модуль 1.1 и попросили заменить файл руками. Это неудобно и легко забыть, поэтому в 1.2 модуль научился обновляться сам.

Как это работает

При каждом запросе модуль сообщает нам свою версию. Если вышла новее, сервер говорит об этом в ответе, и модуль после того, как отдал страницу посетителю, скачивает новый файл с cdn.botban.ru и проверяет его:

  • подпись — файл подписан нашим закрытым ключом, открытый зашит в модуль; файл с неверной подписью не будет записан ни при каких условиях, даже если кто-то подменит ответ сервера или CDN;
  • версию — принимается только версия строго новее текущей;
  • форму и синтаксис — это должен быть PHP-файл с классом BotBan, который разбирается без ошибок.

Только после этого новый файл пишется рядом и подменяет старый одной атомарной операцией, а прежний остаётся копией botban.php.bak. Адрес загрузки зашит в модуль, из ответа сервера берётся только номер версии. Одна попытка на версию раз в шесть часов, посетителя обновление не задерживает.

Если обновиться не получилось

Для самообновления папка botban/ должна быть доступна на запись веб-серверу. Если это не так, ничего страшного: защита работает и со старой версией. В разделе «Сайты» у сайта появится пометка «Модуль устарел», на странице сайта — плашка с кнопкой «Скачать», а вам придёт письмо (и сообщение в Telegram, если он подключён). Как только модуль ответит актуальной версией, предупреждение погаснет само.

Отключить самообновление можно параметром 'auto_update' => false в вызове BotBan::protect().

Что сделать сейчас

Один раз заменить файл руками: у версий 1.0 и 1.1 самообновления ещё нет. Скачайте свежий botban.php со страницы сайта в кабинете — дальше он будет обновляться сам.