1

Тема: Подключаем Яндекс Диск к кинетику

В эту тему перенесены посты, посвященные пакету davfs2.





Благодарим за нижеслежующий FAQ 4e4ako и других участников ветки.

Собран и выложен в репозитарий пакет davfs2 для монтирования удаленных webdav ресурсов.

Устанавливаем с помощью 'opkg install davfs2'
Если устанавливаете приложение в первый раз  - почитайте и выполните сначала это



Настройка автомонтирования davfs2 на примере Яндекс.Диск (много лирики про сервис тут)
По данному примеру также можно примонтировать любые удаленные webdav ресурсы, например: box.com, skydrive.live.com и др.

После успешной установки davfs2

Пишем через пробел в файл /media/DISK_A1/system/etc/davfs2/secrets путь куда будем монтировать(в примере /yandex.disk) логин и пароль введенные при регистрации на disk.yandex.ru

echo "/media/DISK_A1/yandex.disk login \"password\"" > /media/DISK_A1/system/etc/davfs2/secrets

меняем права доступа для того же файла

chmod 0600 /media/DISK_A1/system/etc/davfs2/secrets

создаем файлик /media/DISK_A1/system/etc/davfs2/dav.inp, содержащий всего один символ "y"

echo "y" > /media/DISK_A1/system/etc/davfs2/dav.inp

создаем скрипт автомонтирования по адресу /media/DISK_A1/system/etc/init.d/S12davfs след содержания. (не забудьте исправить адрес монтирования, если указали свой в secrets)

#!/bin/sh

MOUNT="/media/DISK_A1/system"

export PATH=$MOUNT/bin:$MOUNT/sbin:$MOUNT/usr/bin:$MOUNT/usr/sbin:/sbin:/usr/sbin:/bin:/usr/bin
export LD_LIBRARY_PATH=$MOUNT/lib:$MOUNT/usr/lib:/lib:/usr/lib

start() {
    mount -t davfs https://webdav.yandex.ru /media/DISK_A1/yandex.disk -o rw < /media/DISK_A1/system/etc/davfs2/dav.inp    
}
    
stop() {
    umount /media/DISK_A1/yandex.disk
}
    
case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        start
    ;;
    *)
    echo "Usage: $0 {start|stop|restart}"
    ;;
esac

запуск

$ /media/DISK_A1/system/etc/init.d/S12davfs start




Чтобы примонтировать еще что-нибудь(например box.com)
редактируем secrets по аналогии добавляем

echo "/media/DISK_A1/box.com login \"password\"" >> /media/DISK_A1/system/etc/davfs2/secrets
chmod 0600 /media/DISK_A1/system/etc/davfs2/secrets

и в скрипт автозапуска до строчки mount.davfs дописываем строчку

mount -t davfs https://www.box.com/dav /media/DISK_A1/box.com -o rw < /media/DISK_A1/system/etc/davfs2/dav.inp

и до umount строчку

umount /media/DISK_A1/box.com

и выполняем

$ /media/DISK_A1/system/etc/init.d/S12davfs restart

2

Re: Подключаем Яндекс Диск к кинетику

Обновил сборку davfs и проверил с НАСом. Все работает

~$ mkdir /media/dav
~$ mount -t davfs https://10.0.0.6:5006 /media/dav
Please enter the username to authenticate with server
https://10.0.0.6:5006 or hit enter for none.
  Username: xxxx
Please enter the password to authenticate user xxxx with server
https://10.0.0.6:5006 or hit enter for none.
  Password:  
mount.davfs: the server certificate does not match the server name
mount.davfs: the server certificate is not trusted
  issuer:      Certificate Authority, Synology Inc., Taipei, Taiwan, TW
  subject:     FTP Team, Synology Inc., Taipei, Taiwan, TW
  identity:    synology.com
  fingerprint: c0:19:73:ae:1a:fc:c7:9b:9c:2d:53:95:7b:d8:8b:f4:c0:b3:59:42
You only should accept this certificate, if you can
verify the fingerprint! The server might be faked
or there might be a man-in-the-middle-attack.
Accept certificate for this session? [y,N] y
mount.davfs: Warning: can't write entry into mtab, but will mount the file system anyway
~$ ls /media/dav/
home          lost+found    music         photo         public        transmission  usbshare1     video         web

У кого есть Яндекс.Диск - попробуйте с ним. Выкладываю в репозиторий.

3

Re: Подключаем Яндекс Диск к кинетику

Zyxmon :

Обновил сборку davfs и проверил с НАСом. Все работает
У кого есть Яндекс.Диск - попробуйте с ним. Выкладываю в репозиторий.

да, все работает, большое спасибо.
Хочу попробовать расшарить все-таки его, несмотря на предостережения на форуме wl500g.
По результатам отпишу.

P.S. первая версия ругалась на nobody, пытался что-то нашаманить, но не вышло:)

4

Re: Подключаем Яндекс Диск к кинетику

4e4ako :

кто нибудь смог заставить davfs монтировать яндекс.диск автоматом?
не могу разобраться с /davfs/secrets

чтобы не прописывал пишет "secrets has wrong permissions"

Ну я сейчас работаю над davfs. Автоматом монтироваться заставил.
Немного поигравшись с secrets и davfs2.conf я на них плюнул(можно их вообще удалить), и сделал так (команда из скрипта монтирования):

mount -t davfs https://webdav.yandex.ru /media/dav < /media/DISK_A1/system/etc/davfs2/dav.inp

Файл dav.inp такой:

мой_логин
мой_пароль
y

wink
Естественно, оно работает smile

5

Re: Подключаем Яндекс Диск к кинетику

кто нибудь смог заставить davfs монтировать яндекс.диск автоматом?
не могу разобраться с /davfs/secrets

чтобы не прописывал пишет "secrets has wrong permissions"

6

Re: Подключаем Яндекс Диск к кинетику

Dr.Acid :

чтобы не прописывал пишет "secrets has wrong permissions"

chmod 0600 /path/to/secrets - тоже не помогает?

Ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn...
Keenetic Giga & WD Mybook Live user

7

Re: Подключаем Яндекс Диск к кинетику

ZimniY :
Dr.Acid :

чтобы не прописывал пишет "secrets has wrong permissions"

chmod 0600 /path/to/secrets - тоже не помогает?

Наверное помогает, только это не я жаловался wink  Ну, впрочем, мне тоже наверное стоит chmod 0600 на dav.inp прописать. smile
У меня сейчас другая проблема - начал разбираться, и ни как не пойму - может он писать в это хранилище, или нет.
Читает он с него нормально, это точно(проверил). Но когда, например, кидаеш туда файл, он попадает в папку кеша davfs2 (а она у меня сейчас не в /media/DISK_A1/...  а где-то в /var/...  это я его пересобрал, чтобы хранилище можно было монтировать в /media/DISK_A1)
И после перезагрузки роутера кеш, естественно, слетает, а в хранилище файл не появляется. (umount перед перезагрузкой делаю, но, вроде, не помогает). Та же х..нь с атрибутами - ставлю скрипту chmod+x - вроде видно, стоит атрибут. Перегружаюсь, переподключаюсь - атрибута нет. Вообще сами эти хранилища поддерживают никсовые атрибуты? (я то уж было решил, что поддерживают) Если нет, тогда пойдём другим путём. Но запись всё-равно нужна...

8

Re: Подключаем Яндекс Диск к кинетику

Dr.Acid :

Ну я сейчас работаю над davfs. Автоматом монтироваться заставил.
Немного поигравшись с secrets и davfs2.conf я на них плюнул(можно их вообще удалить), и сделал так (команда из скрипта монтирования):
mount -t davfs https://webdav.yandex.ru /media/dav < /media/DISK_A1/system/etc/davfs2/dav.inp

спасибо Dr.Acid за подсказку "ходить конем", но у меня почему-то не сработало, может из-за & в пассе (\& -не помогает)

ZimniY :

chmod 0600 /path/to/secrets - тоже не помогает?

chmod сработал, спасибо. но сертификат сервера автоматом не принимает. как в конфиге прописывать я навскидку не понял.

в итоге сделал так:
в secrets прописал
/media/DISK_A1/yandex.disk login "password"
в dav.inp прописал просто
y

запускаю так:

mount -t davfs https://webdav.yandex.ru /media/DISK_A1/yandex.disk < /media/DISK_A1/system/etc/davfs2/dav.inp

чтобы отключить использую

umount.davfs /media/DISK_A1/yandex.disk

если даешь просто umount, то кэш не синхронизируется. Но у меня и без этого все пишется. (правда, я большие объемы перекачивать еще не пробовал)

Отредактировано 4e4ako (2012-05-18 18:00:15)

9

Re: Подключаем Яндекс Диск к кинетику

4e4ako :

в итоге сделал так:
в secrets прописал
/media/DISK_A1/yandex.disk login "password"
в dav.inp прописал просто
y

запускаю так:

mount -t davfs https://webdav.yandex.ru /media/DISK_A1/yandex.disk < /media/DISK_A1/system/etc/davfs2/dav.inp

Это у меня был такой первоначальный вариант. Потом я всё перетащил в dav.inp (раз он всё равно есть) - у меня работает.
Еслиб кто сказал, как от него можно избавиться(настроить конфиг)...

чтобы отключить использую

unmount.davfs /media/DISK_A1/yandex.disk

если даешь просто unmount, то кэш не синхронизируется. Но у меня и без этого все пишется. (правда, я большие объемы перекачивать еще не пробовал)

Спасибо за подсказку, - а то я вчера с этим бился-бился, но время было уже позднее...
(большие файлы тоже ещё не пробовал, маленькие при записи глючат)
(Похоже, umount из репозитория не отрабатывает umount.davfs - в отличии от mount)

Сегодня попробую завести на нём инсталляционный пакет... smile

10

Re: Подключаем Яндекс Диск к кинетику

Dr.Acid :

Еслиб кто сказал, как от него можно избавиться(настроить конфиг)...

Я так и не победил. Выкачивал сертификат Яндекса и подкладывал под davfs2, но тщетно. Яндекс предъявляет сертификат для mail.yandex.ru, а не для webdav.yandex.ru, поэтому у davfs2 «возникают» законные вопросы.

Сослался на ваше решение по автоматизации, похоже, других пока не существует.

Отредактировано ryzhov_al (2012-05-18 13:17:55)

Со всеми вытекающими...

11

Re: Подключаем Яндекс Диск к кинетику

Да, всё так. - костыль, конечно, но будем пока так...
В общем, делимся впечатлениями (багами, фичами и т.п.), задаём вопросы. (Спасибо, Zyxmon, что завели тему, сам с утра уже подумал создать такую - т.к. назрел вопрос)
Вечером хочу попробовать завести на нём систему (напрямую, если не получится - через файл-образ). Это будет ещё одна альтернатива использованию cifs для всяких Лайтов...  А потом(возможно), может и внутрь прошивки Лайт В "впихнуть" получится.

12

Re: Подключаем Яндекс Диск к кинетику

Dr.Acid :
4e4ako :

чтобы отключить использую

unmount.davfs /media/DISK_A1/yandex.disk

если даешь просто unmount, то кэш не синхронизируется. Но у меня и без этого все пишется. (правда, я большие объемы перекачивать еще не пробовал)

Спасибо за подсказку, - а то я вчера с этим бился-бился, но время было уже позднее...
(большие файлы тоже ещё не пробовал, маленькие при записи глючат)

хых. а вот тут я оказывается наврал. папки создаются, файлики создаются, но размером 0 (стоит delay_upload 0; cache 1mb)

Отредактировано 4e4ako (2012-05-18 17:37:46)

13

Re: Подключаем Яндекс Диск к кинетику

4e4ako :

а вот тут я оказывается наврал. папки создаются, файлики создаются, но размером 0 (стоит delay_upload 0; cache 1mb)

У меня и файлики нулевого размера не создаются. Правда один из многих файлов создался нормально. Ошибка вроде в недрах библиотеки neon (http://www.webdav.org/neon/). В логе (при включении debug most) такое

May 18 16:17:50 syslog: Sending request-line and headers:
May 18 16:17:50 syslog: Sending request body:
May 18 16:17:50 syslog: Request body provider failed with 
May 18 16:17:50 syslog: -
May 18 16:17:50 syslog: 1
May 18 16:17:50 syslog: 
May 18 16:17:50 syslog: sess: Closing connection.
May 18 16:17:50 syslog: sess: Connection closed.
May 18 16:17:50 syslog: Request ends, status 
May 18 16:17:50 syslog: 0
May 18 16:17:50 syslog:  class 
May 18 16:17:50 syslog: 0
May 18 16:17:50 syslog: xx, error line:
May 18 16:17:50 syslog: Premature EOF in request body file
May 18 16:17:50 syslog: 
May 18 16:17:50 syslog: Running destroy hooks.
May 18 16:17:50 syslog: Request ends.
May 18 16:17:50 syslog: tidy: neon error
May 18 16:17:50 syslog:       Premature EOF in request body file

14

Re: Подключаем Яндекс Диск к кинетику

Zyxmon :

У меня и файлики нулевого размера не создаются. Правда один из многих файлов создался нормально. Ошибка вроде в недрах библиотеки neon (http://www.webdav.org/neon/). В логе (при включении debug most) такое

если выставить в конфиге delay_upload 0 -будут создаваться, а баг похоже этот
http://lists.manyfish.co.uk/pipermail/n … 01170.html

15

Re: Подключаем Яндекс Диск к кинетику

4e4ako :

а баг похоже этот
http://lists.manyfish.co.uk/pipermail/n … 01170.html

Так какие теперь наши действия? Если этот патч наложить, оно нормально заработает?
Могу попробовать наложить (но это уж завтра), но лучше, конечно, если поправить это централизованно - в репозитории smile

16

Re: Подключаем Яндекс Диск к кинетику

Dr.Acid :
4e4ako :

а баг похоже этот
http://lists.manyfish.co.uk/pipermail/n … 01170.html

Так какие теперь наши действия? Если этот патч наложить, оно нормально заработает?
Могу попробовать наложить (но это уж завтра), но лучше, конечно, если поправить это централизованно - в репозитории :)

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

хотя хз. надо снифить, парсить и курить маны на все это дело

17

Re: Подключаем Яндекс Диск к кинетику

Просьба проверить исправленный пакет.
http://keenetic.zyxmon.org/packages/dav … enetic.ipk
У меня с ним запись идет нормально.

Вопрос у меня по папке cache - я думал, что при реальной записи на yandex.disk файлы в ней должны удаляться. А они остаются. У всех так? Удаляются при превышении заданного в конфиге размера?

ЗЫ Для сборки этой версии добавил в Makefile
TARGET_CPPFLAGS += -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
и увеличил PKG_RELEASE:=3

18

Re: Подключаем Яндекс Диск к кинетику

И логи с исправленной версией разумные

May 19 11:33:17 syslog: PUT /Public/test/mnt.txt HTTP/1.1^M User-Agent: davfs2/1.4.6 neon/0.29.6^M Connection: TE^M TE: trailers^M Host: web
dav.yandex.ru^M If-None-Match: *^M Content-Length: 106^M Authorization: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx^M If: <
May 19 11:33:17 syslog: Sending request-line and headers:
May 19 11:33:17 syslog: Sending request body:
May 19 11:33:17 syslog: Request sent; retry is
May 19 11:33:17 syslog: 1
May 19 11:33:17 syslog: .
May 19 11:33:17 syslog: [status-line] <
May 19 11:33:17 syslog: HTTP/1.1 201 Created^M

Это соответствует API Яндекс диска
http://api.yandex.ru/disk/doc/dg/reference/put.xml

19

Re: Подключаем Яндекс Диск к кинетику

Zyxmon :

Просьба проверить исправленный пакет.
http://keenetic.zyxmon.org/packages/dav … enetic.ipk
У меня с ним запись идет нормально.

Вопрос у меня по папке cache - я думал, что при реальной записи на yandex.disk файлы в ней должны удаляться. А они остаются. У всех так? Удаляются при превышении заданного в конфиге размера?

работает, правда немного подвешивает, но это, я так понял, из-за ограничения скорости usb. сразу в инет сливать не умеет -сначала в кэш, потом на сервер через delay_upload сек.

кэш перезаписывается при заполнении.
если сделать cache_size 0 -будет удалять сразу, после отправки.
при удалении с сервера файл в кэше остается и удаляется только после того как был запрос содержимого папки с сервера.

еще заметил такой глюк. если сразу много файлов заливать, то выдержав  delay_upload сек начинается полное веселье. независимо от того успел ли предыдущий файл -начинается отгрузка следущего, плюс еще добавляется закачика в кэш нового с компа - в итоге ввод\вывод usb колбасит нереально.
так что либо delay_upload 0 -и фризы при загрузке файла с компа, или намного больше 10ти, которые стоит по дефолту; при этом не забываем про lock_refresh, который по ману должен быть намного больше delay_upload, а также кэш, который не должен кончиться раньше чем вы отправили последний файл.

мой конфиг такой

lock_refresh      240
cache_size      1024
delay_upload    120

20

Re: Подключаем Яндекс Диск к кинетику

На мелком файле попробовал - вроде работает, адекватно.
С массовыми загрузками мелочевки, как понял, могут быть проблемы, и надо параметрами играться.
Вопрос к Zyxmon'у - в тулчейне этот пакет уже обновлён? Пути менять можно?
Или пока ждём, и тестируем так его, в хвост и в гриву?  smile
(Как я понял, с одним большим файлом он должен работать нормально(мне этого, в принципе, достаточно), но мне нужно поменять пути с /media/DISK_A1 на что-нить другое(чтобы можно было монтить dav или ещё чего  в /media/DISK_A1  wink ))

21

Re: Подключаем Яндекс Диск к кинетику

Пакет в репозитории. Специально выше привел простейшее изменение в Makefile. Теперь понятно, что пакет рабочий. Callback функции из пакета davfs передавались в libneon. Собраны два пакета были с немного разными опциями. Ошибка была не в сырцах, а в Makefile.

4e4ako, не много ли - гигабайт на кэш?

Желательно бы кто-нибудь написал инструкцию, включающую авторизацию, настройки, скрипт для автомонтирования. Я бы эту инструкцию перенес в 1й пост.

22

Re: Подключаем Яндекс Диск к кинетику

Zyxmon :

Желательно бы кто-нибудь написал инструкцию, включающую авторизацию, настройки, скрипт для автомонтирования. Я бы эту инструкцию перенес в 1й пост.

Скрипт у меня есть, но он немного для другого случая.  wink Попробую поправить... готово!:

#!/bin/sh

MOUNT="/media/DISK_A1/system"
MOUNTPNT="/media/dav"

export PATH=$MOUNT/bin:$MOUNT/sbin:$MOUNT/usr/bin:$MOUNT/usr/sbin:/sbin:/usr/sbin:/bin:/usr/bin

export LD_LIBRARY_PATH=$MOUNT/lib:$MOUNT/usr/lib:/lib:/usr/lib

DAVINPUT=/media/DISK_A1/system/etc/davfs2/dav.inp

start_dav() {

    mkdir -p $MOUNTPNT 2> /dev/null
    mount -t davfs https://webdav.yandex.ru $MOUNTPNT < $DAVINPUT
}

stop_dav() {
    umount.davfs $MOUNTPNT
                rm -r $MOUNTPNT 2> /dev/null
}

case "$1" in
    start)
        start_dav
        ;;
    stop)
        stop_dav
        ;;
    restart)
        stop_dav
        sleep 10
        start_dav
        ;;
    link_up)
        ;;
    ppp_up)
        ;;
    link_down)
        ;;
    ppp_down)
        ;;
    *)
        echo "Usage: $0 {start|stop|restart|link_up|link_down|ppp_up|ppp_down}"
        ;;
esac

С автоматической авторизацией проблемы - похоже, нет способа сказать в конфиге, чтоб он автоматом принимал "нехороший" сертификат Яндекса - я предложил такое решение. В свою очередь вопрос - что там с umount? Почему не работает, как надо(вызывая umount.davfs)? Это виноват umount в busybox?

23

Re: Подключаем Яндекс Диск к кинетику

Dr.Acid :

ринимал "нехороший" сертификат Яндекса

И я пытался парой разных способов с помощью плагина к FF вытащить правильный сертификат. Не вышло.

Dr.Acid :

В свою очередь вопрос - что там с umount?

Вроде все нормально, не нужно вызывать umount.davfs.

24

Re: Подключаем Яндекс Диск к кинетику

На родственном форуме ryzhov_al рекомендует ограничивать davfs c помощью cpulimit
http://wl500g.info/showthread.php?24669 … post250643

25

Re: Подключаем Яндекс Диск к кинетику

Zyxmon :

Пакет в репозитории. Специально выше привел простейшее изменение в Makefile. Теперь понятно, что пакет рабочий. Callback функции из пакета davfs передавались в libneon. Собраны два пакета были с немного разными опциями. Ошибка была не в сырцах, а в Makefile.

4e4ako, не много ли - гигабайт на кэш?

Желательно бы кто-нибудь написал инструкцию, включающую авторизацию, настройки, скрипт для автомонтирования. Я бы эту инструкцию перенес в 1й пост.

много. по моим соображениям кэш=delay_upload умножить на 3.
поставил гиг временно. посмотрю произв. а потом буду постепенно уменьшать


инструкция для домохозяек, поправьте если есть неточности
http://zalil.ru/33266998