Interface:Конфигурационные файлы

From EjudgeWiki

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

При запуске программа master считывает настройки из конфигурационного файла . Каталог, в котором должен находится данный конфигурационный файл устанавливается при компиляции системы ejudge. Настройки по умолчанию таковы, что конфигурационный файл должен находиться в каталоге ../cgi-data относительно каталога, в котором находится CGI-программа master, который определяется по переменной окружения SCRIPT_FILENAME. Эта переменная окружения устанавливается веб-сервером apache при запуске CGI-программ.

При запуске CGI-программы master обязательно должен быть указан идентификатор турнира. Поддерживаются следующие способы указания идентификатора турнира:

  • Непосредственно в имени CGI-программы.
  • С помощью CGI-переменной contest_id указанием её значения в URL или в переменных формы.
  • В конфигурационном файле программы.

Идентификатор турнира определяется при запуске CGI-программы master по следующим правилам.

1. Если имя CGI-программы имеет вид master-N, где N — положительное целое число, тогда идентификатор турнира полагается равным N. Возможное указание идентификатора турнира в URL или переменных HTML-формы игнорируется. Далее программа master пытается считать конфигурационный файл из каталога конфигурационных файлов. При этом по очереди проверяются следующие возможности:

(a) Если в каталоге конфигурационных файлов существует файл serve.cfg, он будет использоваться в качестве конфигурационного.
(b) Если предыдущее условие не выполнено, но в каталоге конфигурационных файлов существует файл с именем master-N, где N — идентификатор турнира, записанный без ведущих нулей, то такой файл будет использоваться в качестве конфигурационного.
(c) Если предыдущие условия не выполнены, но в каталоге конфигурационных файлов существует файл с именем master-N′, где N′ — идентификатор турнира, дополненный до 6 десятичных знаков ведущими незначащими нулями, такой файл будет использоваться в качестве конфигурационного.
(d) Если предыдущие условия не выполнены, но в каталоге конфигурационных файлов существует файл с именем master-N′′, где N′′ — идентификатор турнира, записанный в точности так, как в имени CGI-программы, такой файл будет использоваться в качестве конфигурационного.

Например, если в запросе указано имя CGI-программы master-05, то идентификатор турнира полагается равным 5, и в качестве конфигурационного файла выбирается первый файл из списка master.cfg, master-5.cfg, master-000005.cfg, master-05.cfg, который существует в каталоге конфигурационных файлов CGI-программы master.

Если в конфигурационном файле программы master устанавливается идентификатор турнира с помощью (недокументированной) конфигурационной переменной contest_id, её значение должно совпадать со значением, заданным в имени программы.

Чтобы использовать задание идентификатора турнира непосредственно в имени CGI-программы, в каталоге CGI-программ должен существовать исполняемый файл master-N, который может быть копией программы master, либо жёсткой или символической ссылкой на неё. Если в каталоге CGI-программ веб-сервера исполняемый файл с именем master-N отсутствует, веб-сервер сгенерирует диагностическую страницу несуществующего ресурса.

Обратите внимание, что в конфигурационных файлах сервера apache можно указывать правила переписывания URL (URL Rewriting Rules), с помощью которых можно выполнять сколь угодно сложные трансформации URL. В этом случае обратитесь, по- жалуйста, к документации на веб-сервер apache.


2. Если имя CGI-программы равно в точности master, тогда идентификатор турнира берётся из CGI-переменных, переданных в URL или в переменных HTML-формы. Например, идентификатор турнира может быть задан непосредственно в URL следующим образом: http://host/cgi-bin/master?contest_id=5. Пусть идентификатор турнира равен N. Тогда для поиска конфигурационного файла программы master проверяются следующие возможности.

(a) Если в каталоге конфигурационных файлов существует файл с именем master-N, где N — идентификатор турнира, записанный без ведущих нулей, то такой файл будет использоваться в качестве конфигурационного.
(b) Если предыдущее условие не выполнено, но в каталоге конфигурационных файлов существует файл с именем master-N′, где N′ — идентификатор турнира, дополненный до 6 десятичных знаков ведущими незначащими нулями, такой файл будет использоваться в качестве конфигурационного.
(c) Если предыдущие условия не выполнены, но в каталоге конфигурационных файлов существует файл serve.cfg, он будет использоваться в качестве конфигурационного.

Например, если URL запроса имеет вид http://host/cgi-bin/master?contest_id=5, то идентификатор турнира полагается равным 5, и в качестве конфигурационного файла выбирается первый файл из списка master-5.cfg, master-000005.cfg, master.cfg, который существует в каталоге конфигурационных файлов CGI-программы master.

Если в конфигурационном файле программы master устанавливается идентификатор турнира с помощью (недокументированной) конфигурационной переменной contest_id, её значение должно совпадать со значением, заданным в имени программы.

3. Если имя CGI-программы master имеет любую другую форму, отличную от описанных выше, то в каталоге конфигурационных файлов должен существовать конфигурационный файл M.cfg в котором должна быть определена конфигурационная переменная contest_id. Здесь M — это имя, под которым запускается CGI-программа master.

Возможное указание идентификатора турнира в URL или переменных HTML-формы игнорируется.

Например, если URL запроса имеет вид http://host/cgi-bin/master-mycontest, то в каталоге конфигурационных файлов должен существовать файл master-mycontest.cfg, который будет использован в качестве конфигурационного файла CGI-программы master.

Обратите внимание, что выбор конфигурационного файла происходит до его чтения и анализа его содержимого. Таким образом, если в процессе поиска конфигурационного файла был найден некоторый конфигурационный файл, который, однако, оказался некорректным, то программа master сгенерирует диагностическую страницу неверного конфигурационного файла, даже если в списке возможных конфигурационных файлов далее находился корректный конфигурационный файл. Заметим, что такие правила определения идентификатора турнира используются всеми CGI-программами, а не только программой master.