Difference between revisions of "Interface:Конфигурационные файлы"
(4 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Использование]]/[[Веб-интерфейс пользователя]]/[[Конфигурационные файлы]] | + | Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Использование]]/[[Веб-интерфейс пользователя]]/[[interface:Конфигурационные файлы|Конфигурационные файлы]] |
При запуске программа <tt>master</tt> считывает настройки из конфигурационного файла . | При запуске программа <tt>master</tt> считывает настройки из конфигурационного файла . | ||
Line 14: | Line 14: | ||
Идентификатор турнира определяется при запуске CGI-программы <tt>master</tt> по следующим | Идентификатор турнира определяется при запуске CGI-программы <tt>master</tt> по следующим | ||
правилам. | правилам. | ||
+ | |||
1. Если имя CGI-программы имеет вид <tt>master</tt>-''N'', где ''N'' — положительное целое число, тогда идентификатор турнира полагается равным N. Возможное указание идентификатора турнира в URL или переменных HTML-формы игнорируется. Далее программа | 1. Если имя CGI-программы имеет вид <tt>master</tt>-''N'', где ''N'' — положительное целое число, тогда идентификатор турнира полагается равным N. Возможное указание идентификатора турнира в URL или переменных HTML-формы игнорируется. Далее программа | ||
master пытается считать конфигурационный файл из каталога конфигурационных файлов. При этом по очереди проверяются следующие возможности: | master пытается считать конфигурационный файл из каталога конфигурационных файлов. При этом по очереди проверяются следующие возможности: | ||
− | (a) Если в каталоге конфигурационных файлов существует файл <tt>[[serve.cfg]]</tt>, он | + | : (a) Если в каталоге конфигурационных файлов существует файл <tt>[[serve.cfg]]</tt>, он будет использоваться в качестве конфигурационного. |
− | будет использоваться в качестве конфигурационного. | + | |
− | (b) Если предыдущее условие не выполнено, но в каталоге конфигурационных файлов существует файл с именем <tt>master</tt>-''N'', где ''N'' — идентификатор турнира, записанный без ведущих нулей, то такой файл будет использоваться в качестве | + | : (b) Если предыдущее условие не выполнено, но в каталоге конфигурационных файлов существует файл с именем <tt>master</tt>-''N'', где ''N'' — идентификатор турнира, записанный без ведущих нулей, то такой файл будет использоваться в качестве конфигурационного. |
− | конфигурационного. | + | |
− | (c) Если предыдущие условия не выполнены, но в каталоге конфигурационных файлов существует файл с именем <tt>master</tt>-''N′'', где ''N′'' — идентификатор турнира, дополненный до 6 десятичных знаков ведущими незначащими нулями, такой файл | + | : (c) Если предыдущие условия не выполнены, но в каталоге конфигурационных файлов существует файл с именем <tt>master</tt>-''N′'', где ''N′'' — идентификатор турнира, дополненный до 6 десятичных знаков ведущими незначащими нулями, такой файл будет использоваться в качестве конфигурационного. |
− | будет использоваться в качестве конфигурационного. | + | |
− | (d) Если предыдущие условия не выполнены, но в каталоге конфигурационных файлов существует файл с именем <tt>master</tt>-''N′′'', где ''N′′'' — идентификатор турнира, | + | : (d) Если предыдущие условия не выполнены, но в каталоге конфигурационных файлов существует файл с именем <tt>master</tt>-''N′′'', где ''N′′'' — идентификатор турнира, записанный в точности так, как в имени CGI-программы, такой файл будет использоваться в качестве конфигурационного. |
− | записанный в точности так, как в имени CGI-программы, такой файл будет использоваться в качестве конфигурационного. | ||
Например, если в запросе указано имя CGI-программы <tt>master-05</tt>, то идентификатор турнира полагается равным 5, и в качестве конфигурационного файла выбирается первый файл из списка <tt>master.cfg, master-5.cfg, master-000005.cfg, | Например, если в запросе указано имя CGI-программы <tt>master-05</tt>, то идентификатор турнира полагается равным 5, и в качестве конфигурационного файла выбирается первый файл из списка <tt>master.cfg, master-5.cfg, master-000005.cfg, | ||
Line 39: | Line 39: | ||
выполнять сколь угодно сложные трансформации URL. В этом случае обратитесь, по- | выполнять сколь угодно сложные трансформации URL. В этом случае обратитесь, по- | ||
жалуйста, к документации на веб-сервер apache. | жалуйста, к документации на веб-сервер apache. | ||
+ | |||
2. Если имя CGI-программы равно в точности master, тогда идентификатор турнира | 2. Если имя CGI-программы равно в точности master, тогда идентификатор турнира | ||
Line 45: | Line 46: | ||
турнира равен ''N''. Тогда для поиска конфигурационного файла программы <tt>master</tt> проверяются следующие возможности. | турнира равен ''N''. Тогда для поиска конфигурационного файла программы <tt>master</tt> проверяются следующие возможности. | ||
− | (a) Если в каталоге конфигурационных файлов существует файл с именем | + | : (a) Если в каталоге конфигурационных файлов существует файл с именем <tt>master</tt>-''N'', где ''N'' — идентификатор турнира, записанный без ведущих нулей, то такой файл будет использоваться в качестве конфигурационного. |
− | <tt>master</tt>-''N'', где ''N'' — идентификатор турнира, записанный без ведущих нулей, то такой файл будет использоваться в качестве конфигурационного. | + | |
− | (b) Если предыдущее условие не выполнено, но в каталоге конфигурационных файлов | + | : (b) Если предыдущее условие не выполнено, но в каталоге конфигурационных файлов существует файл с именем <tt>master</tt>-''N′'', где ''N′'' — идентификатор турнира, дополненный до 6 десятичных знаков ведущими незначащими нулями, такой файл будет использоваться в качестве конфигурационного. |
− | существует файл с именем <tt>master</tt>-''N′'', где ''N′'' — идентификатор турнира, дополненный до 6 десятичных знаков ведущими незначащими нулями, такой файл будет | + | |
− | использоваться в качестве конфигурационного. | + | : (c) Если предыдущие условия не выполнены, но в каталоге конфигурационных файлов существует файл <tt>serve.cfg</tt>, он будет использоваться в качестве конфигурационного. |
− | (c) Если предыдущие условия не выполнены, но в каталоге конфигурационных файлов существует файл <tt>serve.cfg</tt>, он будет использоваться в качестве конфигурационного. | ||
Например, если URL запроса имеет вид <tt><nowiki>http://host/cgi-bin/master?contest_id=5</nowiki></tt>, | Например, если URL запроса имеет вид <tt><nowiki>http://host/cgi-bin/master?contest_id=5</nowiki></tt>, |
Latest revision as of 09:57, 24 February 2012
Навигация: Главная страница/Система 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.