NetBox — SFTP/SCP/FTP/FTPS/WebDAV client
- Michael Lukashov
- Posts: 486
- Joined: Mon 23 Jan, 2006 09:38
- Been thanked: 15 times
- Contact:
NetBox — SFTP/SCP/FTP/FTPS/WebDAV client
C 2013/02/28 плагин входит в дистрибутив FAR 3, заменяя собой FarFTP.
Полезные ссылки:
При возникновении проблем:
Полезные ссылки:
При возникновении проблем:
Last edited by Michael Lukashov on Sat 19 Sep, 2015 10:22, edited 2 times in total.
-
- Posts: 1
- Joined: Sun 12 Mar, 2023 07:15
NetBox — SFTP/SCP/FTP/FTPS/WebDAV client
Latest post of the previous page:
А не может такого быть, чтобы FAR и убунта разучились договориваться в отношении криптоалгоритмов?slamd64 wrote: ↑Tue 07 Feb, 2023 19:03 FAR + SSH key
...
Вдруг кто знает. С какого-то довольно давнего времени (уж, наверное, побольше года) FAR перестал подключаться по SFTP по SSH-ключу. В качестве SFTP-сервера 20-я и 22-я бубунты. Пробовал разные версии FAR на разных компах под 10-й и 11-й вендой.
Симптомы одинаковые: по паролю подключается. Но подсунутый PPK-файл игнорирует и снова просит пароль. PPK-файл рабочий, PuTTY по нему ходит без проблем.
К примеру, для Микротиков и последних дистрибутивов линукса такая проблема известна и лечится донастройкой доступных криптоалгоритмов на стороне SSH-клиента: https[://]forum[.]mikrotik[.]com/viewtopic.php?t=185635#p932048 .
А для FARа как с этим? Где и как можно проверить набор доступных криптоалгоритмов для SSH и посмотреть какой-нибудь лог SSH-аутентификации?
- buniak_a_h
- Posts: 3969
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 204 times
- Been thanked: 597 times
- Contact:
NetBox — SFTP/SCP/FTP/FTPS/WebDAV client
Почеиу, если мы находимся в руте сервера, по ctrl-pgup он выходит с него в предидущий локальный диск? В настройках фара смена диска по ctrl-pgup выключена, в это случае плагин в руте ctrl-pgup должен игнорировать.
-
- Posts: 1279
- Joined: Mon 04 Apr, 2005 13:41
- Location: San Ramon, CA / Kharkov, UA
- Has thanked: 31 times
- Been thanked: 52 times
NetBox — SFTP/SCP/FTP/FTPS/WebDAV client
Michael Lukashov, не могли бы вы посмотреть на вот этот тикет https://github.com/FarGroup/FarManager/ ... 1509410286, тут после закрытия панели NetBox (через Change Drive) перестает работать обновление панелей в Фар, насколько я понял в момент закрытия посылается сообщение FE_CLOSE, а в NetBox по этому событию вызывается принудительное закрытие панели, чего Фар не ожидает (не падает, но хорошего мало)
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
- 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
Разобрался и исправил ошибку, в результате которой NetBox не мог локально создавать длинные пути определённой длины (от 248 до 259 символов). Эта ошибка портила мне жизнь последние несколько лет, но вчера выбесила настолько, что я не выдержал, полез в исходники, и оказалась, что исправляется она очень легко. Пока Михаил синхронизирует исходники с WinSCP 5.21.7 или 5.21.8, не могли бы ответственные за репозиторий принять мой PR на гитхабе, минимально увеличить версию NetBox и собирать свежие сборки фара уже с ним?
-
- Posts: 1279
- Joined: Mon 04 Apr, 2005 13:41
- Location: San Ramon, CA / Kharkov, UA
- Has thanked: 31 times
- Been thanked: 52 times
NetBox — SFTP/SCP/FTP/FTPS/WebDAV client
Выглядит больше как залепа, почему 12, а не 5, или не 112? Есть источник для этого?// Max path for directories is 12 characters shorter than max path for files
Только что создал каталог длиной 255 символов в корне диска:
D:\ + 255-folder-name + \x00
(полная длина c нулем в конце - MAX_PATH (260)).Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
-
- Posts: 2
- Joined: Mon 24 Apr, 2023 10:21
- Has thanked: 1 time
NetBox — SFTP/SCP/FTP/FTPS/WebDAV client
Добрый день всем
Подскажите кто знает ответ - у меня есть несколько старых сессий (соединений), которые я по непонятной мне причине не могу удалить. Они все в основном пустые - в них нет IP адресов хостов и креденциалов пользователя. Редактирование и сохранение с новыми параметрами, переименование ничего не дают - все равно не могу удалить...
Как можно еще попробовать избавиться от ненужных сессий?
Подскажите кто знает ответ - у меня есть несколько старых сессий (соединений), которые я по непонятной мне причине не могу удалить. Они все в основном пустые - в них нет IP адресов хостов и креденциалов пользователя. Редактирование и сохранение с новыми параметрами, переименование ничего не дают - все равно не могу удалить...
Как можно еще попробовать избавиться от ненужных сессий?
-
- Posts: 1279
- Joined: Mon 04 Apr, 2005 13:41
- Location: San Ramon, CA / Kharkov, UA
- Has thanked: 31 times
- Been thanked: 52 times
NetBox — SFTP/SCP/FTP/FTPS/WebDAV client
Как вариант, скопировать нужные (по F5) и удалить базу настроек плагина (42E4AEB1-A230-44F4-B33C-F195BB654931.db в Far Profile). Можно базу не удалять, а почистить, если есть желание разбираться и копаться.FarEnthusiastUser wrote: ↑Mon 24 Apr, 2023 10:57 Как можно еще попробовать избавиться от ненужных сессий?
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
- 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
Если человек с компетенцией вашего уровня пишет такое, наверное я действительно не слишком понятно оформил PR. На GitHub'е я уже переделал описание, а здесь разверну ещё подробнее.
Из этого абзаца абсолютно непонятно - каким образом создал? Копированием с удалённого сервера? По какому протоколу? Или кнопкой 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 isMAX_PATH
, which is defined as 260 characters.
И на протяжении долгого времени я считал, что NetBox просто не умеет использовать этот префикс, чтобы работать с путями длиннее 260 символов. И когда в очередной раз я при достаточно неприятных обстоятельствах наткнулся на эту ошибку, я психанул и полез разбираться, что происходит на самом деле, и насколько сложно будет добавить в исходники использование префикса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 thelpMaximumComponentLength
parameter of theGetVolumeInformation
function (this value is commonly 255 characters). To specify an extended-length path, use the"\\?\"
prefix. For example,"\\?\D:\very long path"
.
"\\?\"
для работы с длинными путями.Первым моим шагом было создание тестового набора каталогов длиной от 1 до 199 символов. Копируя его с удалённого сервера на локальный компьютер внутрь некоего каталога, которому я давал имя разной длины, я хотел убедиться, что моё предположение о том, что мы упираемся в ограничение в 260 символов, верно. Однако здесь меня ожидала первая неожиданность. Максимальная длина имени каталога, в который копировался этот набор, равнялась 44 символам. То есть в итоге мы получали ограничение в
"C:\<44>\<199>"
247 символов (а если добавить сюда ещё и завершающий слеш, то 248).Но почему же мы упёрлись в 247 (или 248) символов, а не в 260? Читаем дальше всё тот же раздел документации:
Это не моя фраза, Егор. Это цитата из раздела документации Microsoft. Возможно, моей ошибкой было то, что я не оформил её в описании PR как цитату (уже поправлено), ну извините, честно говоря я не слишком продвинутый пользователь GitHub и просто не знал, что в PR description можно использовать такую же самую markdown-разметку, как и в обычных комментариях.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 exceedMAX_PATH
minus 12).
Но продолжим. Итак, на данном этапе я пришёл к выводу, что мои предположения верны, и мы действительно упёрлись в ограничение
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 делает то же самое, что только что сделал я (ладно, признаюсь, кое-что в итоге я у него всё-таки спёр, а именно комментарий

Итоги подведём. Надеюсь, я достаточно внятно объяснил, что этот патч - не "залепа" (по выражению Егора). Да, когда Михаил закончит адаптацию новой версии исходников WinSCP, эта ошибка уйдёт, поскольку в самом WinSCP её уже исправили, но кто-то знает, когда это случится? А принять однострочный патч и исправить очень неприятную ошибку, которая может поломать операцию копирования, можно уже прямо сейчас. Мне то что, я себе поправленный NetBox собрал, и у меня теперь всё отлично работает. Я как бы для остальных пользователей предлагаю это сделать.
Last edited by goran on Tue 25 Apr, 2023 01:24, edited 1 time in total.
-
- Posts: 1279
- Joined: Mon 04 Apr, 2005 13:41
- Location: San Ramon, CA / Kharkov, UA
- Has thanked: 31 times
- Been thanked: 52 times
NetBox — SFTP/SCP/FTP/FTPS/WebDAV client
goran, Я, собственно, источник и просил, спасибо. Я создавал через WinAPI, но ради интереса попробую через NetBox. Не исключаю что будет работать, почту что у меня выключены 8.3 имена на всех разделах. Приду проверю.
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
- 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
Скорее всего выключенные 8.3 имена на это влиять не будут, но будет влиять фича, добавленная в Windows 10 1607 и описанная в том же разделе документации ниже (пишут, что по умолчанию выключена, но не исключено, что для последних версий Windows это уже не соответствует действительности):
Code: Select all
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem]
"LongPathsEnabled"=dword:00000001
-
- Posts: 2
- Joined: Mon 24 Apr, 2023 10:21
- Has thanked: 1 time
NetBox — SFTP/SCP/FTP/FTPS/WebDAV client
Спасибо, коприрование и удаление базы сработало. Копаться времени естественно нет

- zg
- zero-gravity
- Posts: 5971
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 175 times
- Contact:
NetBox — SFTP/SCP/FTP/FTPS/WebDAV client
goran, у меня один вопрос, зачем там вообще условие
if (IsWin7() || (Result.Length() >= MAX_PATH - 12))
? до win7 не было "\\?\"? было. проверка на длину — вообще что-то странное. ведь "\\?\" — это не только про имена длиннее 260 символов, но и про всякую экзотику типа точек на конце и com1 и при таком подходе такие файлы/папки в длинные пути копироваться будут, а в короткие — нет. почему?-
- Posts: 343
- Joined: Mon 12 Jun, 2006 14:58
- Has thanked: 1 time
- Been thanked: 18 times
- Contact:
NetBox — SFTP/SCP/FTP/FTPS/WebDAV client
Michael Lukashov wrote: ↑Wed 08 Feb, 2023 14:24 Сейчас я занимаюсь обновлением ядра плагина до WinSCP 5.21.7 это должно исправить положение.
6.0 была бета, а вот теперь 6.1 зарелизилась.