Программист мобильных приложений
0,3
рейтинг
13 мая 2013 в 07:46

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

Помнится, давным-давно писал я статью о замечательных возможностях по расширению функциональности 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



  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



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



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



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

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

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

    Результат:





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

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

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

Ссылки


Дмитрий @Newbilius
карма
90,2
рейтинг 0,3
Программист мобильных приложений
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Администрирование

Комментарии (11)

  • +1
    Вроде можно просто заставить его при запуске принимать новый сертификат автоматом. Тогда можно не патчить исходинки при обновлении. Видел в обсуждениях.
  • 0
    Нашел, не ставить ask_auth 0 и в скрипте запуска перенаправить «y» на вход.
  • 0
    Проверил — в каком либо файле написать y и в скрипте запуска в конце </путь к файлу. Работает.
    • 0
      можно уточнить — работает в принципе или именно на NASе? Там вроде была какая то проблема именно с опознанием буквы из входного потока, и эта проблема и решается с помощью правки исходника.

      Кстати, может и с проблемой с «подвисанием» сервиса есть какая-нибудь идея?
      • 0
        Работает на NAS QNAP c атомной начинкой. На домашнем проверю с марвелловской. С подвисаниями — не разбирался, время появилось — попробую подключиться к домашнему, там инет нормальный. Если отрубить use_locks — не заработает? Хотя тогда непонятно, к каким конфликтам содержимого может привести.
        P.S.> Ещё вроде бы работает на роутерах с оптварью.
        • 0
          Изначальная инструкция вроде к ним и относится =) Но у DLink'а иные проблемы.
          • 0
            «y» по-всякому пробовали передавать?
            а просто echo «y» | /sbin/mount… тоже не работало?
            • 0
              Не поленюсь и завтра перепроверю. Результат будет в update'е статьи ) Таким образом нет, не пробовал.

              Там выглядело так: задаётся вопрос о сертификате, нажимаешь «y» — процесс уходит вразнос (падает с Segmentation Fault). По словам wwwalex, «Проблема в функции rpmatch() в src/webdav.c, которая распознает ответ y/N на не подтвержденный сертификат сервера.». Попробую разные варианты, или даже покопаться в этой функции, но это дело ближайшего будущего, не сегодняшнего вечера точно.
              • 0
                Потупил я знатно — на домашнем, с чипсетом марвелл, та же ошибка — Segmentation Fault
                • 0
                  Проверил кстати варианты предложенные — результат аналогичен. Так что пока правка исходников остаётся оптимальным вариантом)
                  • 0
                    Да, похоже. Попробовал стянуть локаль en_US.utf8 с атомного наса, думал, вдруг в обработке данных оттуда бяка — не помогло.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.