Difference between revisions of "Users.xml:info"

From EjudgeWiki
 
 
Line 1: Line 1:
 
Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Использование]]/[[Конфигурационные файлы]]/[[users.xml]]/[[users.xml:info|Общая информация]]
 
Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Использование]]/[[Конфигурационные файлы]]/[[users.xml]]/[[users.xml:info|Общая информация]]
 +
 +
Данный конфигурационный файл используется CGI-программой <tt>[[users]]</tt>. Содержимое файла прочитывается один раз при старте CGI-программы, то есть каждый раз, когда кто-либо
 +
посылает HTTP/HTTPS-запрос к серверу, приводящий к запуску программы <tt>users</tt>.
 +
 +
Местоположение конфигурационного файла определяется на этапе компиляции системы
 +
<tt>ejudge</tt> с помощью опции <tt>--enable-cgi-conf-dir</tt> скрипта <tt>[[configure]]</tt>. Эта опция позволяет установить каталог, в котором находятся конфигурационные файлы всех CGI-программ.
 +
 +
Если опция не была указана в командной строке configure, предполагается значение по
 +
умолчанию, равное <tt>../cgi-data</tt>. Местоположение каталога конфигурационных файлов,
 +
задаваемого опцией <tt>--enable-cgi-conf-dir</tt> может быть как абсолютным, так и относительным путём. В случае относительного пути точкой отсчёта является каталог, в котором находится сама CGI-программа <tt>users</tt>. Для этого используется переменная окружения
 +
<tt>SCRIPT_FILENAME</tt>, устанавливаемая веб-сервером при запуске CGI-программы.
 +
 +
Таким образом, если, например, CGI-программы располагаются в каталоге
 +
<tt>/home/httpd/cgi-bin</tt>, то при значении пути к конфигурационным файлам
 +
<tt>../cgi-data</tt>, конфигурационные файлы CGI-программ должны располагаться в каталоге
 +
<tt>/home/httpd/cgi-data</tt>.
 +
 +
Конфигурационный файл программы <tt>users</tt> может называться <tt>users.xml</tt> или <tt>users-</tt>''N''<tt>.xml</tt>, где ''N'' — номер турнира (см. ниже), но и конфигурационный файл вообще может
 +
отсутствовать. Для этого необходимо, чтобы все настройки, которые считываются из конфигурационного файла, были установлены при компиляции системы с помощью опций скрипта <tt>[[configure]]</tt>.
 +
 +
Чтобы конфигурационный файл программы <tt>users</tt> был необязательным, необходимо, чтобы программа <tt>users</tt> была открыта для доступа со всех IP-адресов (дополнительные ограничения, конечно, могут задаваться для каждого турнира в конфигурационном файле турнира). Кроме того, при компиляции системы <tt>ejudge</tt> необходимо указание опций <tt>--enable-charset, --enable-socket-path</tt> и <tt>--enable-conf-dir</tt>.
 +
 +
Если конфигурационный файл не найден или не может быть открыт, используется следующий встроенный конфигурационный файл по умолчанию:
 +
<?xml version="1.0" ?>
 +
<users_config>
 +
  <access default="allow"/>
 +
</users_config>
 +
Опции <tt>--enable-charset, --enable-socket-path</tt> и <tt>--enable-conf-dir</tt> скрипта <tt>[[configure]]</tt> позволяют в этом случае установить значения по умолчанию для
 +
остальных необходимых элементов конфигурационного файла.
 +
 +
При запуске программы users вначале определяется идентификатор турнира. Идентификатор турнира определяется либо по параметру запроса <tt>contest_id</tt>, либо по имени,
 +
под которым вызывается программа <tt>users</tt>, причем параметр запроса <tt>contest_id</tt> имеет
 +
приоритет. В случае, когда идентификатор турнира не определен или определен по параметру запроса <tt>contest_id</tt>, всегда используется конфигурационный файл <tt>users.xml</tt>. Если
 +
конфигурационный файл не существует, то будут использоваться значения по умолчанию.
 +
Если идентификатор турнира не может быть определён никаким способом, программа <tt>users</tt>
 +
завершает работу и отображает HTML-страницу “Information by your request is not available.”
 +
 +
Определение идентификатора турнира по имени программы является устаревшим механизмом и не рекомендуется для использования. В этом случае программа <tt>users</tt> должна называться <tt>users-</tt>''N'', где ''N'' — десятичное число-идентификатор турнира. Этого можно добиться
 +
созданием символических или жестких ссылок в каталоге CGI-программ веб-сервера. Тогда
 +
сначала будет сделана попытка считать конфигурационный файл <tt>users-</tt>''N''<tt>.xml</tt>, затем, если эта попытка завершилась неудачно, будет сделана попытка считать конфигурационный
 +
файл <tt>users-</tt>''N′''<tt>.xml</tt>, где ''N′'' — это число, напечатанное с 6 десятичными знаками, включая
 +
незначащие нули, например, <tt>users-000001.xml</tt>. Если это попытка завершилась неудачно,
 +
будет сделана попытка считать конфигурационный файл <tt>users-</tt>''N′′''<tt>.xml</tt>, где ''N′′'' — число,
 +
напечатанное без ведущих незначащих нулей. Наконец, будет сделана попытка считать конфигурационный файл <tt>users.xml</tt>, и в случае неуспеха будут использоваться значения по
 +
умолчанию.

Latest revision as of 10:17, 22 February 2012

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

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

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

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

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

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

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

Если конфигурационный файл не найден или не может быть открыт, используется следующий встроенный конфигурационный файл по умолчанию:

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

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

При запуске программы users вначале определяется идентификатор турнира. Идентификатор турнира определяется либо по параметру запроса contest_id, либо по имени, под которым вызывается программа users, причем параметр запроса contest_id имеет приоритет. В случае, когда идентификатор турнира не определен или определен по параметру запроса contest_id, всегда используется конфигурационный файл users.xml. Если конфигурационный файл не существует, то будут использоваться значения по умолчанию. Если идентификатор турнира не может быть определён никаким способом, программа users завершает работу и отображает HTML-страницу “Information by your request is not available.”

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