Nutmeg — останній випуск під назвою Open edX. Він вийшов 9 червня 2022 року. У цій публікації ми розглянемо нещодавні зміни в роботі операторів і розробників (тобто людей, які пишуть код для Open edX або розгортають екземпляр Open edX). Це включає деякі з останніх і найбільших змін у Tutor, увагу на події та фільтри Open edX, а також деякі критичні примітки щодо застарілих, видалень і оновлень безпеки.
Основні моменти репетитора
Зміни в Tutor після випуску Maple докладно описано на Журнал змін репетитора – версії від 13.0.1 до 14.0.0. Деякі основні моменти:
Функції та вдосконалення репетитора
- Новий і розширений API плагіна «Версії 1». базується на ідеї «гачки», які є точками розширення, які дозволяють додаткам реагувати на дії викладача та змінювати поведінку викладача за допомогою фільтрів даних. Старий API плагіна «Версії 0». все ще підтримується, хоча розробникам плагінів рекомендується перейти на новий API.
- Детальніші інструкції під час оновлення
- Кілька нових команд:
- `tutor k8s apply`: прямий інтерфейс із `kubectl apply`
- `статус tutor [dev|local|k8s]`: надає статус інформації про систему
- `tutor dev quickstart`: варіант `tutor local quickstart`, який зменшує тертя в процесі налаштування розробки
- `tutor [local/dev] copyfrom`: копіює вміст із контейнера
- -m/–mount`: параметр, доданий до кількох локальних команд і команд розробника для автоматичного магічного прив’язування папок монтування з хосту, замінюючи старі параметри `bindmount` і `–volume`.
- `tutor dev start SERVICE` тепер дозволяє приєднуватися до служби для налагодження точки зупину.
- Запуск контейнерів `dev` тепер зупиняє `локальні` контейнери, і навпаки.
- Можливість інсталювати спеціальні пакети та запускати команди від імені користувача root в образі Docker
- Можливість перевизначити `EDX_PLATFORM_REPOSITORY` і `NPM_REGISTRY` через `config.yml` замість аргументів збірки Docker.
- Можливість приховати курси на сторінці пошуку LMS /course, встановивши для видимості курсу значення «none» у Studio.
- Постійні оцінки тепер увімкнено за замовчуванням.
Відмова від репетитора та критичні зміни
- `tutor dev runserver` більше не підтримується на користь `tutor dev start`.
- `вихователь k8s exec “ ”` (у лапках) застаріло; замість цього використовуйте `tutor k8s exec `. Це узгоджується з синтаксисом `tutor local exec `.
- Припинено підтримку змінної середовища `TUTOR_EDX_PLATFORM_SETTINGS`. Натомість рекомендується створити плагін.
- lms.env.json & cms.env.json тепер `lms.env.yml` & cms.env.yml; Розробники плагінів повинні переформатувати кілька патчів, щоб використовувати формат YAML.
А також численні засоби безпеки та виправлення помилок у Tutor; побачити Журнал змін репетитора – версії від 13.0.1 до 14.0.0 для отримання додаткової інформації.
Відкрити події та фільтри edX
Відкрити події та фільтри edX додати новий спосіб розширення ядра без необхідності возитися з внутрішніми елементами edx-платформи (ця робота є частиною OEP-50: фреймворк розширення хуків).
- Події Open edX: ця стандартизована версія Django Signals дозволяє розробникам розширювати функціональність платформи, просто прослуховуючи подію, яка надсилається після завершення процесу ключа, наприклад, після реєстрації, входу, реєстрації тощо.
- Фільтри Open edX: лише за допомогою конфігурації розробники розширень можуть установити список функцій, які мають виконуватися перед початком ключового процесу, наприклад, перед реєстрацією, входом, реєстрацією тощо.
Для отримання додаткової інформації читайте OEP, документація, або подивіться Феліпе Монтойя Презентація конференції Open edX 2022 про передумови, архітектуру та використання цього продукту.
Важлива команда керування для запуску та налаштування змінної конфігурації
Внутрішнє покращення продуктивності під назвою «навчальні послідовності» було підключено до кількох випусків, але тепер воно завжди доступне для Nutmeg. Якщо у вас є курси, які не були повторно опубліковані на Koa або пізніше, запустіть команду simulate_publish cms django на своїх курсах перед оновленням, щоб заповнити дані послідовності навчання.
Якщо не встановити значення конфігурації CLOSEST_CLIENT_IP_FROM_HEADERS, це може призвести до обмеження швидкості легального трафіку або неможливості блокувати атаки грубої сили, залежно від налаштувань вашого проксі.
Скасування та видалення
Наступні застарілі та видалені з випуску Maple:
- Репо edx-сертифікатів заархівовано
- Bok-choy (платформа для тестування) заархівовано
- Бібліотеку django-ratelimit-backend було видалено з edx-платформи; тепер використовується стандартний бекенд django-ratelimit. Побічним ефектом цього є видалення стандартного вікна входу адміністратора Django; тепер користувачі повинні спочатку ввійти в систему через LMS.
- Доступ до курсу «Old Mongo» нарешті було повністю видалено. Це означає, що курси, які мають такі ключі, як Org/Course/Run, а не course-v1:Org+Course+run (відображаються в URL-адресі будь-якої сторінки курсу), не можуть бути доступні учням.
Для отримання додаткової інформації про них див Скасування та видалення розділ вікі-сторінки Nutmeg.
Покращення безпеки
Необхідно зрозуміти два основних покращення безпеки: нове значення конфігурації (CLOSEST_CLIENT_IP_FROM_HEADERS), яке потрібно встановити, і зміни в SafeSessionMiddleware, які потребують уваги перед оновленням до Nutmeg.
- CLOSEST_CLIENT_IP_FROM_HEADERS — це нове значення конфігурації, яке слід установити для всіх розгортань.
- Якщо це не встановити, це може призвести до обмеження швидкості законного трафіку або неможливості блокувати атаки грубої сили, залежно від налаштувань вашого проксі.
- Це параметр, що впливає на безпеку, і вказує вашому розгортанню, як визначити IP-адресу клієнта. Дивіться openx.core.djangoapps.util.ip для документації про те, як (і чому) налаштувати це (а також відповідне налаштування NUM_PROXIES для django-rest-framework).
- SafeSessionMiddleware — це існуюче проміжне програмне забезпечення, яке забезпечує кілька засобів захисту від уразливостей, які можуть виникнути внаслідок неправильної конфігурації кешу чи інших помилок, через які один користувач отримує сеанс іншого користувача.
- Раніше, якщо було виявлено невідповідність користувача між запитом або сеансом і відповіддю, проміжне програмне забезпечення реєструвало попередження; тепер він анулює сеанс і надішле відповідь про помилку. Перемикач ENFORCE_SAFE_SESSIONS увімкнено за замовчуванням, але його можна вимкнути, щоб повернутися до лише попереджень журналу.
- Перед оновленням до Nutmeg: переконайтеся, що ваші журнали не містять попереджень, які починаються з «SafeCookieData користувач на запит», або що ці попередження дуже рідкісні. Якщо вони звичайні, ймовірно, існує хибне спрацьовування, викликане деяким спеціальним логіном, маскуванням або реєстраційним кодом, який повинен викликати mark_user_change_as_expected. В іншому випадку дійсні запити можуть бути відхилені.
Додаткову інформацію див Примітки до випуску або Вікі-сторінка Nutmeg.
![]()