Новости проекта
Модуль 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 со страницы сайта в кабинете —
дальше он будет обновляться сам.