Python WebDAV сервер (проект)

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
Ментор Яковлев Виктор
Учебный семестр Весна 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 сервер, который обслуживает некоторый каталог.

Чему вы научитесь?

  1. Реализация сетевого взаимодействия на верхних уровнях модели OSI
  2. Устройство протокола HTTP, работа с заголовками и запросами

Какие начальные требования?

  1. Знание языка программирования Python

Какие будут использоваться технологии?

  1. Стандартная библиотека Python
  2. (для получения максимальной оценки) Библиотека для работы с аудио метаданными https://pypi.python.org/pypi/mutagenx/

Темы вводных занятий

Обзорное занятие по основам сетевых технологий

Направления развития

Реализация "виртуальной файловой системы" для аудиоколлекции. Иерархия файловой системы формируется сервером на основе IDv3 тегов: Исполнитель->Альбом->ИмяКомпозиции.mp3

Критерии оценки

  • 4 балла. Реализация минимального набора команд WebDAV и тестового сервера.
  • 5 баллов. Реализация полного набора команд, необходимого для доступа к серверу штатными средствами проводника Windows и KDE.
  • 8 баллов. Реализация виртуальной файловой системы аудиоколлекции.
  • 9 баллов. Поддержка записи в виртуальную файловую системы аудиоколлекции с изменением IDv3 тегов в соответсвии с иерархией файловой системы.

Оформление результата работы в виде пакета для pip: +1 балл.