WebDAV

Пытаюсь настроить 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

http://ru.wiktionary.org/wiki/%D0%B4%D0%B8%D1%80%D0%B5%D0%BA%D1%82%D0%BE%D1%80%D0%B8%D1%8F
и всё таки «листинг директории» а не «листинг директория», женский род, родительный падеж.

dinoel

«Пытаюсь настроить WebDAV, чтобы из можно было пользоваться на nginx.»
наверное «им» а не «из» ?

Евгений Степанищев (bolknote.ru)

Комментарий для dinoel:

наверное «им» а не «из»?

Спасибо, исправил.

и всё таки «листинг директории» а не «листинг директория», женский род, родительный падеж

Торопился, спасибо, сейчас исправлю.

hshhhhh.name

@fix: Debain

Евгений Степанищев (bolknote.ru)

Комментарий для hshhhhh.name:

Ох, какой я невнимательный был, когда это писал (кипел после davserver), спасибо, сейчас поправлю!

mr-simm (mr-simm.livejournal.com)

Комментарий для Евгения Степанищева:

Торопился, спасибо, сейчас исправлю.

Тогда уж и здесь

вот так они создают директорий

Евгений Степанищев (bolknote.ru)

Комментарий для mr-simm.livejournal.com:

Угу.

анонимус

Sabre на PHP. работает. но свои нюансы есть.
плюсы тоже — можно все переопределить и написать классы наследники, которые будут работать например с БД, при этом изображая ФС.
сервер для ФС с этой библиотекой пишется на коленке 10 минут :)

анонимус
Евгений Степанищев (bolknote.ru)

Комментарий для анонимус:

Спасибо!

анонимус

да у меня были мысли написать свою адаптацию этой шняги для одной CMS. остановил тот факт что клиенты не понимают что такое Webdav + не все ПО с ним корректно работает. в частности gvfs в линуксе до сих пор не вофикслили на тему регистра имен.
а так для заливки файлов и большего контроля доступов — самое оно. единственное плохо — при заливке больших файлов — а там метод PUT используется — оно не слишком красиво по производительности.

Евгений Степанищев (bolknote.ru)

Комментарий для анонимус:

клиенты не понимают что такое Webdav

Зачем им это понимать? Windows поддерживает WebDAV на уровне операционной системы, клиентам нужно только рассказать куда тыкать.

cgvictor

Комментарий для Евгения Степанищева:

Windows поддерживает WebDAV на уровне операционной системы

Ага. С висты и выше — это не поддержка, а долбанный стыд.

Оно неплохо работает только в связке с WSS RPC (это интерфейс офиса к sharepoint, если по-русски). Не знаю, есть ли открытые реализации, в свое время делал свою.

Евгений Степанищев (bolknote.ru)

Комментарий для cgvictor:

Тем не менее можно же написать свою реализацию, чтобы Windows открывала это как вебпапку? (это риторический вопрос)

анонимус

ну так чего, библиотечка подошла?

Евгений Степанищев (bolknote.ru)

Комментарий для анонимус:

Не знаю, в итоге настроил SFTP, надоело мучиться.

itcod

я вот и в 15м году не обнаружил продвижек в этой области.... и своё написал...
http://forum.nginx.org/read.php?21%2C259941

Евгений Степанищев (bolknote.ru)

Комментарий для itcod:

Спасибо!

Популярное