Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature: Consider porting FISH(FIle transfer over SHell filesystem) from Midnight Commander #1819

Closed
vasya-r7 opened this issue Sep 1, 2023 · 322 comments

Comments

@vasya-r7
Copy link

vasya-r7 commented Sep 1, 2023

Midnight Commander has FISH.
And FISH is brilliant IMHO and superfast! It would be so nice to get FISH with far2l.

FISH supports jump hosts which NetRocks is lacking nowadays.
FISH can be used instead SFTP most of the times.
FISH is faster comparing to SFTP. Dirs listing is faster and download/upload speeds are much better.
For example with my 30 MBit Internet transferring files with FISH via Midnight Commander saturates Internet link. SFTP via far2l download speeds are several times less than FISH(2-6x). I have Little Snitch firewall app which displays link speed in menubar. I`ve never saw SFTP via far2l saturating internet link.

Take a look at screenshots for the same file(0017.MOV) transferred via SFTP(far2l) and FISH(mc). It took MC 1 minute 23 seconds compared to Far2l (SFTP) with 2 minutes 48 seconds to transfer the same file. I repeated the test several times. Result is consistent during repetitions.

As for my system I`m using MacOs on MacBook Air M1 with Ventura 13.4. Far2l(2.5.2-beta) and MC(4.8.30 from macports) are latest as of the time of writing.

Thank you for far2l, it`s great!

image image image image
@unxed
Copy link
Contributor

unxed commented Sep 1, 2023

https://en.wikipedia.org/wiki/Files_transferred_over_shell_protocol
?

SCP in NetRocks is very close afaik. If you could point us to the differences, it would be indeed helpful.

@vasya-r7
Copy link
Author

vasya-r7 commented Sep 2, 2023

SCP is fast you are right. Thanks for pointing that out.

FISH & SCP are rather similar to each other.
However FISH has 2 significant implementation differences.

  1. FISH stores commands used in separate scripts files instead hardcoding them in c/cpp code.
    You can see that commands here if you like.
    https://github.com/MidnightCommander/mc/tree/master/src/vfs/fish/helpers

  2. FISH uses OpenSSH client stdin/stdout without trying to implement SSH proto in any way or connect to SSH on it`s own.

P.S.: I badly miss JumpHosts support with NetRocks.

@unxed
Copy link
Contributor

unxed commented Sep 2, 2023

As for 2, I am now trying to write NetRocks alternative as wrapper around command line sftp tool just as multiarc wraps around zip or tar. Is it something similar to what FISH in mc does?

https://github.com/unxed/netpanel

PS: Just PoC as for now, but still I was able to make ununtu-ubuntu connection and download a file.

@elfmz
Copy link
Owner

elfmz commented Sep 2, 2023

2unxed consider adding protocol to NetRocks instead of full plugin implementation. See https://github.com/elfmz/far2l/blob/master/NetRocks/HACKING.txt

@vasya-r7
Copy link
Author

vasya-r7 commented Sep 2, 2023

https://github.com/unxed/netpanel

It seems to me that porting readily available and working code from Midnight would be simpler task than writing wrapper around sftp from scratch. FISH is rather primitive. And FISH commands stored in separated files can be just reused. Also FISH can be extended in almost any way you can imagine cause it just executes commands on remote server. With SFTP wrapper you are limited to standard SFTP client functionality and it`s limitations.

P.S.: Execute Midnight and try FISH. It works so good.

@unxed
Copy link
Contributor

unxed commented Sep 2, 2023

@elfmz извините, что на русском, но я немного устал и плохо соображаю. Думал в эту сторону, но есть проблемка: насколько я успел понять апи брокеров протоколов, там надо уметь возможность читать-писать по произвольному смещению. Консольная sftp не даёт такое. Теоретически такое можно было бы эмулировать, используя возможность докачки, и создавая пустой файл нужного размера, но это как-то совсем уж причудливо: писать такое, не обсудив сперва с коллегами, я не рискнул :) и ещё я сразу предупреждаю, что задолбаю вопросами про ipc и многопоточность, потому что в нетроксе уровень сей явно выше моего, и мне конечно, дико интересно разобраться во всем этом, но тупить на старте буду конкретно :)

Below is google translation
@elfmz sorry for the Russian, but I'm a little tired and I'm bad at thinking. I thought in this direction, but there is a problem: as far as I managed to understand the api of protocol brokers, there you need to be able to read and write at an arbitrary offset. Console sftp does not give this. Theoretically, this could be emulated using the resume option and creating an empty file of the required size, but it’s somehow quite bizarre: I didn’t risk writing this without discussing it with my colleagues first :) and I also immediately warn that I’ll fill up with questions about ipc and multithreading, because in netrocks C/C++ level is clearly higher than mine, and of course, it’s wildly interesting for me to understand all this, but I’ll be stupid at the start :)

@unxed
Copy link
Contributor

unxed commented Sep 2, 2023

Used fish already. Good thing. Definitely porting from mc to netrocks API could be best solution if possible.

@elfmz
Copy link
Owner

elfmz commented Sep 2, 2023

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

Небязательно. scp тоже не умеет по произвольному и делает так:

	if (resume_pos) {
		throw ProtocolUnsupportedError("SCP doesn't support download resume");
	}

  • соответственно просто докачка не будет работать для этого протокола

@unxed
Copy link
Contributor

unxed commented Sep 2, 2023

И вот тут интересное. Докачка то как раз у консольного sftp есть. Вот нельзя ли как-то развинуть границы апи чтоб ее можно было использовать в том виде в котором она есть там?

@unxed
Copy link
Contributor

unxed commented Sep 2, 2023

Does FISH support download/upload resume in mc? @vasya-r7

@vasya-r7
Copy link
Author

vasya-r7 commented Sep 2, 2023

Does FISH support download/upload resume in mc? @vasya-r7

FISH supports download/upload resume in mc.
P.S.: At least I`ve tested download resume.

@elfmz
Copy link
Owner

elfmz commented Sep 2, 2023

Докачка то как раз у консольного sftp есть. Вот нельзя ли как-то развинуть границы апи чтоб ее можно было использовать в том виде в котором она есть там?

Непонятно что раздвигать. Докачка у консолького sftp есть - так она и у нетроксовского sftp тоже есть. А у консолького scp докачки нету. А что есть у fish - это отдельный вопрос. В любом случае апи позволяет как протоколы с докачкой так и без.

@unxed
Copy link
Contributor

unxed commented Sep 2, 2023

Раздвигать в том смысле чтоб докачка поддерживалась не только при доступности чтения/записи по любому смещению, но и по доступности опции "вот лежит недокачанный файл, докачивай с места, соответствующего его объему, и пиши в него же", как это в sftp сделано. Иначе придется эмулировать первый вариант поверх второго и это какаято дичь

@elfmz
Copy link
Owner

elfmz commented Sep 3, 2023

Но.. ведь так и сделано же: https://github.com/elfmz/far2l/blob/master/NetRocks/src/Protocol/Protocol.h#L91
или я чегото не понимаю..

@unxed
Copy link
Contributor

unxed commented Sep 3, 2023

API VFS mc выглядит так. @elfmz как думаете, этого достаточно для NetRocks? Т.е. можно сделать просто прокладку из одного API в другой?

void
vfs_init_fish (void)
{
    tcp_init ();

    vfs_init_subclass (&fish_subclass, "fish", VFSF_REMOTE | VFSF_USETMP, "sh");
    vfs_fish_ops->fill_names = fish_fill_names;
    vfs_fish_ops->stat = fish_stat;
    vfs_fish_ops->lstat = fish_lstat;
    vfs_fish_ops->fstat = fish_fstat;
    vfs_fish_ops->chmod = fish_chmod;
    vfs_fish_ops->chown = fish_chown;
    vfs_fish_ops->utime = fish_utime;
    vfs_fish_ops->open = fish_open;
    vfs_fish_ops->symlink = fish_symlink;
    vfs_fish_ops->link = fish_link;
    vfs_fish_ops->unlink = fish_unlink;
    vfs_fish_ops->rename = fish_rename;
    vfs_fish_ops->mkdir = fish_mkdir;
    vfs_fish_ops->rmdir = fish_rmdir;
    vfs_fish_ops->ctl = fish_ctl;
    fish_subclass.archive_same = fish_archive_same;
    fish_subclass.new_archive = fish_new_archive;
    fish_subclass.open_archive = fish_open_archive;
    fish_subclass.free_archive = fish_free_archive;
    fish_subclass.fh_new = fish_fh_new;
    fish_subclass.fh_open = fish_fh_open;
    fish_subclass.dir_load = fish_dir_load;
    fish_subclass.file_store = fish_file_store;
    fish_subclass.linear_start = fish_linear_start;
    fish_subclass.linear_read = fish_linear_read;
    fish_subclass.linear_close = fish_linear_close;
    vfs_register_class (vfs_fish_ops);
}

Там, похоже, даже чтение по произвольному смещению есть:

static int
fish_linear_start (struct vfs_class *me, vfs_file_handler_t * fh, off_t offset)

@unxed
Copy link
Contributor

unxed commented Sep 3, 2023

И ещё. mc вроде бы под gpl 3. Плагин к нетроксу с использованием его кода точно легально делать?

@unxed
Copy link
Contributor

unxed commented Sep 3, 2023

Так, я тут поизучал, как FISH в mc сделан. Офигел от гениальности. Это такая же обёртка, как я вокруг sftp хотел сделать, только вокруг ssh или rsh. То есть ей даже sftp-клиент консольный не нужен, а уж ssh клиент точно есть везде.

Там в комплекте с реализацией FISH — пачка скриптов, их содержимое передаётся через стандартный ввод (stdin) процессу удалённой оболочки. И они на той стороне уже делают то что нужно — переименовывают скажем файл или отдают его байты с такого-то по такой-то. Ну и зависимостей никаких, кроме консольного ssh клиента, опять же.

Теперь мне кажется, что надо просто всю реализацию из mc в far2l в форме плагина к Нетроксу портировать, а не изобретать велосипед. Не могу правда пока решить, как лучше — только саму fish или в принципе прокладку для любой VFS mc делать. Там ещё реализация VFS у них за собой может пол mc всяких либ потянуть.

@unxed
Copy link
Contributor

unxed commented Sep 3, 2023

mc's VFS API needs GLib, and since the whole concept is to implement sftp-without-dependencies, this doesn't really suit me. So, apparently, it's easier to make own implementation of FISH based on my NetPanel in the form of a protocol plugin for NetRocks, using helper scripts from mc. Moreover, among its VFS, there is nothing else of particular interest to us, except undelete that can be also ported later.

@unxed
Copy link
Contributor

unxed commented Sep 5, 2023

For those who are interested in my attempts to implement FISH like in mc. Here are early experiments. Currently working is a class with partial FISH implementation, and it can only connect, log in (by password or crypto key) and get a list of files, and a demo tool for this class. See readme.txt (in Russian only currently, sorry).

Further, in principle, is already a matter of technology.

FISH.TAR.GZ

PS: It even can remember password, that mc can not.

Update from September 26, 2023: I, the author of the sources posted in this message, allow dual licensing of source code used in commit 9a5b427, both under mc-compatible licence and under the terms of GPL version 2.

@unxed
Copy link
Contributor

unxed commented Sep 6, 2023

The FISH NetRocks plugin has been brought to the state "can show a list of files from a remote server on far2l's panel" (however, nothing else can be done yet :)

Details are in readme.txt as as usual.

FISH.TAR.GZ

Update from September 26, 2023: I, the author of the sources posted in this message, allow dual licensing of source code used in commit 9a5b427, both under mc-compatible licence and under the terms of GPL version 2.

@unxed
Copy link
Contributor

unxed commented Sep 7, 2023

oh, it's so early :)

@unxed
Copy link
Contributor

unxed commented Sep 7, 2023

о, я вижу, вы там что-то делали с кодом. а почему там лучше std::string, а не std::filesystem::path?

@unxed
Copy link
Contributor

unxed commented Sep 7, 2023

не очень понял, @elfmz вы дальше сами? или это просто исправление ошибок за мной и я могу понемногу дальше пробовать имплементировать?

@elfmz
Copy link
Owner

elfmz commented Sep 9, 2023

думаю пока я это переделаю чутка и потом можно вместе имплементировать

@unxed
Copy link
Contributor

unxed commented Sep 9, 2023

Аххаха надеюсь я не перестану понимать, как всё устроено, к тому моменту :)
btw, там ещё как-то скриптам из helpers параметры передавать нужно, типа пути к папке для ls
Пока не успел разобраться, как это правильно делать, и как это делалось в mc.

@unxed
Copy link
Contributor

unxed commented Sep 10, 2023

Ещё там хорошо бы ошибки обрабатывать, вот эти цифры после ###

А ещё уже после придумывания, как передать пароль так, чтоб ssh его съел (обычная отправка на stdin через pipe не срабатывает), узнал, что не один я этот фокус изобрел:
https://sysadmin.pm/sshpass/
В её код полезно может быть глянуть тоже:
https://github.com/kevinburke/sshpass

@unxed
Copy link
Contributor

unxed commented Sep 10, 2023

Хм, у меня после последних двух коммитов соединяться перестало, так и должно быть?

@elfmz
Copy link
Owner

elfmz commented Sep 10, 2023

не должно, у меня наоборот ща заработали переходы по директориям

@unxed
Copy link
Contributor

unxed commented Sep 10, 2023

На хост, где авторизация по паролю, заходит норм! И по папкам там ходит и типы и размер файлов показывает правильно, кайф!

А вот на хост, где авторизация по файлу-ключу, до сих пор не заходит. Виснет на «Connecting to site».

PS: Оставлю тут ссылку на веточку, чтоб людям за изменениями проще следить было:
https://github.com/elfmz/far2l/tree/nr-fish

@unxed
Copy link
Contributor

unxed commented Sep 24, 2023

Фреймворком я обозвал совокупность MakePTYAndFork.cpp и ClientApp, да. Слово, конечно, громковатое 😁 пусть будет мини фреймворчек!

@unxed
Copy link
Contributor

unxed commented Sep 24, 2023

У рклона и фиша совсем разные юзкейсы просто. Фиш это про сходить на древний роутер, где ничего нет, или сходить куда угодно с древнего роутера, где ничего нет, или собрать far2l под какую-то экзотику, куда зависимости не поставишь, и всё же иметь работающий сетевой плагин из коробки. А рклон это в основном про сходить в облака, совсем другая история. Для того же Яндекса, скажем, у нас до сих пор нет клиента, потому что Вебдав у них «работает» в режиме «то потухнет, то погаснет».

Там же, кстати, не надо будет делать поддержку 100500 утилит, существующих в 100500 разных версиях и редакциях. Должно быть сильно проще в реализации, по идее.

@unxed
Copy link
Contributor

unxed commented Sep 25, 2023

Под 18.04 не собралось почему-то https://launchpadlibrarian.net/688892950/buildlog_ubuntu-bionic-amd64.far2l_0+git202309241934.af0eedb3~ubuntu18.04.1_BUILDING.txt.gz

In file included from /<<PKGBUILDDIR>>/NetRocks/src/Protocol/SHELL/ProtocolSHELL.h:11:0,
                 from /<<PKGBUILDDIR>>/NetRocks/src/Protocol/SHELL/ProtocolSHELL.cpp:9:
/<<PKGBUILDDIR>>/NetRocks/src/Protocol/SHELL/ClientApp.h:11:10: fatal error: filesystem: No such file or directory
 #include <filesystem>
          ^~~~~~~~~~~~
compilation terminated.

@unxed
Copy link
Contributor

unxed commented Sep 25, 2023

А, и да, может, компрессию для ssh включать, всё-таки?

@elfmz
Copy link
Owner

elfmz commented Sep 25, 2023

окошко настроек протокола надо сделать, и там такое включать

@unxed
Copy link
Contributor

unxed commented Sep 25, 2023

окошко настроек протокола надо сделать, и там такое включать

Только, может, сделать так, чтобы «включить» было по умолчанию? Раз уж у нас используются всякие паддинги, которые могут забить канал легко пакуемой, но не очень полезной инфой.

@unxed
Copy link
Contributor

unxed commented Sep 25, 2023

А, ещё бажок мелкий. Если на удаленной системе по FISH выполнить такой шелл скрипт:

#!/bin/bash
cd far2l/far2l
echo
git pull
echo
read -p "Press any key..."

То всё виснет.

@unxed
Copy link
Contributor

unxed commented Sep 25, 2023

А ещё far2l через shell прекрасно запускается, а вот mc, почему-то, нет:

<shell:unxed@runcity.org>$ mc
The TERM environment variable is unset!

@akruphi
Copy link
Contributor

akruphi commented Sep 25, 2023

Коллеги. А давайте справку NetRocks/configs/plug/helpe.hlf наполнять про свежедобавленный Shell.

Пока предлагаю по аналогии с @ProtocolOptionsSFTPSCP завести @ProtocolOptionsSHELL (хотя пока окошка нет, но хотя бы осн. фичи надо обрисовать) написать кратко про всё это. Сам я не очень в теме, чтобы кратко про всё это сформулировать, поэтому предлагаю начать писать @unxed как более сведущему в теме.

@unxed
Copy link
Contributor

unxed commented Sep 25, 2023

Ещё вот такое на i386:

/usr/bin/c++  -I"/<<PKGBUILDDIR>>/utils/include" -I"/<<PKGBUILDDIR>>/NetRocks/src" -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -fPIC -Wno-unused-function -D_FILE_OFFSET_BITS=64 -ffunction-sections -fdata-sections -Wl,--gc-sections -DWINPORT_REGISTRY -Wno-deprecated -DHAVE_SFTP -DHAVE_SMB -DHAVE_NFS -DHAVE_WEBDAV -DHAVE_OPENSSL -D_FAR_HAS_NAMELESS_UNIONS -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -fPIC -Wno-unused-function -D_FILE_OFFSET_BITS=64 -O2 -fvisibility=hidden -DNETROCKS_PROTOCOL -std=c++11 -MD -MT NetRocks/CMakeFiles/NetRocks-SHELL.dir/src/Protocol/SHELL/ProtocolSHELL.cpp.o -MF NetRocks/CMakeFiles/NetRocks-SHELL.dir/src/Protocol/SHELL/ProtocolSHELL.cpp.o.d -o NetRocks/CMakeFiles/NetRocks-SHELL.dir/src/Protocol/SHELL/ProtocolSHELL.cpp.o -c '/<<PKGBUILDDIR>>/NetRocks/src/Protocol/SHELL/ProtocolSHELL.cpp'
/<<PKGBUILDDIR>>/NetRocks/src/Protocol/SHELL/ProtocolSHELL.cpp: In constructor ‘ProtocolSHELL::ProtocolSHELL(const string&, unsigned int, const string&, const string&, const string&)’:
/<<PKGBUILDDIR>>/NetRocks/src/Protocol/SHELL/ProtocolSHELL.cpp:112:72: warning: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 3 has type ‘std::__cxx11::basic_string<char>::size_type {aka unsigned int}’ [-Wformat=]
    fprintf(stderr, "*** password from config: {%lu}\n", password.size());
                                                         ~~~~~~~~~~~~~~~^
/<<PKGBUILDDIR>>/NetRocks/src/Protocol/SHELL/ProtocolSHELL.cpp: In member function ‘virtual size_t SHELLFileReader::Read(void*, size_t)’:
/<<PKGBUILDDIR>>/NetRocks/src/Protocol/SHELL/ProtocolSHELL.cpp:569:50: error: no matching function for call to ‘min(size_t, long unsigned int&)’
    const size_t piece = std::min(len - rv, _chunk);
                                                  ^
In file included from /usr/include/c++/7/vector:60:0,
                 from /<<PKGBUILDDIR>>/NetRocks/src/Protocol/SHELL/ProtocolSHELL.cpp:5:
/usr/include/c++/7/bits/stl_algobase.h:195:5: note: candidate: template<class _Tp> const _Tp& std::min(const _Tp&, const _Tp&)
     min(const _Tp& __a, const _Tp& __b)
     ^~~
/usr/include/c++/7/bits/stl_algobase.h:195:5: note:   template argument deduction/substitution failed:
/<<PKGBUILDDIR>>/NetRocks/src/Protocol/SHELL/ProtocolSHELL.cpp:569:50: note:   deduced conflicting types for parameter ‘const _Tp’ (‘unsigned int’ and ‘long unsigned int’)
    const size_t piece = std::min(len - rv, _chunk);
                                                  ^
In file included from /usr/include/c++/7/vector:60:0,
                 from /<<PKGBUILDDIR>>/NetRocks/src/Protocol/SHELL/ProtocolSHELL.cpp:5:
/usr/include/c++/7/bits/stl_algobase.h:243:5: note: candidate: template<class _Tp, class _Compare> const _Tp& std::min(const _Tp&, const _Tp&, _Compare)
     min(const _Tp& __a, const _Tp& __b, _Compare __comp)
     ^~~
/usr/include/c++/7/bits/stl_algobase.h:243:5: note:   template argument deduction/substitution failed:
/<<PKGBUILDDIR>>/NetRocks/src/Protocol/SHELL/ProtocolSHELL.cpp:569:50: note:   deduced conflicting types for parameter ‘const _Tp’ (‘unsigned int’ and ‘long unsigned int’)
    const size_t piece = std::min(len - rv, _chunk);
                                                  ^
In file included from /usr/include/c++/7/algorithm:62:0,
                 from /<<PKGBUILDDIR>>/NetRocks/src/Protocol/SHELL/ClientApp.h:13,
                 from /<<PKGBUILDDIR>>/NetRocks/src/Protocol/SHELL/ProtocolSHELL.h:11,
                 from /<<PKGBUILDDIR>>/NetRocks/src/Protocol/SHELL/ProtocolSHELL.cpp:9:
/usr/include/c++/7/bits/stl_algo.h:3450:5: note: candidate: template<class _Tp> _Tp std::min(std::initializer_list<_Tp>)
     min(initializer_list<_Tp> __l)
     ^~~
/usr/include/c++/7/bits/stl_algo.h:3450:5: note:   template argument deduction/substitution failed:
/<<PKGBUILDDIR>>/NetRocks/src/Protocol/SHELL/ProtocolSHELL.cpp:569:50: note:   mismatched types ‘std::initializer_list<_Tp>’ and ‘unsigned int’
    const size_t piece = std::min(len - rv, _chunk);
                                                  ^
In file included from /usr/include/c++/7/algorithm:62:0,
                 from /<<PKGBUILDDIR>>/NetRocks/src/Protocol/SHELL/ClientApp.h:13,
                 from /<<PKGBUILDDIR>>/NetRocks/src/Protocol/SHELL/ProtocolSHELL.h:11,
                 from /<<PKGBUILDDIR>>/NetRocks/src/Protocol/SHELL/ProtocolSHELL.cpp:9:
/usr/include/c++/7/bits/stl_algo.h:3456:5: note: candidate: template<class _Tp, class _Compare> _Tp std::min(std::initializer_list<_Tp>, _Compare)
     min(initializer_list<_Tp> __l, _Compare __comp)
     ^~~
/usr/include/c++/7/bits/stl_algo.h:3456:5: note:   template argument deduction/substitution failed:
/<<PKGBUILDDIR>>/NetRocks/src/Protocol/SHELL/ProtocolSHELL.cpp:569:50: note:   mismatched types ‘std::initializer_list<_Tp>’ and ‘unsigned int’
    const size_t piece = std::min(len - rv, _chunk);
                                                  ^
[634/723] /usr/bin/c++  -I"/<<PKGBUILDDIR>>/utils/include" -I"/<<PKGBUILDDIR>>/NetRocks/src" -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -fPIC -Wno-unused-function -D_FILE_OFFSET_BITS=64 -ffunction-sections -fdata-sections -Wl,--gc-sections -DWINPORT_REGISTRY -Wno-deprecated -DHAVE_SFTP -DHAVE_SMB -DHAVE_NFS -DHAVE_WEBDAV -DHAVE_OPENSSL -D_FAR_HAS_NAMELESS_UNIONS -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -fPIC -Wno-unused-function -D_FILE_OFFSET_BITS=64 -O2 -fvisibility=hidden -DNETROCKS_PROTOCOL -std=c++11 -MD -MT NetRocks/CMakeFiles/NetRocks-SHELL.dir/src/Host/HostRemoteBroker.cpp.o -MF NetRocks/CMakeFiles/NetRocks-SHELL.dir/src/Host/HostRemoteBroker.cpp.o.d -o NetRocks/CMakeFiles/NetRocks-SHELL.dir/src/Host/HostRemoteBroker.cpp.o -c '/<<PKGBUILDDIR>>/NetRocks/src/Host/HostRemoteBroker.cpp'
[635/723] /usr/bin/c++  -I"/<<PKGBUILDDIR>>/utils/include" -I"/<<PKGBUILDDIR>>/NetRocks/src" -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -fPIC -Wno-unused-function -D_FILE_OFFSET_BITS=64 -ffunction-sections -fdata-sections -Wl,--gc-sections -DWINPORT_REGISTRY -Wno-deprecated -DHAVE_SFTP -DHAVE_SMB -DHAVE_NFS -DHAVE_WEBDAV -DHAVE_OPENSSL -D_FAR_HAS_NAMELESS_UNIONS -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -fPIC -Wno-unused-function -D_FILE_OFFSET_BITS=64 -O2 -fvisibility=hidden -DNETROCKS_PROTOCOL -std=c++11 -MD -MT NetRocks/CMakeFiles/NetRocks-SHELL.dir/src/Protocol/SHELL/ProtocolSHELL_ExecCmd.cpp.o -MF NetRocks/CMakeFiles/NetRocks-SHELL.dir/src/Protocol/SHELL/ProtocolSHELL_ExecCmd.cpp.o.d -o NetRocks/CMakeFiles/NetRocks-SHELL.dir/src/Protocol/SHELL/ProtocolSHELL_ExecCmd.cpp.o -c '/<<PKGBUILDDIR>>/NetRocks/src/Protocol/SHELL/ProtocolSHELL_ExecCmd.cpp'
[636/723] /usr/bin/c++  -I"/<<PKGBUILDDIR>>/utils/include" -I"/<<PKGBUILDDIR>>/NetRocks/src" -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -fPIC -Wno-unused-function -D_FILE_OFFSET_BITS=64 -ffunction-sections -fdata-sections -Wl,--gc-sections -DWINPORT_REGISTRY -Wno-deprecated -DHAVE_SFTP -DHAVE_SMB -DHAVE_NFS -DHAVE_WEBDAV -DHAVE_OPENSSL -D_FAR_HAS_NAMELESS_UNIONS -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -fPIC -Wno-unused-function -D_FILE_OFFSET_BITS=64 -O2 -fvisibility=hidden -DNETROCKS_PROTOCOL -std=c++11 -MD -MT NetRocks/CMakeFiles/NetRocks-SHELL.dir/src/Protocol/SHELL/ClientApp.cpp.o -MF NetRocks/CMakeFiles/NetRocks-SHELL.dir/src/Protocol/SHELL/ClientApp.cpp.o.d -o NetRocks/CMakeFiles/NetRocks-SHELL.dir/src/Protocol/SHELL/ClientApp.cpp.o -c '/<<PKGBUILDDIR>>/NetRocks/src/Protocol/SHELL/ClientApp.cpp'
ninja: build stopped: subcommand failed.

https://launchpadlibrarian.net/688980902/buildlog_ubuntu-bionic-i386.far2l_0+git202309250731.b6a1fba0~ubuntu18.04.1_BUILDING.txt.gz

@unxed
Copy link
Contributor

unxed commented Sep 25, 2023

Поддерживаю идею про хелп, но не имею ресурса самому заняться сейчас, увы. Готов проверить текст на фактические и стилистические ошибки!

@spvkgn
Copy link
Contributor

spvkgn commented Sep 26, 2023

Может просто опцию для cmake чтобы была возможность отключить это для некоторых платформ?

@unxed
Copy link
Contributor

unxed commented Sep 26, 2023

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

@unxed
Copy link
Contributor

unxed commented Sep 26, 2023

У нас тут лицензионная коллизия случилась: SHELL в far2l сделан на основе кусочков кода, которые я сюда выкладывал, а я там в архиве прописал, что лицензия совместимая с mc (т.е. GPL 3), так как использовался код helpers из него.

От моего кода там почти ничего не осталось сейчас, helpers тех точно нет, однако для 100% юридической чистоты пусть будет так:

Update from September 26, 2023: I, the author of some of the sources posted in this issue, allow dual licensing of source code used in commit 9a5b427, both under mc-compatible licence and under the terms of GPL version 2.

@unxed
Copy link
Contributor

unxed commented Sep 30, 2023

в ветке nr-fish перестал работать вход по ключу.

@elfmz
Copy link
Owner

elfmz commented Sep 30, 2023

у меня входит, на чем виснет?

@unxed
Copy link
Contributor

unxed commented Sep 30, 2023

Перепроверил как следует. Проблема была у меня на сервере.

Всё нормально соединяется.

@unxed
Copy link
Contributor

unxed commented Oct 4, 2023

Кстати вот ещё какая штука, вокруг которой обёртку бы, подобную обертке над ssh — testdisk. Когда там undelete делаешь ну и вообще ходишь по поврежденным файловым системам. UI отвратительный. Вот бы иметь возможность это всё на панели far2l делать, просто оттуда копировать файлы.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants