Ну вот мы и подошли к последней задаче!
Работа большая, оценивается в 300 баллов.
-
Нужно создать проект на github и написать веб-сервер. Протокол HTTP 1.0, нужно реализовать только команду GET (POST - опционально), ответы 200 и 404, а также MIME-тип text/html (другие типы, например image/jpeg - опционально).
-
Запустить виртуальную машину и сохранить http-путь до вашего github репозитория в файле /home/box/final.txt
-
Первым делом тестовая среда проверяет наличие этого файла и сама клонирует репозиторий в /home/box/final.
-
Проект должен собираться с помощью cmake (изучается самостоятельно). На виртуалке стоит cmake версии 2.8. Тестовая среда в папке /home/box/final выполняет команды:
cmake . make
-
В результате сборки должен появиться исполняемый файл /home/box/final/final - ваш веб-сервер. Тестовая среда проверяет его наличие.
-
Веб-сервер должен запускаться командой:
/home/box/final/final -h <ip> -p <port> -d <directory>
Для парсинга параметров командной строки используйте getopt (изучается самостоятельно). После запуска сервер обязан вернуть управление, то есть должен демонизироваться. Иначе тесты встанут и отвалятся по таймауту!
-
Тестовая среда исполняет HTTP-запросы.
-
Самое главное. Сервер должен быть или многопоточным или многопроцессным с передачей дескрипторов.
-
Следующие трюки считаются читерством:
- Держать в памяти настроенный nginx (или, например, apache) при наличии программы-заглушки в github.
- Использовать реализацию HTTP-протокола из libevent.