Изменения в версии 2.3.29

From EjudgeWiki
Revision as of 19:15, 6 January 2014 by Cher (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Навигация: Главная страница/Система ejudge/Разработка/История версий/Изменения в версии 2.3.29

Время выхода: 14 декабря 2013 г.

Изменена поддержка сессий клиентов. В предыдущих версиях идентификатор сессии предствлял собой 64-битное число, передаваемое в параметре SID всех запросов к веб-серверу ejudge. Для повышения защищенности сессий в данной версии ejudge добавлена вторая часть идентификатора сессии — 64-битное число, передаваемое и хранимое как куки-параметр EJSID. Таким образом, только значения SID, передаваемого URL запросов к серверу, недостаточно для авторизации.

Данное изменение ломает обратную совместимость со сторонними компонентами, использующими HTTP-запросы к ejudge. Такие компоненты должны быть обновлены, чтобы сохранять и передавать обратно куки-параметр EJSID.

Сказанное выше не относится к пользовательским браузерам.

configure

Изменены пути по умолчанию для 64-битной платформы. Теперь 64-битные библиотеки помещаются в каталог lib64 (например, /opt/ejudge/lib64), а 32-битные библиотеки — в каталог lib (/opt/ejudge/lib). Для модификации пути по умолчанию к 64-битным библиотекам можно использовать опцию --libdir, а для 32-битных библиотек — --with-lib32dir.

На 64-битных платформах автоматически настраивается компиляция и 64-битных, и 32-битных версий библиотек.

ejudge-setup

Если при конфигурировании ejudge была настроена поддержка MySQL, настроечный скрипт (ejudge-install.sh) по умолчанию включает поддержку MySQL. База данных называется ejudge, пользователь ejudge и пароль ejudge. Настройки можно поменять в конфигурационных файлах (ejudge.xml и mysql_passwd).

В текстовый пользовательский интерфейс добавлено меню настройки параметров доступа к базе MySQL.

ejudge.xml

В связи с изменениями в поддержке сессий, они по умолчанию не привязываются к IP-адресу, то есть действие сессии сохраняется, если у клиента изменился IP-адрес, что часто бывает, например, в мобильных сетях. Поэтому значение атрибута disable_cookie_ip_check элемента config игнорируется.

Если необходимо включить привязку сессий к IP-адресам необходимо установить в значение "yes" атрибут enable_cookie_ip_check элемента config.

Добавлен атрибут disable_new_users элемента config. Если атрибут установлен в значение "yes", запрещается самостоятельная регистрация новых пользователей. Существующие пользователи могут регистрироваться на новые турниры, восстанавливать пароли и т. п. Администратор может создавать новых пользователей.

ej-contests

В выражения фильтра посылок добавлена поддержка полей passed_mode, eoln_type, store_flags.

Реализована поддержка нового формата хранения файлов с посылками пользователей. Стандартный (старый) формат хранения: в каталоге var/archive располагаются каталоги runs, xmlreports, reports, audit, в которых располагается иерархия подкаталогов, в которых располагаются файлы. Имя файла — это номер посылки. Файлы могут сжиматься с помощью gzip (тогда файл имеет суффикс .gz), либо быть ZIP-архивом (тогда файл имеет суффикс .zip). Например, исходный код посылки 003567 располагается в файле var/archive/runs/0/3/F/003567.gz.

В новом формате хранения используется уникальный идентификатор каждой посылки (UUID). Все файлы, относящиеся к одной посылке, хранятся в одном каталоге. Например, файлы, относящиеся к посылке с UUID 045f9a67-65a5-4a8b-954d-912e93fbc73f хранятся в каталоге var/archive/uuid/04/5f/045f9a67-65a5-4a8b-954d-912e93fbc73f. Файл с исходным кодом называется source[.gz], файл с протоколом проверки — report[.gz], файл аудита — audit. Файлы могут сжиматься с помощью gzip (тогда имя имеет суффикс .gz). Новый формат хранения файлов посылок имеет несколько преимуществ:

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

Недостатком нового формата хранения является усложнение доступа к файлам посылки по ее номеру.

По умолчанию новый формат хранения посылок отключен. Новый формат хранения нормально сосуществует со старым форматом хранения. А именно, в базу данных в таблицу посылок добавлено новое поле store_flags. Если значение поля равно 0 (значение по умолчанию), то файлы посылки хранятся в старом формате, если значение поля равно 1, то файлы посылки хранятся в новом формате. Новый формат хранения посылок включается с помощью глобальной конфигурационной переменной uuid_run_store конфигурационного файла турнира.

Добавлена новая глобальная конфигурационная переменная uuid_run_store, включающая новый формат хранения файлов в данном турнире. По умолчанию ее значение (пока) устанавливается равным 0.

Добавлена новая глобальная конфигурационная переменная enable_32bit_checkers. Если эта конфигурационная переменная установлена, то на 64-битной платформе проверяющие программы будут компилироваться 32-битными компиляторами (например, будет использоваться опция -m32 g++).