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 вообще.
23 марта 2011 19:33

dinoel (инкогнито)
23 марта 2011, 21:23

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 (инкогнито)
23 марта 2011, 21:24

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

bolk (bolknote.ru)
23 марта 2011, 21:51, ответ предназначен dinoel

наверное «им» а не «из»?
Спасибо, исправил.
и всё таки «листинг директории» а не «листинг директория», женский род, родительный падеж
Торопился, спасибо, сейчас исправлю.

hshhhhh.name (hshhhhh.name)
24 марта 2011, 02:23

@fix: Debain

bolk (bolknote.ru)
24 марта 2011, 09:22, ответ предназначен hshhhhh.name:

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

mr-simm (mr-simm.livejournal.com)
24 марта 2011, 10:39, ответ предназначен bolk (bolknote.ru):

Торопился, спасибо, сейчас исправлю.
Тогда уж и здесь
вот так они создают директорий

bolk (bolknote.ru)
24 марта 2011, 11:23, ответ предназначен mr-simm (mr-simm.livejournal.com):

Угу.

анонимус (инкогнито)
25 марта 2011, 18:23

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

анонимус (инкогнито)
25 марта 2011, 18:23

http://code.google.com/p/sabredav/ вот это

bolk (bolknote.ru)
25 марта 2011, 18:39, ответ предназначен анонимусу

Спасибо!

анонимус (инкогнито)
25 марта 2011, 18:48

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

bolk (bolknote.ru)
25 марта 2011, 23:04, ответ предназначен анонимусу

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

cgvictor (инкогнито)
27 марта 2011, 22:55, ответ предназначен bolk (bolknote.ru):

> Windows поддерживает WebDAV на уровне операционной системы
Ага. С висты и выше - это не поддержка, а долбанный стыд.

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

bolk (bolknote.ru)
28 марта 2011, 09:27, ответ предназначен cgvictor

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

анонимус (инкогнито)
28 марта 2011, 18:50

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

bolk (bolknote.ru)
29 марта 2011, 17:41, ответ предназначен анонимусу

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

itcod (инкогнито)
27 июня 2015, 12:13

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

bolknote.ru (bolknote.ru)
27 июня 2015, 14:07, ответ предназначен itcod

Спасибо!

Ваше имя или адрес блога (можно OpenID):

Текст вашего комментария, не HTML:

Кому бы вы хотели ответить (или кликните на его аватару)