Python WebDAV сервер (проект)
Ментор | Яковлев Виктор |
Учебный семестр | Весна 2015 |
Учебный курс | 1-й курс |
Что это за проект?
WebDAV
Протокол WebDAV является расширением протокола HTTP, дополняя протокол командами для управления файлами на удаленном сервере. Протокол WebDAV поддерживается штатным средствами многих операционных систем (включая Windows, где службы WebDAV можно подключать как обычные сетевые диски). Используется таким ПО, как Яндекс.Диск, ownCloud и различные groupware-системы (варианты протокола CalDAV и CardDAV).
Python http.server
Модуль http.server, входящий в стандартную библиотеку Python3 содержит реализацию сервера (класс HTTPServer), который осуществляет обработку сетевых соединений с помощью зарегистрированного обработчика, и классы обработчиков запросов: BaseHTTPRequestHandler (базовый класс), SimpleHTTPRequestHandler (наследует BaseHTTPRequestHandler) и CGIHTTPRequestHandler (наследует SimpleHTTPRequestHandler).
Класс SimpleHTTPRequestHandler поддерживает только HTTP-команды HEAD и GET, которых достаточно для выдачи статического контента "только для чтения", класс CGIHTTPRequestHandler дополнительно поддерживает команду POST.
В то же время, для поддержки функциональности WebDAV, стандартным классам не хватает поддержки команд PUT, DELETE, PROPFIND, MKCOL, COPY, MOVE.
Постановка задачи
Реализовать класс, дополняющий функциональность входящего в стандартную библиотеку класса SimpleHTTPRequestHandler поддержкой набора команд, необходимого для реализации обработчика протокола WebDAV.
В качестве минимальной тестовой программы, которая использует данный класс, необходимо реализовать WebDAV сервер, который обслуживает некоторый каталог.
Чему вы научитесь?
- Реализация сетевого взаимодействия на верхних уровнях модели OSI
- Устройство протокола HTTP, работа с заголовками и запросами
Какие начальные требования?
- Знание языка программирования Python
Какие будут использоваться технологии?
- Стандартная библиотека Python
- (для получения максимальной оценки) Библиотека для работы с аудио метаданными https://pypi.python.org/pypi/mutagenx/
Направления развития
Реализация "виртуальной файловой системы" для аудиоколлекции. Иерархия файловой системы формируется сервером на основе IDv3 тегов: Исполнитель->Альбом->ИмяКомпозиции.mp3
Критерии оценки
- 4 балла. Реализация минимального набора команд WebDAV и тестового сервера.
- 5 баллов. Реализация полного набора команд, необходимого для доступа к серверу штатными средствами проводника Windows и KDE.
- 8 баллов. Реализация виртуальной файловой системы аудиоколлекции.
- 9 баллов. Поддержка записи в виртуальную файловую системы аудиоколлекции с изменением IDv3 тегов в соответсвии с иерархией файловой системы.
Оформление результата работы в виде пакета для pip: +1 балл.