NetBox — SFTP/SCP/FTP/FTPS/WebDAV client
- Michael Lukashov
- Posts: 484
- Joined: Mon 23 Jan, 2006 09:38
- Been thanked: 10 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.
NetBox — SFTP/SCP/FTP/FTPS/WebDAV client
Latest post of the previous page:
DosBox по ftp не читает каталоги на медиасервере. Вываливается ошибка. Хотя по SMB все нормально-
- Posts: 54
- Joined: Fri 24 Aug, 2012 15:24
NetBox — SFTP/SCP/FTP/FTPS/WebDAV client
Возникает ошибка при закрытии Far, если тот пытается подключиться (когда появляется красное окошко с Cancel и Reconnect).
Логи, на мой взгляд, не позволяют судить о причине проблемы.
Логи, на мой взгляд, не позволяют судить о причине проблемы.

Last edited by Мегамонстр on Thu 18 Jun, 2020 18:36, edited 1 time in total.
- Freeman
- Posts: 31
- Joined: Thu 20 Nov, 2014 20:10
- Location: Санкт-Петербург
- Has thanked: 5 times
- Been thanked: 2 times
- Contact:
NetBox — SFTP/SCP/FTP/FTPS/WebDAV client
NetBox из стабильной сборки 5577 в паре с плагином AltHistory наконец-то пишет в историю имена серверов (подключаюсь к разным серверам через SCP), но при переходе по пунктам истории каталогов (Alt+F12) всякий раз хочет подключиться заново и просит пароль, даже если переход происходит в рамках одного сервера. Пароли в Far не храню.
NetBox из сборки 4907 сервера в историю не пишет (их нужно угадывать или запоминать, какой пункт какому соответствует), но зато переходит по каталогам как ожидается: в рамках существующей сессии без запроса пароля.
Это баг?
NetBox из сборки 4907 сервера в историю не пишет (их нужно угадывать или запоминать, какой пункт какому соответствует), но зато переходит по каталогам как ожидается: в рамках существующей сессии без запроса пароля.
Это баг?
NetBox — SFTP/SCP/FTP/FTPS/WebDAV client
Возможная причина того, что NetBox показывает оставшееся время как попало. Файл FileOperationProgress.cpp, функа TFileOperationProgressType::TotalTimeLeft. Возвращается TDateTime(ToDouble(ToDouble(FTotalSize - FTotalSkipped) / CurCps) / SecsPerDay). Чтобы все было правильно, надо изменить так:
Code: Select all
TDateTime(ToDouble(ToDouble(FTotalSize - FTotalSkipped - FTotalTransferred) / CurCps) / SecsPerDay);
NetBox — SFTP/SCP/FTP/FTPS/WebDAV client
Вопрос: а как NetBox определяет, что нужно включать UTF для сообщений сервера?
Потому как через UI на это никак не повлиять, по умолчанию стоит Off, и в итоге получается вот такая фигня в логе
Проблема в том, что свой "disconnect message" этот сервер тоже по русски в уникоде отдаёт, а Far показывает крякозябры
Потому как через UI на это никак не повлиять, по умолчанию стоит Off, и в итоге получается вот такая фигня в логе
Проблема в том, что свой "disconnect message" этот сервер тоже по русски в уникоде отдаёт, а Far показывает крякозябры

NetBox — SFTP/SCP/FTP/FTPS/WebDAV client
SSH/SCP
для симлинки на директорию не ототображается настроеный символ пометки.
для симлинков на файлы отрабатывает корректно.
предполагаю что плагин не возвращает информацию что это симлинк.
Update:
хммм, хотя в атрибутах
Update 2:
для симлинки на директорию не ототображается настроеный символ пометки.
для симлинков на файлы отрабатывает корректно.
предполагаю что плагин не возвращает информацию что это симлинк.
Update:
хммм, хотя в атрибутах
Update 2:
Last edited by faruh on Thu 12 Nov, 2020 10:35, edited 5 times in total.
NetBox — SFTP/SCP/FTP/FTPS/WebDAV client
По своему посту чуть ранее я делал в багтреккере запись (английский), но там пока тоже тишина. Решил все-таки изучить вопрос поподробнее. То есть кратко, проблема в том, что для определенного сочетания файлов в папке, имеющих подчеркивание в названии, процесс синхронизации показывает файлы, которые гарантированно есть и по аттрибутам совпадают.
**** Этап 1. Сравнение родственников (текущий WinSCP и FAR/NetBox)
Для большого бэкапа на bsd (куча php файлов) сделал синхронизацию (Зеркало на локал) через gui WinSCP 5.17.8 (Build 10803) и после этого повторно, которая сообщила, что разницы не найдено. То есть текущий WinSCP все корректно отрабатывает. Пошел в Far 3.0.5700.0 - для тех же папок куча файлов с подчеркиваниями.
Включил лог, увидел там для этих файлов Local File .. is new, Remote file ... is new, то есть по каким-то причинам NetBox именно считает их новыми.
**** Этап 2. Изучение исходников
Грузим исходники обоих, индексируем полнотекст, роемся
Код конечно сходный по понятными причинам, но есть одна важная разница. В исходниках класс TStringList, реализация которого исторически была повторена, так как все съехали со специфической компиляции под C++ Builder (Borland, VCL) на универсальную. Но Мартин судя по всему не съехал. Поэтому где-то здесь разница.
Сортировка выглядит так, как будто отсортировали по UPPERCASE-у (не лингвиситически), а ищем по CompareString (лингвистически). Я даже пару тестов сделал, скопировав из FAR-а по ordinal сортировке проблемные папки и ища в них бинарно по CompareString. Результат ровно такой как у текущего NetBox-а, то есть если остортировать ordinal по UpperCase-у (как виндовая CompareStringOrdinal делает),а искать CompareString, то не находятся ровно те же файлы.
Глядя в TStringList вроде бы все нормально, список создается отсортированный AddObject должен добавлять файл через бинарный поиск, а потом, когда идет сравнение, IndexOf тоже должен пользоваться им же.
Но вспомнилось, что в NTFS Unsorted mode в far-е выглядит очень похожим на обычный алфавитный порчдок, но чуть-чуть меняется. Соответственно мировой разум подсказывает, что для NTFS это связано как-то тем, что там используется B-TREE для расположения файлов, а для FAT-а по старинке определяется порядком появление файлов в папке. Соответственно, решил проверить на фате, как нетбокс синхронизирует. Заводим том в FAT32 (например TrueCrypt-ом), копируем туда файлы в обратном алфавитном порядке (чтобы нарушить напрочь сортировку) и запрашиваем синхронизацию в NetBox, и тут мы получаем почти полный список файлов. Из чего делаем вывод, что AddObject добавляет не бинарно-сортированно, а подряд, соответственно идем в исходный код и видим
(src\base\Classes.cpp)
Code: Select all
intptr_t TStringList::AddObject(UnicodeString S, TObject *AObject)
{
intptr_t Result = 0;
if (!GetSorted())
{
Result = GetCount();
}
else
{
if (Find(S, Result))
{
....
}
else
{
Result = GetCount();
}
}
InsertItem(Result, S, AObject);
return Result;
}
Для сравнения часть кода Find из Delphi/VCL
Code: Select all
function TStringList.Add(const S: string): Integer;
begin
if not Sorted then
Result := FCount
else
if Find(S, Result) then
case Duplicates of
.....
end;
InsertItem(Result, S);
end;
Может быть это надо было написать в треккере, но я везде какая-то тишина по этой информации, поэтому не думаю, что это принципиально.
NetBox — SFTP/SCP/FTP/FTPS/WebDAV client
Спасибо за оперативное внесение pull request-а. Сейчас проверил Far Manager v3.0 build 5709DrKnS wrote: ↑Sun 22 Nov, 2020 16:55 Лучше сразу сюда - https://github.com/FarGroup/Far-NetBox/pulls
- NTFS проблемные папки: ok, No Differences found
- FAT, файлы, скопированные в обратной сортировке: ok , No Differences found
NetBox — SFTP/SCP/FTP/FTPS/WebDAV client
С релизами 5709 есть проблемы, возможно regression. Сравнение более или менее глубоких папок вызывает access violation
Exception: 0xC0000005 - EXCEPTION_ACCESS_VIOLATION
Details: Memory at FFFFFFF4 could not be read
errno: 0x00000000 - No error
LastError: 0x00000000 - Операция успешно завершена.
NTSTATUS: 0x80000006 - {Больше нет файлов} Не найдены другие файлы, соответствующие заданному шаблону.
Address: 0x00012B75 - NetBox.dll!tinylog::TinyLog::operator delete
Function: OpenW
Source:
File: C:\Temp\Far Manager v3.0 build 5709\Plugins\NetBox\NetBox.dll
Plugin: NetBox 2.4.534.5 (SFTP/FTP(S)/SCP/WebDAV client for FAR 3.0 x86/x64, Michael Lukashov)
Far: 3.0.5709.0 x86 (689c635)
OS: 6.1.7601.2.1.0.256.1
Kernel: 6.1.7601.24545 (win7sp1_ldr_escrow.200102-1707)
NetBox — SFTP/SCP/FTP/FTPS/WebDAV client
Проблема, которая вроде бы еще не обсуждалась.
Исторически так сложилось, что у нас на FTP появляются битые символические ссылки.
При перемещении по дереву каталогов NetBox преждевременно завершает работу, если перейти в каталог, где присутствует битая символическая ссылка (достаточно только перейти в такой каталог, без попытки перейти по битой ссылке).
Это происходит из-за того, что после команды LIST плагин дополнительно читает все симлинки каталога:
Исторически так сложилось, что у нас на FTP появляются битые символические ссылки.
При перемещении по дереву каталогов NetBox преждевременно завершает работу, если перейти в каталог, где присутствует битая символическая ссылка (достаточно только перейти в такой каталог, без попытки перейти по битой ссылке).
Это происходит из-за того, что после команды LIST плагин дополнительно читает все симлинки каталога:
NetBox — SFTP/SCP/FTP/FTPS/WebDAV client
Забыл добавить, что если убрать галочку с "Разрешать символьные ссылки", проблема исчезает.