Far-NetBox icon indicating copy to clipboard operation
Far-NetBox copied to clipboard

Симлинки на ftp

Open older opened this issue 13 years ago • 17 comments

При использовании ftp симлинки представляются в виде директорий. Например если зайти сюда: ftp://ftp.uninett.no/ubuntu-iso/precise/ и попробовать скачать любой iso.

Родной ftp плагин от far работает корректно. Проверял на Far2 x64 и NetBox 2.0.19

И еще заметил что по Ctrl-F родной плагин вставляет в командную строку полный URL файла как я и ожидал, а NetBox - относительный путь к файлу, что, наверное, неправильно.

older avatar Apr 30 '12 07:04 older

Вы меня конечно извините, но Вы слегка не правы:) - способ отображения UNIX симлинков зависит не от интерфейса той либо иной программы, а от начинки самих симлинков.

А FTP симлинки на серверах реализованы по правилам ОС UNIX, и тот факт, что в связке Far 3.0.2652 (х86) + NetBox 2.0.19 (x86) я вижу симлинки обозначенные значком ":" в колонке размера что почему-то совсем не мешает им нормально работать на UNIX сервере ftp://ftp.freebsd.org/ допускающем анонимный логон, а то что Вас лично не пускают на требующий логона FTP UNINET в Румынии - может иногда стоит почитать условия подключения к данному серверу прежде чем бежать гремя железом спешно баг-репортить "NetBox кривой - не работает!" пока Вас ктой-то иной не опередил?

Все "ошибки" такого рода исчезают бесследно если внимательно и вдумчиво к сему процессу подойти.

И вот Вам пример, как сиё выглядит на нормальном FTP сервере: http://s008.radikal.ru/i303/1204/e8/212057f05e29.png

VictorVG avatar Apr 30 '12 11:04 VictorVG

Я вполне допускаю что я не прав. Хоть я и не совсем понял то что вы написали про сервер в Румынии и гремение железом ;).

Вот URL файла который я могу скачать с помощью родного ftp плагина, и не могу скачать с помошью netbox: ftp://ftp.uninett.no/ubuntu-iso/precise/ubuntu-12.04-alternate-amd64.iso

Сервер ftp.uninett.no находится в Норвегии и допускает анонимный логон. Я сейчас проверил с канадского ip-адреса - пускает анонимно.

older avatar Apr 30 '12 11:04 older

older

это отсюда - ""Додж" по имени АРИЗОНА" /Андрей Уланов, Москва, "ЭКСМО", 2004 год/, стр. 345. Я читал - от хохота давился. Потому рекомендую - именно как остроумно и интересно написанную книгу. Думаю и вам придётся по душе.

С Румынией, да это я ошибся отвечая ночью, извините.

я сейчас поглядел этот сервер - плагин не виновен - посмотрите содержимое файлов /ubuntu-iso/releases/releases/releases/precise/ubuntu-12.04-alternate-*.metalink - у них не символические ссылки, а кластерные кросс-протокольные, да ёще и с нестандартными портами:

&lt:url type="http" location="za" preference="70 > http://ubuntu.mirror.ac.za/ubuntu-release/12.04/ubuntu-12.04-alternate-i386.iso</url>

ведущие на другие сервера, и это вызывает не возможность скачать у плагина. Filezilla с такими переходами умеет работать, а WinSCP нет. Думаю, что теперь Вы представляете что там эти ребята накрутили? Красиво, надёжно в плане защиты, но реализовано в смысле универсальности отвратительно. Вот что у них на стоит по логу Filezilla 3.5.3:

Статус: Определение IP-адреса для ftp.uninett.no Статус: Соединяюсь с 128.39.3.170:21... Статус: Соединение установлено, ожидание приглашения... Ответ: 220---------- Welcome to Pure-FTPd [privsep] [TLS] ---------- Ответ: 220-You are user number 173 of 2048 allowed. Ответ: 220-Local time is now 19:18. Server port: 21. Ответ: 220-Only anonymous FTP is allowed here Ответ: 220-IPv6 connections are also welcome on this server. Ответ: 220 You will be disconnected after 15 minutes of inactivity. Команда: USER anonymous Ответ: 230- Ответ: 230- Welcome to the FTP archive at The University of Oslo Ответ: 230- ==================================================== Ответ: 230- Ответ: 230- This archive is running on an Dell PowerEdge R710 with 72GB of RAM and Ответ: 230- approx. 15 TB of diskspace. Ответ: 230- Ответ: 230- For more information, see URL: http://ftp.uninett.no/ Ответ: 230- Ответ: 230- Please email suggestions and questions to [email protected] Ответ: 230- Ответ: 230- ************************************************************************

Это Pure-FTPd http://www.pureftpd.org/project/pure-ftpd штука известная, и умеющая в кластере работать. Что судя по всему ребята использовали. Посему тут решение есть, и одно считывать файлы .metalink и парсить их на предмет линков самим после чего скачивать уже конечные файлы.

VictorVG avatar Apr 30 '12 18:04 VictorVG

@VictorVG При чем тут файлы металинк? Это обычное зеркало убунту, эти файлы есть на любом зеркале. Вы уж меня извините, но я вам отвечать больше не буду. Подожду пока отзовется автор плагина.

older avatar Apr 30 '12 20:04 older

@older

Ваше право, и я не собираюсь тратить на Вас своё время - считаю это бесполезным, поскольку Вы явно не обучаемый и знаете всё на свете, а "Только люди со средним образованием считают что они всё знают - они не знают сколько всего они не знают" /академик АН СССР Тихонов/

VictorVG avatar Apr 30 '12 22:04 VictorVG

Для реализации FTP используется Filezilla 2, которая все симлинки считает как линки на папки.

FtpFileSystem.cpp: TFTPFileSystem::ReadSymlink:

    // FZAPI treats all symlink target as directories
    File->SetType(FILETYPE_DIRECTORY);

michaellukashov avatar May 01 '12 06:05 michaellukashov

Да, действительно, я сейчас попробовал filezilla - там все симлинки на файлы видны в списке как папки, но при этом файлы нормально скачиваются.

older avatar May 01 '12 16:05 older

В Filezilla с симлинками разобрались только в версии 3.3.5.1, а до того такая же петрушка была:

 3.3.5.1 (2010-11-21)
      Bugfixes and minor changes:

           Fix downloading of symbolic links to files

Я это хорошо помню, поскольку у меня она в локалке основным FTP клиентом уже не первый год работает. И решение тут единственное - обновить код FileZilla как минимум до уровня версии 3.3.5.1, а лучше до 3.5.3, т.к. и после в ней не мало ошибок поправили - http://filezilla-project.org/versions.php и нет смысла после вдогонку их повторно вылавливать и править. Своих вопросов хватит.

VictorVG avatar May 02 '12 04:05 VictorVG

Похоже нам снова предстоит возня с симлинками - замечено не срабатывание перехода по файловым симлинкам на сайте ftp://ftp.freebas.org/ в NetBox 2.1.20 22.12.2012 х86 на ОС Win7 SP1.

Как воспроизвести явление?

открываем линк ftp://ftp.freebsd.org/pub/freebsd/ports/ports/ и пытаемся скачать тарбалл ports.tar.gz - это симлинк на файл и видим мелькающий на доли секунды диалог копирования и всё. FileZilla 3.6.0.2 скачивает такие вложенные симлинки нормально, пусть и не выводит в окне состояния размер файла.

При проверке явление устойчиво воспроизводится как в Far 3.0..2798 с NetBox v2.1.13.165, так и в Far 3.0.3000, 3.0.3088 с NetBox v2.1.20.195. Что собственно меня и заинтересовало т.к. раньше его не наблюдали.

VictorVG avatar Jan 18 '13 17:01 VictorVG

О! Замечательно. Порты скачались после изменения трактовки симлинка без ошибок. Вопросов не возникло. Спасибо!

VictorVG avatar Jan 20 '13 11:01 VictorVG

Опять нам возня.:( Вот что мы получим если симлинк ведёт на каталог:

╔══════════════════════════ Error ══════════════════════════╗ ║ Error transferring file '/pub/FreeBSD/ISO-IMAGES-alpha'. ║ ╟───────────────────────────────────────────────────────────╢ ║ Copying files from remote side failed. ║ ║ ISO-IMAGES-alpha: No such file or directory. ║ ╟───────────────────────────────────────────────────────────╢ ║ Abort Retry Skip Skip all ║ ╚═══════════════════════════════════════════════════════════╝

решение которое я вижу выглядит так:

  1. если мы встретили симлинк трактуем его как симлинк на каталог и проверяем ответ сервера.
  2. если ответ success осуществляем переход, иначе при ответе сервера error изменяем трактовку симлинка на file и переходим к его скачиванию.

По идее такой алгоритм должен окончательно устранить ошибку с симлинками.

VictorVG avatar Feb 08 '13 10:02 VictorVG

Ok, подумаю. А пока можно использовать команду cd в командной строке для перехода в каталог-симлинк: cd ISO-IMAGES-alpha

michaellukashov avatar Feb 08 '13 16:02 michaellukashov

В принципе да, должна работать. Просто мы про эти вещи знаем, а новички? Иди им объясни....

И вот ещё один интересный момент - случайно обнаружил что Win32/Win64 сборки (и сними SDK) обновились до v0.98y , v1.0.0k и v1.0.1d - забежал сюда по привычке - http://www.slproweb.com/products/Win32OpenSSL.html :)

VictorVG avatar Feb 08 '13 20:02 VictorVG

Что наблюдаем в версии NetBox 2.1.25.216 (ОС Windows 7 SP1 x86):

Проверка №1:

  1. Пытаемся открыть FTP сессию Mozilla (FTP) - сайт ftp://ftp.mozilla.org/ . Сессия открывается дольше чем в предыдущих версиях - визуально время открытия в 2 - 3 раза больше, но в итоге получаем сообщение об ошибке: ╔═══════════════ Error ═══════════════╗ ║ File or folder '.' does not exist. ║ ║ Ok ║ ╚══════════════════════════════════╝ и при нажатии Ok панель плагина закрывается а мы оказываемся в том каталоге активной панели Far откуда вызывали NetBox.

Визуально на скриншоте явление выглядит так http://yadi.sk/d/FbMBvOaO2XHTE

  1. пробуем открыть тот же самый сайт но в версии 2.1.14.212 - открывается без ошибок, старые ошибки перехода по симлинкам на каталоги остались, сессия открывается быстро, ошибки "Не найден каталог..." нет.

Проверка №2:

Работаем с FTP сервером FreeBSD.org.

  1. Открываем сессию - видим что время соединения с сервером визуально снова заметно увеличилось, но ошибки "File or folder '.' does not exist." нет.

  2. Пробуем открыть любой симлинк на каталог и получаем ошибку перехода - плагин пытается скачать его как файл без проверки типа симлинка, т.е. в данный момент он трактует любые сисмлинки как симлинки на файлы и в итоге визуально мы наблюдаем картину неудачной попытки скачивания объектов и диалог сообщения об ошибке как на приведённом скриншоте http://yadi.sk/d/mqlHHtpg2XHSk .

Но, если мы выполним команду cd она завершится успешно.

  1. переходим командой CD в каталог с симлинками на файлы и пытаемся скачать их - результат файлы скачаны успешно.

Тестовый комплект включая скриншоты, NetBox v.2.1.4.212 и инструкцию к нему так же положил к себе в облака http://yadi.sk/d/RDElw_rn2XHS4 . Установка для него не требуется - он создан для работы по принципу "Распаковал и запустил, стал не нужен - просто стёр." и может работать как HDD/Zip/JAZ так с флешки или любого NFS каталога. Все настройки хранятся в его подкаталоге ./Profile/ .

VictorVG avatar Feb 11 '13 12:02 VictorVG

Сейчас снова сделал проверку для 2.1.15.216 используя Far v3.0.3205 SVN r9684 x86. НО! обновил Win32OpenSSL SDK до версии 1.0.1e (как всегда взял тут - http://www.slproweb.com/products/Win32OpenSSL.html) и заметил, что время открытия сайта FreeBSD.org стало приемлемым, хотя переходы по симлинкам на каталоги приходится выполнять через cd "simlink" - это явление пока наблюдается и на ней.

И у меня возник вопрос - может ли реализация OpenSSL быть причиной замедления подключения к FTP серверам? Этот момент меня заинтересовал потому, что я сравнивал время подключения для двух параллельно работающих копий Far3 использующих одна NetBox v2.1.14, а вторая v2.1.15 и наблюдал через какое время будет установлено соединение. Внешние условия для работы обеих копий были одинаковы, а относительно большее время подключения к FTP серверу наблюдалось и в тестовой сети при подключении к FTP серверу развёрнутому на FreeBSD UNIX только двух этих клиентов. Поэтому мне интересно для себя понять насколько верны мои предположения о возможном влиянии реализации OpenSSL на время подключения к серверам?

VictorVG avatar Feb 20 '13 00:02 VictorVG

Нет, OpenSSL не влияет на скорость. А влияет проверка на тип симлинка, которая была в версии 2.1.25 По хорошему надо сделать отдельный поток с подключением к серверу для такой проверки. Может и сделаю такое когда нибудь. А пока проверка симлинка отключена в версии 2.1.26

michaellukashov avatar Feb 22 '13 18:02 michaellukashov

Спасибо! Понял. Ладно, попробую и со своей стороны придумать способ предотвращения ошибки. Сегодня вряд ли займусь т.к. вымотался здорово - больше суток возился с "упрямой" машиной зависавшей в произвольный момент времени. Как и думал видеокарта отказала из-за перегрева чипа после замерзания смазки в подшипнике турбины. Есть же люди включающие технику после нескольких часов мороза - "Ничего, выдержит!". В итоге даже конденсаторы питания были раскалены не прикоснутся.:(

VictorVG avatar Feb 22 '13 19:02 VictorVG