Register.xml:info

From EjudgeWiki

Навигация: Главная страница/Система ejudge/Использование/Конфигурационные файлы/register.xml/Общая информация

Данный конфигурационный файл используется CGI-программой register. Содержимое файла прочитывается один раз при старте CGI-программы, то есть каждый раз, когда ктолибо посылает HTTP/HTTPS-запрос к серверу, приводящий к запуску программы register.

Местоположение конфигурационного файла определяется на этапе компиляции системы ejudge с помощью опции --enable-cgi-conf-dir скрипта configure. Эта опция позволяет установить каталог, в котором находятся конфигурационные файлы всех CGI-программ.

Если опция не была указана в командной строке configure, предполагается значение по умолчанию, равное ../cgi-data. Местоположение каталога конфигурационных файлов, задаваемого опцией --enable-cgi-conf-dir может быть как абсолютным, так и относительным путём. В случае относительного пути точкой отсчёта является каталог, в котором находится сама CGI-программа register. Для этого используется переменная окружения SCRIPT_FILENAME, устанавливаемая веб-сервером при запуске CGI-программы.

Таким образом, если, например, CGI-программы располагаются в каталоге /home/httpd/cgi-bin, то при значении пути к конфигурационным файлам ../cgi-data, конфигурационные файлы CGI-программ должны располагаться в каталоге /home/httpd/cgi-data.

Конфигурационный файл программы register может называться register.xml или register-N.xml, где N — номер турнира (см. ниже), но и конфигурационный файл вообще может отсутствовать. Для этого необходимо, чтобы все настройки, которые считываются из конфигурационного файла, были установлены при компиляции системы с помощью опций скрипта configure.

Чтобы конфигурационный файл программы register был необязательным, необходимо, чтобы программа register была открыта для доступа со всех IP-адресов (дополнительные ограничения, конечно, могут задаваться для каждого турнира в конфигурационном файле турнира). Кроме того, при компиляции системы ejudge необходимо указание опций --enable-charset, --enable-socket-path и --enable-conf-dir. Если конфигурационный файл не найден или не может быть открыт, используется следующий встроенный конфигурационный файл по умолчанию:

<?xml version="1.0" ?>
<register_config>
 <access default="allow"/>
</register_config>

Опции --enable-charset, --enable-socket-path и --enable-conf-dir скрипта configure позволяют в этом случае установить значения по умолчанию для остальных необходимых элементов конфигурационного файла.

При запуске программы register вначале определяется идентификатор турнира. Идентификатор турнира определяется либо по параметру запроса contest_id, либо по имени, под которым вызывается программа register, причем параметр запроса contest_id имеет приоритет. В случае, когда идентификатор турнира не определен или определен по параметру запроса contest_id, всегда используется конфигурационный файл register.xml. Если конфигурационный файл не существует, то будут использоваться значения по умолчанию.

Определение идентификатора турнира по имени программы является устаревшим механизмом и не рекомендуется для использования. В этом случае программа register должна называться register-N, где N — десятичное число-идентификатор турнира. Этого можно добиться созданием символических или жестких ссылок в каталоге CGI-программ веб-сервера.Тогда сначала будет сделана попытка считать конфигурационный файл register-N.xml, затем, если эта попытка завершилась неудачно, будет сделана попытка считать конфигурационный файл register-N′.xml, где N′ — это число, напечатанное с 6 десятичными знаками, включая незначащие нули, например, register-000001.xml. Если это попытка завершилась неудачно, будет сделана попытка считать конфигурационный файл register-N′′.xml, где N′′ — число, напечатанное без ведущих незначащих нулей. Наконец, будет сделана попытка считать конфигурационный файл register.xml, и в случае неуспеха будут использоваться значения по умолчанию.