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

Эмулятор терминала для sftp/scp #292

Open unxed opened 5 years ago

unxed commented 5 years ago

Сейчас для исполнения команд на стороне сервера используются вызовы putty, если я правильно понимаю.

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

https://github.com/elfmz/far2l/issues/583#issuecomment-528269686

VictorVG commented 5 years ago

NetBox поддерживает только протоколы SFTP, FTP, SCP, FTPS и WebDAV, также он позволяет реализовать режим FXP передачи между двумя FTP серверами открытыми на разных панелях Far-а.

А то, что вы предлагаете в ОС Linux реализовано средствами утилиты GNU Rush (Restricted User Shell) (в составе ОС семейств UNIX, IBM OS/2, MS Windows, IBM S/360, IBM S/370, IBM S/390 утилиты rush нет), но никто не мешает пользователю подключить PuTTY через настройки NetBox и использовать её.

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

"Идеальный вариант" в части использования расширений от Far2L вряд ли реализем из-за различий в архитектуре ОС, а встраивать собственный эмулятор терминала для работающего в консоли ОС приложения? По моему командной строки и F12 0 достаточно чтобы командовать парадом с консоли.

elfmz commented 5 years ago

Помимо SFTP/SCP NetBox умеет и запускать команды удаленно. Зайдите в NetBox/SFTP на Linux систему и наберите в ком строке фара ls - увидите вывод. А вот если вы наберете там "TERM=xterm mc" (и если он установлен на "той" стороне), то увидите примерно такое вот: image

"Идеальный вариант" в части использования расширений от Far2L

Он как раз таки реализуем очень просто, так как расширения far2l - это тупо поля, эквивалентные win32 структурам ввода: https://github.com/elfmz/far2l/blob/master/far2l/VTFar2lExtensios.cpp#L112 Но на самом деле самое сложное тут - добавит в NetBox "обычный" эмулятор терминала, а расширения (если конечно вы будете готовы их принять) я и сам к нему добавить смогу, скорее всего особо не напрягаясь.

elfmz commented 5 years ago

И да, если не побрезгуете, то почти готовый эмулятор терминала под виндовую консоль, он вот: https://github.com/elfmz/far2l/blob/master/far2l/vtansi.cpp Насколько я понимаю, NetBox является GPL проектом, так что лицензионно тут все чисто. Но с этим кодом есть два ньюанса: 1) Он ужасен., потому как базируется на каком то перловом модуле эмулятора терминала для винды. 2) Я не удержался и в своей реализации виндовых консольных апи сделал некоторые расширения для упрощения реализации терминала. Самое сложное для адаптации: SetConsoleScrollRegion/GetConsoleScrollRegion

Оригинальный код этого терминала вот: https://github.com/adoxa/ansicon/blob/master/ANSI.c Его можно брать как есть. Кстати с тех пор как я его утянул к себе его доделывали. Возможно те проблемы которые я фиксил используя свою "адаптированную" консоль в нем уже решены.

VictorVG commented 5 years ago

Вторая версия основана WinSCP с последствиями типа инца №255 - NetBox v2.4.5.526/.527 - игнорирование RFC-1738 при разборе анонимных URL начиная с WinSCP v5.10.3 beta, это раз, у разработчика сейчас нет времени заниматься плагином - это видно по списку открытых инцов - два. Я лично считаю, что надо сначала устранить уже отловленные ошибки, а после думать что добавлять. Та же "ошибка" WinSCP инц 255 приводит к очень "простым" последствиям - отказ серверов в авторизации при установленной опции плагина "Разрешить пустой пароль" для FTP - либа WinSCP передаёт серверу случайный логин, результат - отказ, пример №2 - ftp.videolan. org. Откройте с ним соединение в NetBox последних версий, перейдите в каталог /pub/videolan/vlc (каталоги dvblast, keys, libdvbpsi, libdvdcss, multicat, pub, testing, ubuntu, vlc, vlma, vls и x264 это симлинки (я специально в раскраске FarUE3 сделал их индикацию красным / для каталогов и ! для файлов) плагин их не сможет обработать) и подождите немного, А после сравните картину с поведением FileZilla 3.xx . Я этот баг уже и не хочу репортить - и без того ещё не устранённых ошибок достаточно, зачем плодить сущности?:)