Пытаюсь настроить WebDAV, чтобы им можно было пользоваться на nginx. Пока не получилось. Модуль WebDAV из nginx не умеет обрабатывать OPTIONS и PROPFIND, из-за этого клиенты не видят листинг директории. Решение простое — дать nginx обрабатывать то, что он умеет, а OPTIONS и PROPFIND отпроксировать куда-то ещё.
Для этого я взял davserver — небольшой сервер, написанный на Пайтоне. У него два достоинства: он на Пайтоне и он есть в Debian-пакетах.
Выяснилось, что это плохая идея.
Во-первых, на PROPFIND что-то отдаётся, но это что-то клиент не понимает.
Во-вторых, оказалось, что когда формируется листинг PROPFIND, в качестве базового URL там используется имя хоста из параметров запуска (там у меня localhost), а не из заголовка «host» запроса. Это я починил, поправив код.
В-третьих (это выяснилось, когда я полез в исходники), сервер писали какие-то дикие люди и он мне однозначно изнутри не понравился. Я это использовать не хочу. Например, вот так они создают директорию:
try:
os.system("mkdir '%s'" % path)
self._log('mkcol: Created new collection %s' % path)
return 201
Кажется, они даже не заморачиваются экранированием спецсимволов в path, правда я бегло смотрел.
Пока не решил возьму ли что-то другое (хотелось что-нибудь небольшое, а не Apache) или буду отказываться от идеи настроить WebDAV вообще.
Комментарии 18
и всё таки «листинг директории» а не «листинг директория», женский род, родительный падеж.
наверное «им» а не «из» ?
Комментарий для dinoel:
Спасибо, исправил.
Торопился, спасибо, сейчас исправлю.
Комментарий для Евгения Степанищева:
Тогда уж и здесь
плюсы тоже — можно все переопределить и написать классы наследники, которые будут работать например с БД, при этом изображая ФС.
сервер для ФС с этой библиотекой пишется на коленке 10 минут :)
Спасибо!
а так для заливки файлов и большего контроля доступов — самое оно. единственное плохо — при заливке больших файлов — а там метод PUT используется — оно не слишком красиво по производительности.
Комментарий для анонимус:
Зачем им это понимать? Windows поддерживает WebDAV на уровне операционной системы, клиентам нужно только рассказать куда тыкать.
Комментарий для Евгения Степанищева:
Ага. С висты и выше — это не поддержка, а долбанный стыд.
по-русски). Не знаю, есть ли открытые реализации, в свое время делал свою.
Оно неплохо работает только в связке с WSS RPC (это интерфейс офиса к sharepoint, если
Не знаю, в итоге настроил SFTP, надоело мучиться.
http://forum.nginx.org/read.php?21%2C259941