В файле export_servers.py, находящемся в папке с установленным Pleasе (TODO: переместить в папку, доступную после установки), находятся настройки серверов в формате ассоциативного массива:
servers = {
'local_ejudge' : EjudgeExporter(
network = {
'host' : '127.0.0.1',
'port' : '22',
'login' : 'ejudge',
'password' : 'ejudge',
'destination' : '/home/judges/'
},
libs = []
),
'lksh' : EjudgeExporter(
...
),
'pcms2_server1' : PCMS2Exporter(
network = {
'host' : r'Z:\problems'
},
libs = []
)
}
Здесь
- host - адрес сервера
- port - ssh-порт
- login - логин пользователя, у которого есть доступ к папке с контестами
- password - пароль для аутентификации (опционально, используется только в Windows)
- private_key - путь к закрытому ключу для аутентификации (опционально)
- destination - путь к папке с контестами
Для экспорта в Ejudge необходимо:
- Добавить в export_servers.py конфигурацию сервера
- Создать в Ejudge контест, узнать его номер (с ведущими нулями)
- Далее возможно два варианта:
1. Задачи уже объединены в контест. Тогда достаточно написать
please export <название контеста в Please> to <название конфигурации сервера, например, local_ejudge> contest <ID контеста, обычно состоит из шести цифр>
Пример:please export A+12.01.03 to lksh contest 000006
Контест с конфигурационным файломA+12.01.03.contest
будет экспортирован в ejudge под номером000006
1. Задачи не объединены в контест. В таком случае необходимо выполнить команду:please export to <название конфигурации сервера> contest <ID контеста> problems <список путей к задачам через пробел>
Пример:please export to lksh contest 000006 problems sloniki aplusb
. Задачиsloniki
иaplusb
будут залиты в ejudge с конфигурацией под названиемlksh
, в контест с номером000006
При экспорте в ejudge на сервер, в подпапку please_tmp контеста, заливается архив, содержащий внутри себя несколько задач в том же формате, что и в please, и скрипт, написанный на Python 3. После запуска данный скрипт считывает конфигурацию контеста из файла ../conf/serve.cfg
, заменяет уже существующие задачи на новые (уникальный идентификатор задачи - internal_name
в ejudge), дописывает в конец файла добавившиеся задачи.
После успешного добавления задач необходимо зайти в View details
контеста и сделать там Check contest settings
, далее - Restart management
.
Для экспорта в PCMS2 необходимо:
- Подключить расшаренную vfs папку PCMS2 сервера.
1. Windows:
- Чтобы подключить диск из папки "Мой компьютер", нажмите кнопку Пуск, щелкните правой кнопкой мыши пункт Мой компьютер и выберите команду Проводник.
- В меню Сервис выберите Подключить сетевой диск.
- Выберите букву диска в поле Диск.
- В поле Папка введите UNC-путь для сервера и общего ресурса в следующем формате: \<имя pcms2 сервера><имя расшаренной vfs папки>. Можно найти компьютер и общий ресурс, нажав кнопку Обзор.
1. Linux:
mkdir /mount/<имя точки монтирования> && mount -t cifs -o username=<username>,password=<password> //<имя pcms2 сервера>/<имя расшаренной vfs папки> /mount/<имя точки монтирования>
- Добавить в export_servers.py конфигурацию сервера: путь до папки problems
- Залить задачи в pcms2. Далее возможно два варианта:
1. Задачи уже объединены в контест. Тогда достаточно написать
please export <название контеста в Please> to <название конфигурации сервера> contest <package-префикс задач>
Пример:please export A+12.01.03 to pcms2_server1 contest ru.lksh.2011.july.A.day02
Контест с конфигурационным файломA+12.01.03.contest
будет экспортирован в PCMS2 в папку ru/lksh/2011/july/A/day02/ 1. Задачи не объединены в контест. В таком случае необходимо выполнить команду:please export to <название конфигурации сервера> contest <package-префикс задач> problems <список путей к задачам через пробел>
Пример:please export to pcms2_server1 contest ru.lksh.2011.july.A.day02 problems sloniki aplusb
. Задачиsloniki
иaplusb
будут залиты в PCMS2 с конфигурацией под названиемpcms2_server1
, в папку ru/lksh/2011/july/A/day02/