DLink DNS-325 – подключаем через WebDav облачные хранилища

в 3:46, , рубрики: d-link, davfs2, dns-325, linux, NAS, update, администрирование linux-систем, расширение возможностей, Сетевое оборудование, системное администрирование, Яндекс.Диск, метки: , , , , , , , ,

Помнится, давным-давно писал я статью о замечательных возможностях по расширению функциональности NAS’а DNS-325, и посетовал в статье, что, мол, не выходит, блин, завести на нем WebDAV для подключения, например, Яндекс.Диска. Но недавно это в некотором роде получилось, с помощью wwwalex, подсказавшего финт с редактированием исходников. Подробности под катом!

Важно. Подразумевается, что у вас уже установлен и настроен fun_plug, если нет – смотрите мою первую статью.

  1. Первым делом – обновляем библиотеки и устанавливаем важные приложения
    ipkg update
    ipkg install neon gcc optware-devel
    

  2. Далее – скачиваем и распаковываем в любую директорию на NAS’е davfs2, на момент написания статьи это версия 1.4.7
    wget http://mirrors.zerg.biz/nongnu/davfs2/davfs2-1.4.7.tar.gz
    tar -xzf davfs2-1.4.7.tar.gz
    

  3. Далее делаем очень жесткую и опасную вещь – правим исходники приложения, отключая проверку на верность сертификата сервера. На самом деле, можно так не делать, а скачать соответствующий сертификат для каждого сервиса, после чего подключить его, следить за его обновлениями… Но я не придумал, как сделать это с минимумом проблем, а по сему идем по пути наименьшего сопротивления.
    Редактировать мы будем файл src/webdav.c, а конкретно – последнюю строчку в функции ssl_verify меняя return ret на return 0
    DLink DNS 325 – подключаем через WebDav облачные хранилища
    DLink DNS 325 – подключаем через WebDav облачные хранилища

  4. Компилируем и устанавливаем webdav2
    ./configure --prefix=/opt --with-neon=/opt && make && make install
    

  5. Установили. Теперь через веб интерфейс NASа создаем пользователя davfs2 и группу пользователей davfs2
    groupadd davfs2
    useradd -g davfs2 davfs2
    

  6. Настраиваем параметры в файле /opt/etc/davfs2/davfs2.conf
    В частности, ставим ask_auth 0

    DLink DNS 325 – подключаем через WebDav облачные хранилища

    И cache_dir, например /mnt/HD/HD_a2/cache_webdav2
    (главное – не забыть создать папку cache_webdav2 и дать на неё права пользователю davfs2)

    DLink DNS 325 – подключаем через WebDav облачные хранилища

  7. Прописываем логин и пароль к нужному сервису, для примера – Яндекс.диска в файле /opt/etc/davfs2/secrets
    в виде

    удаленный_адрес		LOGIN		ПАРОЛЬ
    

    DLink DNS 325 – подключаем через WebDav облачные хранилища

  8. Теперь мы можем монтировать винт, например, такой командной
    /sbin/mount.davfs https://webdav.yandex.ru /mnt/HD/HD_a2/yandex
    

    Причем папку /mnt/HD/HD_a2/yandex предварительно нужно создать (и дать на неё права соответствующему пользователю).

  9. Отключить хранилище можно командой
    /sbin/umount.davfs /mnt/HD/HD_a2/yandex
    

    Результат:
    DLink DNS 325 – подключаем через WebDav облачные хранилища

    DLink DNS 325 – подключаем через WebDav облачные хранилища

И вот казалось бы, светлое будущее настало, файлы с яндекс.диска в папке видны, пятилетку в 3 года и никто не уйдёт обиженным? Не совсем. Чтение файлов происходит нормально. А вот запись больших файлов или большого количество небольших идет примерно так:

  1. Файл быстро-быстро копируется во временную папку
  2. Процесс webdav2 перестаёт отзываться. Теперь зайти в папки с подмонтированными удаленными хранилищами нельзя (можно, но виснет при попытке получить список файлов).

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

Ссылки

Автор: Newbilius

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js