michaellukashov / Far-NetBox

SFTP/SCP/FTP/FTPS/WebDAV/S3 client for Far Manager 3 (http://farmanager.com/)
https://forum.farmanager.com/viewtopic.php?t=6317
GNU General Public License v2.0
157 stars 52 forks source link

Плагин вылетает на локальную файловую панель, если на хостинге есть симлинки #149

Open stiv-sigmal opened 9 years ago

stiv-sigmal commented 9 years ago

Соответствующий баг на мантисе

На некоторых (всех?) хостингах если в корневом каталоге есть симлинк, то при попытке сменить каталог (на любой) пользователь оказывается на локальной файловой панели.

Важная особенность, каталог с симлинком должен быть корневым. Если netbox не может получит информацию о том, куда ссылается симлинк, происходит описанное в инциденте.

Проблема начинается тут: если LinkFileName пустой, то здесь возвращается ошибка и тут соединение закрывается.

Простой способ исправления: проверка LinkFileName на пустоту перед вызовом FileSystem->ReadFile. Может быть ещё более правильно устанавливать признак того, что плагин не смог прочитать куда указывает симлинк.

Более сложный вариант: флаг для FileSystem->ReadFile указывающий, что не надо закрывать соединение при ошибке.

VictorVG commented 9 years ago

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

VictorVG commented 9 years ago

Пробуйте NetBox v2.1.42.385:

https://yadi.sk/d/98j19YjZhNgH7 - FarNetBox-2.1.42_Far3_x64.7z SHA-256: 4258876924ac8e86f57aaf46163e965694ebc88c44f9c3850ede0ad92a205425 *FarNetBox-2.1.42_Far3_x64.7z

https://yadi.sk/d/VqL1Hv-whNgPV - FarNetBox-2.1.42_Far3_x86.7z SHA-256: 2c0564ac9ce6b26be23f8114178b7f133b5a9c45e8038396653a8bb5ba01172d *FarNetBox-2.1.42_Far3_x86.7z