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
156 stars 52 forks source link

Невозможно удалить сессию с пробелом. #145

Open PaperbackWriter1 opened 9 years ago

PaperbackWriter1 commented 9 years ago

Far 3.0 build 4269 x64, NetBox 2.1.41 (build 365)

Не удаляются сохраненные сессии, в названии которых присутствует пробел, например < Session name="yandex%20disk" >. При нажатии F8 в такой сессии обнуляются все параметры - сервер, логи, пароль итд, но сама сессия остается.

VictorVG commented 9 years ago

Не подтверждаю. Проверил на Far b4272 + NetBox v2.1.41.365 и более ранних билдах Far - у меня всё удаляется по F8 и Del (у меня скрипт сопоставляет Del == F8) в любых х86 и в х64 сборках хотя имена сессий с пробелами. Я бы посмотрел локальные настройки и Lua/Moon скрипты - думаю что ошибка в них сидит. У меня к примеру сессии выглядят так:

x64_session

и я у себя проблемы удаления сессий с пробелами в именах не наблюдаю.

P.S.

Кстати, можно попробовать удалить кэш плагинов - он по моим наблюдениям часто вызывает проблемы.

AnrDaemon commented 9 years ago

Вы случайно не создавали эти сесии очень-очень раньше, когда плагин был маленьким? Может статься, у вас в настройках хранится ДВЕ сессии с похожими именами. Попробуйте экспортировать нужные сессии, прибить ветку плагина нафиг, и импортировать свои сессии обратно.

PaperbackWriter1 commented 9 years ago

VictorVG - что имеется в виду под "локальные настройки и Lua/Moon скрипты", что именно смотреть? AnrDaemon - нет, создавал относительно недавно. Похожих имен нет. Пришлось удалить .db файл, в котором лежали настройки NetBox'а, а потом восстановить из бэкапа нужные.

VictorVG commented 9 years ago

БД настроек вашей копии Far и подключённые к ней скрипты - ведь если у вас как у меня этих копий несколько, то для исключения их взаимовлияния хватит Far.exe.ini:

[General]
UseSystemProfiles=0
UserProfileDir=%FARHOME%\Profile
GlobalUserMenuDir=%FARHOME%
TemplateProfile=%FARHOME%\Default.farconfig
UserLocalProfileDir=%FARHOME%\Profile

, отсутствия симлинков/хардлинков для скриптов в %FARHOME%\Profile\Macros\scripts и записи MacroPath = %FARPROFILE%\Macros\scripts LuaMacro.ini (если он есть в каталоге плагина LuaMacro).

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

Хотя, хотя, гипотеза конечно фантастическая, но почему бы и не проверить - не происходит ли в момент удаления блокировки БД NetBox-а к примеру другой его копией которая случайно попала в каталог плагинов Far-а?

eugals commented 7 years ago

У меня та же проблема.

@AnrDaemon

Попробуйте экспортировать нужные сессии, прибить ветку плагина нафиг, и импортировать свои сессии обратно.

Подскажите пожалуйста что значит "прибить ветку плагина нафиг"? Как это делается в Far3? Спасибо.

VictorVG commented 7 years ago

Минимально - удалить БД настроек плагина - ./Profile/PluginsData/42E4AEB1-A230-44F4-B33C-F195BB654931.db , НО! при её удалении все настройки плагина и сессии будут удалены.

Вариант номер два, пусть более трудоёмкий, зато корректный:

1) выполняем операцию резервирования настроек:

far /export <путь_куда>\backup.farconfig

backup.farconfig запишется в XML 1.1 с кодировкой UTF-8 без BOM (надо помнить чтобы дров не наломать);

2) открываем backup.farconfig в любом XML либо проще текстовом редакторе (редактор Far отлично справится) и в разделе pluginsconfig ищем запись <plugin guid="42E4AEB1-A230-44F4-B33C-F195BB654931"> - это и есть настройки NetBox-а, там находим подключ Sessions и правим значение атрибута name тэга <key name="....имя сессии..."> :

<key name="Default%20Settings">
    <value name="FSProtocol" type="text" value="SFTP%20(SCP)"/>
    <value name="Version" type="text" value="2.3.0"/>
</key>

после чего сохраняем свои изменения;

3) затем удаляем БД настроек плагина - ./Profile/PluginsData/42E4AEB1-A230-44F4-B33C-F195BB654931.db

4) и выполняем последнее действие - восстановление данных из резервной копии и одновременную корректировку ошибочных записей в БД:

far /import <путь_куда>\backup.farconfig

при этом все некорректные записи будут удалены, ну а устаревшие сессии проще убрать при редактировании благо их формат записи одинаков.

Единственное замечание - операции импорта/экспорта настроек надо проводить если запущена только одна копия Far v3.0 (в Far 1.x/2.x команды /import и /export не существуют) работающая с данной копией набора настроек (в Far3 путём изменения настроек в Far.exe.ini можно указать место хранения профиля и таким образом использовать ряд независимых наборов настроек) что позволит избежать проблемы конфликта между несколькими разделяющих этот набор настроек копиями Far-а.

eugals commented 7 years ago

@VictorVG

Большое спасибо за развёрнутый ответ! Я просто скопировал все нужные мне сессии в отдельный каталог, удалил файл настроек, и вернул сессии обратно.

VictorVG commented 7 years ago

И это вариант. По итогу они равноправны.