Niklan.net
360 subscribers
110 photos
13 videos
5 files
397 links
Веб-разработка и Drupal.

Блог: http://niklan.net
Download Telegram
Вчера состоялся патч релиз Drupal 9.3.15

Из интересного:

— Очередная порция улучшений для модуля CKEditor 5.

— Увеличена производительность страниц при использовании модуля Contextual Links примерно на 6%. Достигнуто это путём небольших изменений в contextual_preprocess().
11 июня (суббота) состоялись релизы безопасности исправляющие SA-CORE-2022-011

В релизах Drupal 9.3.16 и 9.2.21 обновили Guzzle, для которого вышло обновление исправляющее две проблемы безопасности: при запросе, ответ которого перенаправляет с HTTPS на HTTP, не очищались заголовки Authorization (первая) и Cookie (вторая).

Непосредственно ядро Drupal данной проблеме не подвержено, но могут быть проблемы с собственным кодом или сторонними модулями.
Вчера состоялся минорный релиз Drupal 9.4.0!

Изменений много, ощутимая их часть направлена на депрекацию тех или иных API, возможностей, модулей и тем.

Из интересного (субъективно) могу отметить:

— Вернули поддержку генерации стартеркит тем и возможности объявления темы как заготовки для будущей темы путём starterkit: true. Также была добавлена возможность стартовой теме предоставлять свои дополнительные обработчики после генерации новой темы через реализацию StarterKitInterface.

— Рекомендуемая версия PHP увеличена до 8.1. Минимальная не изменилась — 7.3.0.

— В качестве preprocess функций для тем хуков теперь можно использовать callable. Это значит что для препроцесса можно использовать классы.

— Темы оформления теперь могут реализовывать HOOK_post_update_NAME() и HOOK_removed_post_updates().

— Для форматтеров изображений, предоставляемых ядром, добавлена опция для управления lazy аттрибутом изображения.

— Claro — новая административная тема по умолчанию (в стандартном профиле, для новых установок).

— Olivero — новая тема оформления сайта по умолчанию (в стандартном профиле, для новых установок).

— При редактировании бандлов различных сущностей, помимо вкладок «Редактирование», «Управление полями», «Управление отображением» и т.д., теперь также будет появляться вкладка «Управление разрешениями». На данной странице можно будет настроить все связанные с данной сущностью права доступа для различных ролей. (для своих сущностей нужно предоставить соответствующий хендлер)

— Добавлено новое разрешение view update notifications. При помощи данного разрешения можно указать, какие роли будут получать (исключительно на административных страницах) сообщение о новых версиях Drupal и его модулей. Ранее для этого необходимо было выключать update модуль. При обновлении на 9.4.0 это разрешение будет присвоено всем ролям у кого есть разрешение administer site configuration на момент обновления.

— Устаревшие модули теперь помечаются на странице расширений и выводят предупреждение при попытке их активации. Устаревшие темы оформления теперь не отображаются в списке тем.

— Модули объявленные устаревшими: HAL, Aggregator, Color.

И множество других изменений. 💅
Изменения в политике обновлений безопасности для Composer зависимостей ядра.

Из-за участившихся обновлений безопасности (например последние для Guzzle) для сторонних пакетов, от которых зависит ядро, приходится выпускать обновление безопасности для Drupal каждый раз, как такое обновление выходит. Эта практика прекращается для Drupal 9.4+, в котором были ослаблены ограничения для зависимостей ядра, позволяющие получать обновления патч-версий для всех зависимостей (ранее зависимости ядра были заморожены даже на уровне патч-версий). Теперь, вы не только можете самостоятельно обновить подобные зависимости (раньше нужно было ждать апдейта ядра) простым composer update, но и должны это делать для безопасности проекта.

Прошлая практика выпуска обновления ядра для аналогичных обновлений зависимостей будет выпускаться только в том случае, если этой уязвимости подвержено непосредственно ядро Drupal (последние апдейты Guzzle никак не затрагивают Drupal, при этом приходилось выпускать апдейты).

До EOL Drupal 9.3 (декабрь 2022) будет поддерживаться предыдущая практика обновлений (только для 9.3.x ветки). Для сайтов собранных из архивов (🗿) рекомендуется перейти на поддержку через Composer, в противном случае обновления зависимостей будут выходить с патч-релизами ошибок и это может растянуться на недели.

Если вы не уверены и не хотите следить за обновлениями безопасности зависимостей ядра и обновляете проект только по таким релизам, самое простое — взять за правило, обновлять все зависимости проекта в первый или третий четверг месяца. Потому что обновления для ядра выпускаются в первую среду месяца (патч-релизы) и третью среду месяца (обновления безопасности), а из-за временных различий, они у нас появляются фактически в четверг. И не важно, вышло в среду обновление для ядра или нет, вы просто освежаете зависимости проекта и поддерживаете их в тонусе.

UPD. Ещё чего вспомнил. Если ваш проект на GitHub, просто включите соответствующие настройки у проекта и GitHub сам будет оповещать о подобных обновлениях (он понимает Composer): https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/about-code-scanning
Сегодня состоялись патч-релизы Drupal 9.4.1 и 9.3.17.

Эти релизы содержат очень мало изменений, основное — ядро теперь запрашивает guzzlehttp/psr7 версии 1.9.x вместо 1.8.x. Это необходимо для очередного обновления безопасности Guzzle.
Если пользуетесь модулем commerce_cart_api, то после обновления на Drupal 9.4.0 обязательно проверьте весь функционал который использует его REST ендпоинты. Скорее всего у вас отвалится существенная доля данных для order_item сущностей, не будет ни цены, ни количества, ни суммы и т.д. Если напоролись, пробуйте патчик.
Сегодня состоялся патч-релиз Drupal 9.4.2.

Абсолютно ничем не примечательный релиз. Разве что можно отметить создание нового раздела с добавлением в него мейнтейнеров (MAINTAINERS.txt) для Project Browser инициативы. Это такой модуль для друпала, типа маркетплейса, который показывает модули с орга и позволяет устанавливать их оттуда. (прототипы, проект)
Сегодня состоялись обновления безопасности 9.4.3 и 9.3.19.

В них исправили сразу 4 «уязвимости»:

SA-CORE-2022-012: Модуль Image мог некорректно проверять доступ к изображениям, для которых генерируюется стиль изображение, а исходник находится не в стандартном публичном хранилище (public://). Эта проблема проявляется только при условии что у вас изменена конфигурация $config['image.settings']['allow_insecure_derivatives'] на значение TRUE. По умолчанию она FALSE и её изменение недоступно через интерфейс.

SA-CORE-2022-013: Очередное исправление связанное с формами, которое могло быть использовано для изменения данных форм, не имея при этом доступа к редактированию этих данных. Формы ядра не подвержены данной проблеме.

SA-CORE-2022-014: Улучшена санитизация для загружаемых файлов. Данная проблема проявляется только на сайтах, работающих на веб-сервере Apache, а также где явно разрешена загрузка файлов с расширением htaccess (🤔).

SA-CORE-2022-015: Исправлена валидация домена используемого для oEmbed iframe предоставляемого модулем Media. В определенных случаях, iframe мог отображаться с использованием основного домена, что могло потенциально открыть возможность для XSS атак и ему подобных. Судя по всему, это требовало некорректной настройки Media.

В общем и целом, ничего страшного для большинства проектов. Но обновиться точно не помешает, так как некоторые проблемы могут вскрыться через сторонние или собственные модули.
Сегодня состоялись патч-релизы Drupal 9.3.20 и 9.4.4.

Непонятно что это было. Походу основное изменение — обновление зависимости laminas/laminas-diactoros до 2.11.1 из-за CVE-2022-31109 (Drupal скорее всего не подвержен проблеме). Эти релизы также содержат все накопленные изменения, которые должны были выйти на следующей неделе. Так, 9.4.4 содержит много мелких исправлений и улучшений в довесок к обновлению зависимости.
Состоялись патч релизы Drupal 9.4.5 и 9.3.21.

Учитывая что в пятницу уже были релизы, причём патч релизы, содержащие все основные скопившиеся изменения за месяц, не ясно зачем эти два. Чисто формальные, даже смотреть не на что. По сути только CKEditor 5 обновили с 34 до 35 версии.
Вчера состоялся релиз Drupal 9.4.6

Очередной хаотичный и непонятный релиз, в окно для выпуска обновлений безопасности, но не тут то было, и это обычный патч-релиз!

Самое интересное изменение — рекомендуемая версия для PHP увеличина до 8.1.6, так как версии 8.1.0-8.1.5 содержат баг с OPCache, который может приводить к фатальным ошибкам на сайте. Так что убедитесь какая у вас версия PHP на проде и используете ли вы OPCache (очень вероятно).

Попутно исправлены различные ошибки и проблемы в CKEditor 5, потому что он в Drupal 10 станет редактором по умолчанию, а CKEditor 4 будет удалён. Ну и всякого по мелочи.
Вчера состоялись релизы безопасности Drupal 9.3.22 и 9.4.7.

Для Twig вышло обновление безопасности для уявзимости, которая может быть использована в Drupal. Код для ядра был обновлён чтобы невелировать проблему.

Если не обновиться, то пользователи, у которых есть доступ к Twig, могут использовать данную уязвимость для доступа к содержимому файлов на сервере. Например к приватным файлам или settings.php.

По умолчанию пишут что это доступно только администраторам сайта с ограниченными правами доступа и в целом не опасно. Думаю, имеется ввиду Views UI, в котором можно использовать Twig в некоторых настройках. Также это и касается различных сторонних модулей, которые позволяют работать с Twig из админки. Вроде такая возможность имеется в Webform.

В общем и целом, если к админке имеют доступ люди, которым вы не доверяете, (странно что они тогда имеют такой доступ 😂) то лучше обновиться пораньше. А так, вроде не страшно.
Вчера состоялся релиз Drupal 9.4.8.

В этом релизе исправлены различные мелкие ошибки и недочёты. Ничего примечательного, кроме того что он в этот раз вышел вовремя. 😄
Вчера состоялся релиз Drupal 9.4.9

Обычный патч релиз с исправлениями и улучшениями. Ничего примечательного.

На следующей неделе ожидаются релизы покрупнее: 9.5.0 и 10.0.0! Так что можно смело до 9.5.0 откладывать обновление проектов.
​​Состоялся релиз Drupal 9.5.0

— Рекомендуемая версия PHP — 8.1.6.

*.services.yml теперь поддерживает настройку _defaults, которая позволяет задать настройки по умолчанию для всех объявленных сервисов в файл.

— Добавлена новая AJAX команда — add_js. С этим изменением также исправлены проблемы состояния гонки при подключении библиотек через AJAX.

— Темы оформления объявлены устаревшими и удалены в Drupal 10: Bartik, Stable (не путайте со Stable9), Classy.

— Модули объявленные устаревшими и удалены в Drupal 10: Quick Edit, RDF, CKEditor 4.

— Библиотеки объявленные устаревшими и удалены в Drupal 10: jQuery Farbtastic, PopperJS, Shepherd.js.

— CKEditor 5 — стабильный модуль.

— Twig функция dump() теперь использует Symfony VarDumper если он доступен на проекте.

— Добавлена возможность отладки кеш метаданных при помощи HTML комментариев по принципу отладки шаблонов.
​​🎉 Состоялся релиз Drupal 10.0.0 🎉

— Разумеется, все изменения из Drupal 9.5.0.

— Минимальная версия PHP — 8.1.

— Компоненты Symfony теперь 6 версии.

— Прекращена поддержка Internet Explorer и весь соответствующий код был удалён.

— Twig обновлён до 3 версии.

— В ядро добавили и начали использовать PHPStan!

— Добавлен новый Twig фильтр |add_suggestion().

Также напоминаю что на Druki есть руководство по обновлению Drupal 9 до Drupal 10. Возможно оно окажется полезным.
🫡 И на этой ноте я прекращаю поддержку Druki

С релизом Drupal 10 подходит и к концу мой пет-проджект druki.ru! Он продержался даже дольше чем ожидал и планировал. Подробнее здесь.

Всем кто помогал и поддерживал — огромное спасибо. Из этого проекта я вынес вагон и целую тележку различного нового опыта, надеюсь что и вам что-то пришлось по душе и оказалось полезным.

За изменениями Drupal вам теперь придётся следить самостоятельно. Но интересные и полезные я по возможности буду просто кидать в чат.

Нет худа без добра — я наконец-то вернусь к блогу. Займусь его технической и контентной частью. Выдыхаю с большим облегчением 😌
Улучшение агрегации CSS и JavaScript

Сразу поделюсь крайне интересным изменением, которое появится в Drupal 10.1.0. В нём поменяли процесс агрегации CSS и JS при подготовке ответа!

Сейчас агрегация происходит в момент подготовки ответа страницы. Это означает, что если данный процесс занимает 10 секунд, то это минимум времени, которое потребуется для подготовки ответа страницы. Это же изменение выносит процесс агрегации в подзапросы по типу BigPipe и обрабатывает их уже после начала ответа или, если вам так ближе, по принцпу генерации стилей изображений. В ответе будет находиться только заранее известный URL с файлами, но само содержимое будет сгенерировано только при обращении к нему, а не так, что сначала генерируются файлы, а только после получается URL и происходит ответ сервера.

Подобная переработка агрегации ускоряет ответ на холодный кеш примерно на ~ 100-1000ms в зависимости от сложности проекта.

#drupal #drupal_10 #drupal_10_1
📆 Сегодня должен состояться минорный релиз Drupal 10.1.0.

🗣 Начиная с этого релиза, всем куки файлам будет добавляться аттрибут SameSite: Lax (что такое). Данное значение может быть настроено в *.services.yml файле. Для существующих сайтов рекомендуется добавить эту настройку самостоятельно.

🗣 Добавлена новая настройка $settings['file_assets_path'] которая позволяет указать путь где будут храниться агрегированные файлы JavaScript + CSS. По умолчанию она будет использовать public:// директорию. Данный путь будет доступен через новый URI assets://. Это изменение позволит хранить сгенерированные ассеты проекта в любом другом месте, включая альтернативные хранилища по типу внешнего S3.

🗣 Добавлена новая страница конфигурации — Конфигурации | Разработка | Настройки разработки. На данной странице вы можете включить режим разработки для Twig (включение дебага Twig шаблонов, отключение Twig кеша), а также отключение кеширования разметки (аналог $settings['cache']['bins']['render'] = 'cache.backend.null'; + $settings['cache']['bins']['page'] = 'cache.backend.null'; + $settings['cache']['bins']['dynamic_page_cache'] = 'cache.backend.null';). Данные настройки хранятся в state хранилище, а следовательно, не будут случайно отправлены на деплой.

🗣 Переработанная система агрегации CSS + JS (см. отдельный пост). ВАЖНО! Данное изменение требует изменения конфигурации NGINX. Если вы используете NGINX на рабочем сервере, сначала обновите конфигурации, а затем обновляйте Drupal. Иначе у вас не будут создаваться новые агрегированные CSS + JS файлы, а значит, и работать агрегация.

🗣 В новых агрегированных файлах JavaScript теперь автоматически удаляются комментарии и пробелы.

🗣 Адаптивные картинки теперь используют ленивую загрузку, как и с обычными стилями изображений, тип ленивой загрузки доступен для настройки в форматере поле.

🗣 Single Directory Components — новый экспериментальный модуль. Модуль позволяет создавать компоненты (по типу тем хуков), без кода. Вы создаёте папочку /components/my-button, добавляете my-botton.twig, my-button.css и можно использовать! Это позволит привлекать к вёрстке людей без знаний друпала. Всё равно друпалер потребуется, но уже в минимальном участии. Там чуточку сложнее чем я написал, ибо нужно описать также схему для этого компонента, но никакого PHP, всё на YAML + TWIG + CSS + JS. Рекомендую почитать документацию о данном модуле. Существует одноимённый контриб модуль SDC из которого он и переехал в ядро — если вы его не используете, я настоятельно не рекомендую этого делать. Например, начать на 10.0, а потом просто обновиться и переключиться на тот что в ядре. Они уже сильно отличаются и рефакторинг под версию в 10.1 может занять очень много времени, проще дождаться релиза и обновиться.

Как и всегда, множество других изменений и улучшений! Я выделил лишь те, что показались мне интересными. 💧
Please open Telegram to view this post
VIEW IN TELEGRAM
🔄 Релиз Drupal 10.2 уже на этой неделе

В релизе, как обычно, есть исправления, улучшения и нововведения. Ниже наиболее интересные изменения (по моему мнению):

🗣 Поддержка PHP 8.3.

🗣 Хранилища для вариативного кеша на основе кеш-контекстов. Подробнее.

🗣 Регистрация плагинов с использованием PHP аттрибутов вместо PHPDoc аннотаций. В ядре пока что для плагинов @Block и @Action, постепенно поддержка будет расширяться. Подробнее.

🗣 Автоматическая настройка подписчиков событий при использовании autoconfigure в .services.yml. Подробнее.

🗣 AutowireTrait c PHP аттрибутом #[Autowire(service: 'entity_type.manager')] для внедрения зависимостей в конструкторе без переопределения/объявления метода ::create(). Подробнее.

🗣 DeprecationHelper для объявления функций/методов как устаревших. Подробнее.

🗣 В процессе рендеринга плейсхолдеров Big Pipe теперь используется PHP Fiber. Пока пользы, скорее всего, никакой, тут больше интересно использование файберов в контексте друпала. Подробнее.

Полный список изменений будет доступен после релиза.
Please open Telegram to view this post
VIEW IN TELEGRAM