Как настроить свой WebDAV-сервер для удалённого доступа к файлам


По сравнению с FTP протокол WebDAV обладает рядом преимуществ:

  • Выполнение основных файловых операций над объектами на удаленном сервере;
  • Выполнение расширенных файловых операций (блокировки, поддержка версий);
  • Работа с любым типом объектов (не только файлы);
  • Поддержка метаданных (свойств) объектов;
  • Поддержка одновременной работы над объектами.
  • Нет необходимости открывать дополнительные порты (работает поверх http).

Перед тем как начать необходимо , к содержимому которого и будем открывать доступ с помощью WebDAV.

Настройка IIS + WebDAV

В этом примере используется IIS 7.5, входящий в базовую поставку Windows 7.

Открываем Панель управления -> Программы -> Включение или отключение компонентов Windows. В списке раскрываем «Службы IIS» -> Службы Интернета -> Общие функции HTTP -> отмечаем компоненту «Публикация WebDAV»:

Далее открываем «Диспетчер служб IIS» (Пуск -> Правый клик по Компьютер -> в меню выбрать Управление -> Службы и приложения). Выбираем сайт, в моем случае это Default Web Site (веб-сайт по умолчанию). Переходим в раздел «Проверка подлинности». Здесь необходимо удостовериться, что включена компонента «Проверка подлинности Windows»:

Открываем раздел «Правила разработки WebDAV».

Добавляем новое правило разработки. Разрешить доступ — ко всему содержимому. Далее указываем группу пользователей, которой разрешен доступ. В моем случае это группа Администраторы. Внизу в разделе «разрешения», отмечаем все три опции (чтение, источник, запись), чтобы гарантировать полный доступ:

Последний этап — включаем WebDAV (в правой колонке ссылка «Включить WebDAV»):

На всякий случай перезапускаем IIS. На этом все. теперь пробуем подключиться.

Еще раз напоминаю, для работы WebDAV не надо открывать ни каких дополнительных портов, кроме, разумеется, TCP 80. Т.е. если есть доступ к сайту, то и WebDAV будет работать.

Подключение

Самый быстрый и простой способ: в командной строке выполнить

net use * http://ip_адрес_сайта/

Или через графический интерфейс. Откройте Пуск -> Компьютер -> Подключить сетевой диск. Введите адрес сервера (обязательно c http://) и нажмите Готово.

Введите имя пользователя и пароль:

После нажатия на Ок, откроется окно с содержимым удаленного сервера.

Так как именно протокол определяет то, как общаются между собой программы и сервер, от его выбора зависит примерно всё. И то, как будут устроены клиенты, и то, какие возможности работы с файлами у них будут.

Сегодня мы хотим рассказать о причинах, которые остановили наш выбор именно на WebDAV и сделали его протоколом для клиентов Яндекс.Диска .

Благодаря API , реализованному на его базе, с нашим сервисом уже работают ABBYY FineScanner , Handy Backup 7 , ES Проводник и .

Перед тем как выбрать протокол, мы определили для себя важнейшие требования к нему:

  1. Скорость работы;
  2. Открытая лицензия;
  3. Возможность реализации всех необходимых действий: аутентификации, поддержки файловых операций, конкурентного доступа к файлам, докачки с сервера и возобновления закачки на сервер;
  4. Распространённость - он должен работать с целевыми операционными системами (в первую очередь Windows, Mac OS X, Linux) «из коробки» или с минимальными доработками.
Мы даже были готовы разрабатывать свой собственный протокол, если бы существующие нам не подошли. Изменение протокола после запуска потребовало бы много человекочасов работы, поэтому нужно было изучить разные варианты и выбрать лучше всего отвечающий нашим требованиям.

FTP . Этот протокол для удалённой работы с файлами проверен временем. Но создавался он без учёта требований информационной безопасности, что стало для нас его существенным недостатком. Помимо этого, он не поддерживает многие необходимые нам операции, например, передачу метаданных вместе с содержимым файла. И требует для подключения специальные приложения.

BitTorrent . Так как речь сразу шла о синхронизации между девайсами, то использовать соединение между ними без создания нагрузки на серверы было бы очень полезно, но это потребовало бы двойной работы по разработке клиента. Вдобавок возникли бы проблемы при работе через NAT-ы и firewall-ы, что сильно снизило бы пользу от использования этого протокола.

Amazon S3 . Это хранилище использует свой собственный протокол, основанный на HTTP. Мы рассматривали возможность использования API S3, однако отказались от этой идеи из-за отсутствия в нём привычной работы с каталогами и из-за необходимости использовать специальные приложения для доступа.

WebDAV . Основанный на HTTP и XML и нетрудно расширяемый, он поддерживает в спецификациях практически все, что нам нужно. C ним достаточно хорошо работают предустановленные пакеты во всех целевых операционных системах. Кроме того отдел разработки десктопных клиентов Яндекс.Диска, занимавшийся XMPP-сервером Яндекса, на тот момент уже имел опыт работы с открытыми протоколами на базе XML.

Главной причиной, по которой нам не хотелось создавать свой собственный протокол, было то, что работать с ним смогут только наши приложения, а мы хотели открытости.

В итоге, из всех обсуждавшихся вариантов мы выбрали WebDAV. Единственное, чего не хватало в протоколе - это информирования клиента об изменениях на сервере, очень важной фичи синхронизации. Но так как протокол расширяем, это не стало проблемой.

После выбора протокола началась работа над прототипом Яндекс.Диска. Наш WebDAV-сервер мы написали на Erlang . В качестве фреймворка для веб-сервера был выбран mochiweb , достаточно легковесная и хорошо знакомая нашим разработчикам библиотека. Она же была использована в известной статье о подключении миллиона пользователей к одному серверу - A million user comet application . Также мы думали и об использовании веб-сервера Yaws , который можно сравнить с Apache. Это полноценный веб-сервер, умеющий отдавать статику, запускать CGI-скрипты, обрабатывать специальные страницы с серверными скриптами. Но это всё было нам не нужно. Если бы мы начинали делать проект сейчас, выбор пал бы на Cowboy , так как он предоставляет больше возможностей по определению проблем с соединением.

После изучения протокола WebDAV началась работа над операциями листинга файлов и каталогов на сервере. В качестве хранилища для прототипа использовались mysql-база данных, в которой хранилась мета-информация и обычная файловая система для хранения содержимого файлов. Масштабирования и высокой надёжности на этом этапе не требовалось.

Схема была довольно простой, так как это был прототип. Как обычно бывает с файловыми системами, встал вопрос ограничений на пути. Так как максимальная длина пути к ресурсу в протоколе не оговаривалась, было решено сделать длину компоненты пути в 255 символов, а количество уровней вложенности неограниченным. Примерно таблица хранилища файлов выглядела так:

Одной из первых нетривиальных задач стал листинг корня, в котором ничего нет. Сложность в том, что метод PROPFIND , кроме просто листинга, выполняет ещё и задачу чтения свойств ресурса. Необходимо было правильно разбирать запрос, понимать, что мы можем выдать, а что нет; формировать правильный ответ. В качестве первого клиента использовался встроенный в Ubuntu gvfs. Отладив работу с ним, мы решили проверить работу подключения из Windows 7 и обнаружили, что он с нами не работает. Исследование работы с другими серверами показало, что встроенные в Windows клиенты не обрабатывают пространство имён «DAV:», если оно объявлено дефолтным, без префикса. Другие стандартные клиенты оказались более терпимыми и легко переваривали выдачу, сформированную специально для клиентов Windows. К счастью, это была единственная несовместимость, которую нам удалось найти.

Когда работа над листингом была завершена, мы реализовали тривиальные операции создания каталогов и удаления ресусов.

Получаю сообщение об ошибке

Если вы получаете сообщение об ошибке при попытке подключиться по протоколу WebDAV, убедитесь, что вы указали верные настройки для доступа. Проверьте правильность пароля, раскладку клавиатуры, а также не включена ли клавиша Caps Lock. Кроме того, убедитесь в том, что на Диске достаточно свободного места для копируемых файлов. Также нельзя загружать файлы объемом более 50 ГБ.

Примечание. Подключение к WebDAV-серверу происходит только с помощью SSL-шифрования. Если программа, с помощью которой вы подключаетесь, не поддерживает SSL, соединиться с сервером не удастся.

Неправильное имя папки. Задайте другое имя.

Эта проблема возникает из-за неполадок в самой ОС Windows, которая не поддерживает подключение по протоколу WebDAV через защищенный протокол HTTPS. Мы работаем над решением этой проблемы.

Я удалил файлы, но их нет в Корзине

При удалении по WebDAV файлы не попадают в Корзину, а сразу удаляются с серверов Яндекса. Если вы удалили файлы по WebDAV, восстановить их уже не получится.

Написать в службу поддержки

Если у вас подключен платный тариф, вы можете подключиться к сервису по протоколу WebDAV. На вашем компьютере Облако будет выглядеть как обычная файловая система.

Настройка на Windows

1. Перейдите в «Этот компьютер».

2. В верхней панели нажмите «Подключить сетевой диск».

3. В открывшемся окне нажмите на надпись «Подключение к веб-сайту, на котором вы можете хранить документы и изображения».

5. Выделите надпись «Выберите другое сетевое расположение» и нажмите «Далее».

6. В поле «Сетевой адрес или адрес в Интернете» введите https://webdav.cloud.mail.ru и нажмите «Далее».

7. Введите логин и пароль от аккаунта, к которому подключено Облако.

8. Укажите имя сетевого диска и нажмите «Далее».

9. Нажмите «Готово». Сетевой диск будет доступен в «Проводнике».

При загрузке больших файлов возникает проблема с индикатором: он останавливается на 99%. На самом деле загрузка начинается именно в этот момент. Чтобы файл появился на Облаке, подождите еще некоторое время. Это специфика работы протокола WebDAV на Windows. К сожалению, мы не можем на неё повлиять.

Исправление ошибок

Если у вас возникла ошибка при подключении Облака по протоколу WebDAV, попробуйте настроить доступ через консоль Windows. Для этого:

  1. Нажмите клавиши Win+R.
  2. В открывшемся окне напишите «CMD» и нажмите «ОК». Откроется командная строка.
  3. Введите команду net use R: https://webdav.cloud.mail.ru/ /user: /persistent:yes где — ваш почтовый ящик, к которому подключено Облако, и — пароль от него.

Если ошибка сохранилась, проверьте, запущена ли у вас служба «Веб-клиент». Для этого:

  1. Перейдите «Пуск» → «Панель управления» → «Система и безопасность» → «Администрирование» → «Службы».
  2. В списке найдите службу «Веб-клиент» и откройте ее.
  3. В списке «Тип запуска» выберите «Автоматически».
  4. Нажмите «ОК» и перезагрузите компьютер.

Настройка на macOS

1. На рабочем столе в панели задач Finder нажмите «Переход» → «Подключение к серверу».

2. Введите https://webdav.cloud.mail.ru и нажмите «Подключиться».

3. Введите логин и пароль от аккаунта, к которому подключено Облако, и нажмите «Подключиться».

Откроется окно с Облаком пользователя.

Настройка на Linux

1. Перейдите в ваш файловый менеджер.

2. Нажмите надпись «Подключиться к серверу» («Connect to Server»).

3. В поле «Адрес сервера» («Server Adress») введите davs://<логин>@webdav.cloud.mail.ru:443 , где <логин> — адрес вашего ящика, к которому подключено Облако, в формате [email protected].


4. Нажмите «Подключиться» («Connect»).

5. Введите пароль от ящика и снова нажмите «Подключиться» («Connect»).

Откроется Облако. Чтобы в дальнейшем попасть в него, откройте файловый менеджер. Ссылка находится снизу в левом меню.

Чтобы выйти из Облака, нажмите на значок рядом с его названием.