NetBox — SFTP/SCP/FTP/FTPS/WebDAV client

Здесь можно обсудить ваш любимый плагин.
User avatar
Michael Lukashov
Posts: 517
Joined: Mon 23 Jan, 2006 09:38
Has thanked: 6 times
Been thanked: 21 times
Contact:

NetBox — SFTP/SCP/FTP/FTPS/WebDAV client

Post by Michael Lukashov »

C 2013/02/28 плагин входит в дистрибутив FAR 3, заменяя собой FarFTP.

Полезные ссылки:

При возникновении проблем:
Last edited by Michael Lukashov on Sat 19 Sep, 2015 10:22, edited 2 times in total.
s-n-ushakov
Posts: 1
Joined: Sun 12 Mar, 2023 07:15

NetBox — SFTP/SCP/FTP/FTPS/WebDAV client

Post by s-n-ushakov »

Latest post of the previous page:

slamd64 wrote: Tue 07 Feb, 2023 19:03 FAR + SSH key
...
Вдруг кто знает. С какого-то довольно давнего времени (уж, наверное, побольше года) FAR перестал подключаться по SFTP по SSH-ключу. В качестве SFTP-сервера 20-я и 22-я бубунты. Пробовал разные версии FAR на разных компах под 10-й и 11-й вендой.

Симптомы одинаковые: по паролю подключается. Но подсунутый PPK-файл игнорирует и снова просит пароль. PPK-файл рабочий, PuTTY по нему ходит без проблем.
А не может такого быть, чтобы FAR и убунта разучились договориваться в отношении криптоалгоритмов?

К примеру, для Микротиков и последних дистрибутивов линукса такая проблема известна и лечится донастройкой доступных криптоалгоритмов на стороне SSH-клиента: https[://]forum[.]mikrotik[.]com/viewtopic.php?t=185635#p932048 .

А для FARа как с этим? Где и как можно проверить набор доступных криптоалгоритмов для SSH и посмотреть какой-нибудь лог SSH-аутентификации?
lvmm
Posts: 119
Joined: Thu 15 Apr, 2021 14:31
Has thanked: 8 times
Been thanked: 3 times

NetBox — SFTP/SCP/FTP/FTPS/WebDAV client

Post by lvmm »

Можно ли из него вернуться на локальный диск из командной строки, или только alt-f2, c?
User avatar
buniak_a_h
Posts: 4265
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

NetBox — SFTP/SCP/FTP/FTPS/WebDAV client

Post by buniak_a_h »

cd C:\ например
lvmm
Posts: 119
Joined: Thu 15 Apr, 2021 14:31
Has thanked: 8 times
Been thanked: 3 times

NetBox — SFTP/SCP/FTP/FTPS/WebDAV client

Post by lvmm »

Да, так работает, а просто "c:" - нет, хотя с ТЗ синтаксиса cmd должно бы быть наоборот, и "cd c:" тоже не работает.
lvmm
Posts: 119
Joined: Thu 15 Apr, 2021 14:31
Has thanked: 8 times
Been thanked: 3 times

NetBox — SFTP/SCP/FTP/FTPS/WebDAV client

Post by lvmm »

Почеиу, если мы находимся в руте сервера, по ctrl-pgup он выходит с него в предидущий локальный диск? В настройках фара смена диска по ctrl-pgup выключена, в это случае плагин в руте ctrl-pgup должен игнорировать.
Yegor
Posts: 1329
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 32 times
Been thanked: 61 times

NetBox — SFTP/SCP/FTP/FTPS/WebDAV client

Post by Yegor »

Michael Lukashov, не могли бы вы посмотреть на вот этот тикет https://github.com/FarGroup/FarManager/ ... 1509410286, тут после закрытия панели NetBox (через Change Drive) перестает работать обновление панелей в Фар, насколько я понял в момент закрытия посылается сообщение FE_CLOSE, а в NetBox по этому событию вызывается принудительное закрытие панели, чего Фар не ожидает (не падает, но хорошего мало)
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
User avatar
goran
Posts: 11
Joined: Thu 19 May, 2016 23:07
Location: Odessa
Has thanked: 1 time
Been thanked: 1 time

NetBox — SFTP/SCP/FTP/FTPS/WebDAV client

Post by goran »

Разобрался и исправил ошибку, в результате которой NetBox не мог локально создавать длинные пути определённой длины (от 248 до 259 символов). Эта ошибка портила мне жизнь последние несколько лет, но вчера выбесила настолько, что я не выдержал, полез в исходники, и оказалась, что исправляется она очень легко. Пока Михаил синхронизирует исходники с WinSCP 5.21.7 или 5.21.8, не могли бы ответственные за репозиторий принять мой PR на гитхабе, минимально увеличить версию NetBox и собирать свежие сборки фара уже с ним?
Yegor
Posts: 1329
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 32 times
Been thanked: 61 times

NetBox — SFTP/SCP/FTP/FTPS/WebDAV client

Post by Yegor »

goran wrote: Mon 24 Apr, 2023 04:21 Пока Михаил синхронизирует исходники с WinSCP 5.21.7 или 5.21.8, не могли бы ответственные за репозиторий принять мой PR на гитхабе
// Max path for directories is 12 characters shorter than max path for files
Выглядит больше как залепа, почему 12, а не 5, или не 112? Есть источник для этого?
Только что создал каталог длиной 255 символов в корне диска: D:\ + 255-folder-name + \x00 (полная длина c нулем в конце - MAX_PATH (260)).
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
FarEnthusiastUser
Posts: 2
Joined: Mon 24 Apr, 2023 10:21
Has thanked: 1 time

NetBox — SFTP/SCP/FTP/FTPS/WebDAV client

Post by FarEnthusiastUser »

Добрый день всем
Подскажите кто знает ответ - у меня есть несколько старых сессий (соединений), которые я по непонятной мне причине не могу удалить. Они все в основном пустые - в них нет IP адресов хостов и креденциалов пользователя. Редактирование и сохранение с новыми параметрами, переименование ничего не дают - все равно не могу удалить...

Как можно еще попробовать избавиться от ненужных сессий?
Yegor
Posts: 1329
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 32 times
Been thanked: 61 times

NetBox — SFTP/SCP/FTP/FTPS/WebDAV client

Post by Yegor »

FarEnthusiastUser wrote: Mon 24 Apr, 2023 10:57 Как можно еще попробовать избавиться от ненужных сессий?
Как вариант, скопировать нужные (по F5) и удалить базу настроек плагина (42E4AEB1-A230-44F4-B33C-F195BB654931.db в Far Profile). Можно базу не удалять, а почистить, если есть желание разбираться и копаться.
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
User avatar
goran
Posts: 11
Joined: Thu 19 May, 2016 23:07
Location: Odessa
Has thanked: 1 time
Been thanked: 1 time

NetBox — SFTP/SCP/FTP/FTPS/WebDAV client

Post by goran »

Yegor wrote: Mon 24 Apr, 2023 05:54 Выглядит больше как залепа, почему 12, а не 5, или не 112? Есть источник для этого?
Если человек с компетенцией вашего уровня пишет такое, наверное я действительно не слишком понятно оформил PR. На GitHub'е я уже переделал описание, а здесь разверну ещё подробнее.
Yegor wrote: Mon 24 Apr, 2023 05:54 Только что создал каталог длиной 255 символов в корне диска: D:\ + 255-folder-name + \x00 (полная длина c нулем в конце - MAX_PATH (260)).
Из этого абзаца абсолютно непонятно - каким образом создал? Копированием с удалённого сервера? По какому протоколу? Или кнопкой F7, средствами самого Far? И если кнопкой F7, то причём к успеху или неуспеху этой операции NetBox? А главное, вы похоже не поняли суть проблемы. Речь идёт не о максимальной длине имени конкретного каталога, а о максимальной длине всего пути. В нём была проблема, а не в длине имени отдельного компонента пути.

Но вернёмся к нашим баранам. Итак, на протяжении долгого времени существовала следующая проблема с NetBox'ом. При копировании дерева каталогов с удалённого компьютера по протоколу SFTP на локальный (ничего не могу сказать про другие протоколы, наверняка проблема касается как минимум и SCP, а может и не только), на определённой глубине вложенности копирование просто обрывалось без каких-либо сообщений об ошибках.

Описание ограничений достаточно внятно описано в разделе документации Maximum Path Length Limitation:
In the Windows API (with some exceptions discussed in the following paragraphs), the maximum length for a path is MAX_PATH, which is defined as 260 characters.
Там же описан способ обхода этих ограничений:
The Windows API has many functions that also have Unicode versions to permit an extended-length path for a maximum total path length of 32,767 characters. This type of path is composed of components separated by backslashes, each up to the value returned in the lpMaximumComponentLength parameter of the GetVolumeInformation function (this value is commonly 255 characters). To specify an extended-length path, use the "\\?\" prefix. For example, "\\?\D:\very long path".
И на протяжении долгого времени я считал, что NetBox просто не умеет использовать этот префикс, чтобы работать с путями длиннее 260 символов. И когда в очередной раз я при достаточно неприятных обстоятельствах наткнулся на эту ошибку, я психанул и полез разбираться, что происходит на самом деле, и насколько сложно будет добавить в исходники использование префикса "\\?\" для работы с длинными путями.

Первым моим шагом было создание тестового набора каталогов длиной от 1 до 199 символов. Копируя его с удалённого сервера на локальный компьютер внутрь некоего каталога, которому я давал имя разной длины, я хотел убедиться, что моё предположение о том, что мы упираемся в ограничение в 260 символов, верно. Однако здесь меня ожидала первая неожиданность. Максимальная длина имени каталога, в который копировался этот набор, равнялась 44 символам. То есть в итоге мы получали ограничение в "C:\<44>\<199>" 247 символов (а если добавить сюда ещё и завершающий слеш, то 248).

Но почему же мы упёрлись в 247 (или 248) символов, а не в 260? Читаем дальше всё тот же раздел документации:
When using an API to create a directory, the specified path cannot be so long that you cannot append an 8.3 file name (that is, the directory name cannot exceed MAX_PATH minus 12).
Это не моя фраза, Егор. Это цитата из раздела документации Microsoft. Возможно, моей ошибкой было то, что я не оформил её в описании PR как цитату (уже поправлено), ну извините, честно говоря я не слишком продвинутый пользователь GitHub и просто не знал, что в PR description можно использовать такую же самую markdown-разметку, как и в обычных комментариях.

Но продолжим. Итак, на данном этапе я пришёл к выводу, что мои предположения верны, и мы действительно упёрлись в ограничение MAX_PATH. Дальше я полез разбираться с исходниками. В процессе разбирательства, когда я отметил для себя несколько фрагментов, потенциально подходящих для более пристального изучения, у меня сложилось впечатление, что по крайней мере часть кода из этих фрагментов заимствована из WinSCP. Смотрю, на какой версии WinSCP у нас основан текущий NetBox? На версии 5.11.2. А ну-ка проверим, а как себя ведёт на этом наборе каталогов оригинальный WinSCP 5.11.2? Достаю из архива на SourceForge WinSCP соответствующей версии, копирую набор каталогов с удалённого компьютера на локальный. А точнее не просто набор каталогов, а родительский каталог, где они все лежат. Подсчётами длины ведь я уже не занимаюсь, меня интересует только, присутствует ли в WinSCP та же ошибка или нет?

Тут меня ожидает очередной сюрприз. Во-первых, в отличие от NetBox, который просто молча прекращает всё копирование, WinSCP ругается на невозможность создания каждого отдельного каталога. А во-вторых, ругается он не на все каталоги, длина полного локального имени которых превышает 247 символов, а только на первые 12, а более длинные копируются на локальный компьютер без ошибок!

На этом моменте я чешу репу и думаю - так что же это получается? Код умеет работать с префиксом "\\?\" для длинных путей, а всё дело в банальной ошибке и неправильном сравнении? Нахожу соответствующее место, меняю проверку Result.Length() >= MAX_PATH на Result.Length() >= MAX_PATH - 12, пересобираю NetBox, и вуаля! Весь мой набор тестовых каталогов прекрасно копируется внутрь каталога с именем любой длины, хоть 50 символов, хоть 100.

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

Итоги подведём. Надеюсь, я достаточно внятно объяснил, что этот патч - не "залепа" (по выражению Егора). Да, когда Михаил закончит адаптацию новой версии исходников WinSCP, эта ошибка уйдёт, поскольку в самом WinSCP её уже исправили, но кто-то знает, когда это случится? А принять однострочный патч и исправить очень неприятную ошибку, которая может поломать операцию копирования, можно уже прямо сейчас. Мне то что, я себе поправленный NetBox собрал, и у меня теперь всё отлично работает. Я как бы для остальных пользователей предлагаю это сделать.
Last edited by goran on Tue 25 Apr, 2023 01:24, edited 1 time in total.
Yegor
Posts: 1329
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 32 times
Been thanked: 61 times

NetBox — SFTP/SCP/FTP/FTPS/WebDAV client

Post by Yegor »

goran, Я, собственно, источник и просил, спасибо. Я создавал через WinAPI, но ради интереса попробую через NetBox. Не исключаю что будет работать, почту что у меня выключены 8.3 имена на всех разделах. Приду проверю.
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
User avatar
goran
Posts: 11
Joined: Thu 19 May, 2016 23:07
Location: Odessa
Has thanked: 1 time
Been thanked: 1 time

NetBox — SFTP/SCP/FTP/FTPS/WebDAV client

Post by goran »

Yegor wrote: Tue 25 Apr, 2023 01:50 Не исключаю что будет работать, почту что у меня выключены 8.3 имена на всех разделах.
Скорее всего выключенные 8.3 имена на это влиять не будут, но будет влиять фича, добавленная в Windows 10 1607 и описанная в том же разделе документации ниже (пишут, что по умолчанию выключена, но не исключено, что для последних версий Windows это уже не соответствует действительности):

Code: Select all

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem]
"LongPathsEnabled"=dword:00000001
FarEnthusiastUser
Posts: 2
Joined: Mon 24 Apr, 2023 10:21
Has thanked: 1 time

NetBox — SFTP/SCP/FTP/FTPS/WebDAV client

Post by FarEnthusiastUser »

Yegor wrote: Mon 24 Apr, 2023 15:33 Как вариант, скопировать нужные (по F5) и удалить базу настроек плагина (42E4AEB1-A230-44F4-B33C-F195BB654931.db в Far Profile). Можно базу не удалять, а почистить, если есть желание разбираться и копаться.
Спасибо, коприрование и удаление базы сработало. Копаться времени естественно нет :)
User avatar
zg
zero-gravity
Posts: 6035
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

NetBox — SFTP/SCP/FTP/FTPS/WebDAV client

Post by zg »

goran, у меня один вопрос, зачем там вообще условие if (IsWin7() || (Result.Length() >= MAX_PATH - 12))? до win7 не было "\\?\"? было. проверка на длину — вообще что-то странное. ведь "\\?\" — это не только про имена длиннее 260 символов, но и про всякую экзотику типа точек на конце и com1 и при таком подходе такие файлы/папки в длинные пути копироваться будут, а в короткие — нет. почему?
Pasha_ZZZ
Posts: 436
Joined: Mon 12 Jun, 2006 14:58
Has thanked: 1 time
Been thanked: 27 times
Contact:

NetBox — SFTP/SCP/FTP/FTPS/WebDAV client

Post by Pasha_ZZZ »

Michael Lukashov wrote: Wed 08 Feb, 2023 14:24 Сейчас я занимаюсь обновлением ядра плагина до WinSCP 5.21.7 это должно исправить положение.
Yegor wrote: Tue 21 Feb, 2023 17:47 Может сразу до 6.0?
6.0 была бета, а вот теперь 6.1 зарелизилась.
Post Reply

Return to “Обсуждение плагинов”