Пишу, по большей части, про историю, свою жизнь и немного про программирование.

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 2011

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 2011

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

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

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

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

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

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

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

hshhhhh.name 2011

@fix: Debain

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

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

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

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

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

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

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

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

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

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

Угу.

анонимус 2011

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

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

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

Спасибо!

анонимус 2011

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

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

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

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

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

cgvictor 2011

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

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

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

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

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

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

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

анонимус 2011

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

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

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

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

itcod 2015

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

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

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

Спасибо!