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 вообще.
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
и всё таки «листинг директории» а не «листинг директория», женский род, родительный падеж.
«Пытаюсь настроить WebDAV, чтобы из можно было пользоваться на nginx.»
наверное «им» а не «из» ?
Комментарий для dinoel:
Спасибо, исправил.
Торопился, спасибо, сейчас исправлю.
@fix: Debain
Комментарий для hshhhhh.name:
Ох, какой я невнимательный был, когда это писал (кипел после davserver), спасибо, сейчас поправлю!
Комментарий для Евгения Степанищева:
Тогда уж и здесь
Комментарий для mr-simm.livejournal.com:
Угу.
Sabre на PHP. работает. но свои нюансы есть.
плюсы тоже — можно все переопределить и написать классы наследники, которые будут работать например с БД, при этом изображая ФС.
сервер для ФС с этой библиотекой пишется на коленке 10 минут :)
http://code.google.com/p/sabredav/ вот это
Комментарий для анонимус:
Спасибо!
да у меня были мысли написать свою адаптацию этой шняги для одной CMS. остановил тот факт что клиенты не понимают что такое Webdav + не все ПО с ним корректно работает. в частности gvfs в линуксе до сих пор не вофикслили на тему регистра имен.
а так для заливки файлов и большего контроля доступов — самое оно. единственное плохо — при заливке больших файлов — а там метод PUT используется — оно не слишком красиво по производительности.
Комментарий для анонимус:
Зачем им это понимать? Windows поддерживает WebDAV на уровне операционной системы, клиентам нужно только рассказать куда тыкать.
Комментарий для Евгения Степанищева:
Ага. С висты и выше — это не поддержка, а долбанный стыд.
Оно неплохо работает только в связке с WSS RPC (это интерфейс офиса к sharepoint, если по-русски). Не знаю, есть ли открытые реализации, в свое время делал свою.
Комментарий для cgvictor:
Тем не менее можно же написать свою реализацию, чтобы Windows открывала это как вебпапку? (это риторический вопрос)
ну так чего, библиотечка подошла?
Комментарий для анонимус:
Не знаю, в итоге настроил SFTP, надоело мучиться.
я вот и в 15м году не обнаружил продвижек в этой области.... и своё написал...
http://forum.nginx.org/read.php?21%2C259941
Комментарий для itcod:
Спасибо!