Старый друг - лучше новых двух (тут трется воскресший freenx-server)

Модераторы: dimbor, Модераторы разделов

dimbor
Ведущий рубрики
Сообщения: 1569
Статус: Подвинутый участник

Re: Старый друг - лучше новых двух

Сообщение dimbor »

С чего ты решил, что он не создавался? node_terminate_session не потому ругается, а из-за параллельного запуска из нескольких ниток. Та, что успела первой, каталог пришибает. А для опоздавших сейчас это просто один из сигналов о ненужности дальнейших подвигов. Даже и не знаю навскидку, в чем дело.

Механизма там такая: startsession() готовит основную часть условий для запуска, а потом практически одновременно запускает node_start_agent() и node_start_applications(). Вторая ждет первую. Вывод запускающегося агента направляется через tee в лог и на вход node_start_monitor(). Мыслю так, если избавиться от tee, все станет еще шустрее и надежнее. Но это нужно исследования замучивать ради миллисекунд в итоге.
Добавлено (21:13):
Вот сейчас натолкнул меня на мысль, как в node_terminate_session понадежней сделать ..
Спасибо сказали:
Djelf
Сообщения: 615
ОС: Гигтег+Цшт32

Re: Старый друг - лучше новых двух

Сообщение Djelf »

Ааааа.... Ubuntu 16.04 не настолько стара, еще год ей жить и жить ;)

Код: Выделить всё

root@server2:/var/log# bash --version
GNU bash, версия 4.3.48(1)-release (x86_64-pc-linux-gnu)

root@server2:/var/log# cat ./nxserver.log|grep подстановка                                                                                                                 
/usr/bin/nxnode: строка 91: $0 ($$): run nxnode with PARAMS:"$@"; ${CMDLINE@A}: неправильная подстановка                                                                   
/usr/bin/nxnode: строка 953: $FUNCNAME ($$): Wait for ${NODE_AGENT_PID@A}: неправильная подстановка                                                                        
/usr/bin/nxnode: строка 1374: $FUNCNAME ($$): starting with ${sess_id@A}: неправильная подстановка         
Спасибо сказали:
dimbor
Ведущий рубрики
Сообщения: 1569
Статус: Подвинутый участник

Re: Старый друг - лучше новых двух

Сообщение dimbor »

Уберу. Оно только в логах. И у меня тоже с глюками бывает. От лени было вставлено. Еще к пуговицам претензии есть?
Спасибо сказали:
Djelf
Сообщения: 615
ОС: Гигтег+Цшт32

Re: Старый друг - лучше новых двух

Сообщение Djelf »

В логах то я убрал, это не проблема, но похоже после запуска nxaget ни одна программа не запускается, черный экран.
В /home/usr/.nx/C-.../pids отсутствует каталог apps, а в нем должен быть pid
А bash на сервере обновлять как то стремно :wacko:
Спасибо сказали:
dimbor
Ведущий рубрики
Сообщения: 1569
Статус: Подвинутый участник

Re: Старый друг - лучше новых двух

Сообщение dimbor »

Логи в студию.
Спасибо сказали:
Djelf
Сообщения: 615
ОС: Гигтег+Цшт32

Re: Старый друг - лучше новых двух

Сообщение Djelf »

Так нету в логах ошибок, совершенно нормальный лог, но в /home/user нет .xsession-errors, я уже все перепробывал и на место гнома прописал startxfce4 и терминал пытался и дефолтную сесиию - ничего.

upd: а нет... во какой куцый node.log
upd2: и это очень, очень быстрый сервер (но и очень дешевый), на 8ке по тесту Гилева 130 попугаев, почти на первом месте ;)

Код: Выделить всё

17:17:11.250: startsession (16524): starting with args ""
17:17:11.268: startsession (16524): generate "/home/addm/.nx/C-server2-2000-DA23211210D5777A1A649A854A5978D2/options"
17:17:11.269: startsession (16524): write xauth script file
17:17:11.273: startsession (16524): call 'node_start_agent'
17:17:11.274: startsession (16524): call 'node_start_applications'
17:17:11.274: node_start_agent (16524): starting
17:17:11.275: node_start_applications (16524): starting
17:17:11.276: node_start_monitor (16524): starting
17:17:11.276: node_start_agent (16524): source profile
17:17:11.277: node_start_agent (16524): source bash profile
17:17:11.277: node_start_applications (16524): source profile
17:17:11.278: node_start_agent (16524): NXAgent session type
17:17:11.279: node_start_applications (16524): source bash profile
17:17:11.280: node_start_agent (16524): Start nxagent by command: '/usr/bin/nxagent -persistent -D -name "NX - addm@server2:2000 - server2 (GPL Edition)" -option "/home/addm/.nx/C-server2-2000-DA23211210D5777A1A649A854A5978D2/options"   -nolisten tcp -dpi 96 -verbose :2000'
17:19:41.260: node_start_monitor (16524): call node_stop_services at ending
17:19:41.261: node_stop_services (16524): starting
17:19:41.262: node_stop_services (16524): call node_umount_smb
17:19:41.263: startsession (16524): end 
Спасибо сказали:
dimbor
Ведущий рубрики
Сообщения: 1569
Статус: Подвинутый участник

Re: Старый друг - лучше новых двух

Сообщение dimbor »

Агент падает сразу. Курить session и ssh -X; nxnode --agent. Но и вероятность, что доускорялись, тоже имеется.
Спасибо сказали:
Djelf
Сообщения: 615
ОС: Гигтег+Цшт32

Re: Старый друг - лучше новых двух

Сообщение Djelf »

А вот и неправда, никуда он не падает.
Но что интересно, из под linux сессия запускается...

Код: Выделить всё

ps -ef|grep nxagent
addm     28385 28367  0 19:04 ?        00:00:00 /usr/bin/nxagent -persistent -D -name NX - addm@server2:2000 - server2 (GPL Edition) -option /home/addm/.nx/C-server2-2000-F3E01536C235A672B04E2955453AC823/options -nolisten tcp -dpi 96 -verbose :2000
Спасибо сказали:
dimbor
Ведущий рубрики
Сообщения: 1569
Статус: Подвинутый участник

Re: Старый друг - лучше новых двух

Сообщение dimbor »

Тогда непонятно, почему node_start_monitor() ему на выхлоп не цепляется, а сразу завершается. Из могущего сыграть не так я там $(cat ...) поменял на $(< ...). Если у тебя баш такой нежный...
Добавлено (19:21):
А может лог не тот прислан?
Добавлено (19:26):
А... он через две минуты завершается. Тогда нифига не понимаю.
Спасибо сказали:
Djelf
Сообщения: 615
ОС: Гигтег+Цшт32

Re: Старый друг - лучше новых двух

Сообщение Djelf »

Да, согласен, фигня полная. Поставь в виртуалке 16.04 и посмотри.
Я в диалект bash, переключатся сейчас не готов, тем более что знаю я его весьма примитивно.
Спасибо сказали:
dimbor
Ведущий рубрики
Сообщения: 1569
Статус: Подвинутый участник

Re: Старый друг - лучше новых двух

Сообщение dimbor »

Потреплю бубнту, ага. Только для быстроты еще объясни, как в 16.04 nx-libs наливать правильно.
Спасибо сказали:
Djelf
Сообщения: 615
ОС: Гигтег+Цшт32

Re: Старый друг - лучше новых двух

Сообщение Djelf »

Не так важно, как правильно, а быстро так:
nx-libs можно из x2go утянуть https://launchpad.net/~x2go/+archive/ubuntu/stable
а твой собрать в deb и поставить, без deb - головная боль.

P.S. а можно еще и с уровнем совместности поиграть, обсуждение: https://bugs.gentoo.org/431340#c20 иначе такая ситуация будут неизбежно повторяться.

upd:
node_start_applications() {
- nxlog "$FUNCNAME ($$): ${display@A}, waiting for it's ready"

и заработало...
убери, нахрен, эти новомодные штучки :crazy:
Спасибо сказали:
dimbor
Ведущий рубрики
Сообщения: 1569
Статус: Подвинутый участник

Re: Старый друг - лучше новых двух

Сообщение dimbor »

Да убрал, уже усе в пакете. Пакет кстати есть и обновляется, если ты не заметил.

А сам втравил меня в свою убунту. Сначала я ее трахался - ставил. Под зеном netboot не работает, пришлось из образа, потом обновлять. Еще системда эта дурная. Накатил freenx. Там пакету binutls strings нужон, который все равно потом выкидывать. Засел на стадии nxsetup --test. У тебя он на стадии подключения что-нить кроме версии сервера выдает? Не тормозит? У меня версия, взвис и завершение молча. Что-то я такое там вылавливал раньше, но совсем забыл. Даже этерсофтовцы на этом какую-то багу закрыли. Быстрее будет снова ловить, чем искать. Что-то с expect вроде... Или туплю опять.
Добавлено (14:32):
Все запускается без малейших вопросов на этой твоей убунте. Я даже xfce туда впер.
Но с nxsetup вина не снята.
Спасибо сказали:
Djelf
Сообщения: 615
ОС: Гигтег+Цшт32

Re: Старый друг - лучше новых двух

Сообщение Djelf »

А не забыл PubkeyAcceptedKeyTypes=+ssh-dss добавить?
Хотя должно ругнуться на подключение, а не висеть.
Я бы вообще это засунул в nxsetup и перезапуск sshd тоже до кучи...
Этерсовтоцы в рх новые ключи нагенерили, или старый сконвертировали, не разбирался.

Обновил, работает.
А юбунту я имею ввиду всегда хубунту, гном тяжеловат для NX, хотя можно и лубунту попробовать, вроде она еще легче.
Спасибо сказали:
dimbor
Ведущий рубрики
Сообщения: 1569
Статус: Подвинутый участник

Re: Старый друг - лучше новых двух

Сообщение dimbor »

Да говорю ж, все работает. Это только nxsetup test-nx до конца не отрабатывает. Вот и спрашиваю, у тебя он Bye говорит при тестовом?
Спасибо сказали:
Djelf
Сообщения: 615
ОС: Гигтег+Цшт32

Re: Старый друг - лучше новых двух

Сообщение Djelf »

Все нормально, без ошибок. Возможно еще какие то пакеты в зависимостях забыты.
Spoiler
You need to be root to use this program.
addm@server2:~$ sudo nxsetup
[sudo] пароль для addm:
------> You did select no action.
FreeNX guesses that you want to _install_ the server.
Type "y" to abort the installation at this point in time.
"N" is the default and continues installation.
Use "/usr/bin/nxsetup --help" to get more detailed help hints.

Do you want to abort now? [y/N]

------> It is recommended that you use the NoMachine key for
easier setup. If you answer "y", FreeNX creates a custom
KeyPair and expects you to setup your clients manually.
"N" is default and uses the NoMachine key for installation.

Do you want to use your own custom KeyPair? [y/N]
Setting up /etc/nxserver ...done
For backward compatibility to Nomachine, freenx works with dss-keys only.
Please add string "PubkeyAcceptedKeyTypes=+ssh-dss" in sshd_config
if required. This is actual for modern openssh servers.
Setting up user and group nx ...done
Setting up /var/lib/nxserver/db ...done
Setting up /var/log/nxserver.log ...done
Setting up known_hosts and authorized_keys2 ...done
Setting up permissions ...done

----> Testing your nxserver configuration ...
Warning: Could not find nxviewer in /usr/bin. VNC sessions won't work. Ignore if you use NX > 3.2
Warning: Invalid value "KDE_PRINTRC=/home/addm/.kde/share/config/kdeprintrc". ENABLE_KDE_CUPS will not work.
For root it's normal. Try to run 'nxloadconfig --check' by user.
Warning: Invalid value "COMMAND_FOOMATIC=/usr/bin/foomatic-ppdfile"
Users will not be able to use foomatic.
Warning: Invalid value "COMMAND_START_KDE=startkde"
Users will not be able to request a KDE session.
Warning: Invalid value "COMMAND_START_GNOME=gnome-session"
Users will not be able to request a Gnome session.
Warning: Invalid value "COMMAND_START_CDE=cdwm"
Users will not be able to request a CDE session.

Warnings occured during config check.
To enable these features please correct the configuration file.

<---- done

----> Testing your nxserver connection ...
HELLO NXSERVER - Version 3.5.0-0.2-CE OS (GPL, using backend: 3.5.99.23)
NX> 105 quit
Quit
NX> 999 Bye
<--- done

Ok, nxserver is ready.

PAM authentication enabled:
All users will be able to login with their normal passwords.

PAM authentication will be done through SU.
Please ensure that the user nx is a member of the wheel group.

You can change this behaviour in the /etc/nxserver/node.conf file.
Have Fun!
addm@server2:~$
Спасибо сказали:
dimbor
Ведущий рубрики
Сообщения: 1569
Статус: Подвинутый участник

Re: Старый друг - лучше новых двух

Сообщение dimbor »

Да это мистика! После первого же подключения снаружи и nxsetup исправился сам.
Спасибо сказали:
Djelf
Сообщения: 615
ОС: Гигтег+Цшт32

Re: Старый друг - лучше новых двух

Сообщение Djelf »

Финальная версия библиотек: https://cloud.mail.ru/public/4UjQ/4nogqnU1Q
Пересобрал так чтобы исключить вообще все либы кроме cygwin1.dll, cygXcomp.dll и cygXcompsh.dll (остальные зашиты внутри, что повышает живучесть exe`шников при подмене cygwin1.dll).
Ну и nxesd.exe можно выкинуть, даже не пытался собрать.
Спасибо сказали:
dimbor
Ведущий рубрики
Сообщения: 1569
Статус: Подвинутый участник

Re: Старый друг - лучше новых двух

Сообщение dimbor »

Как ты смотришь, если я уберу к хреням код для SLAVE_MODE? Причины: 1) Добавляет лишнюю, нехилую такую, сущность. 2) Никогда не получалось нормально его настроить, чтобы все под ним работало. 3) Мы и так ускорились по самое не могу. Да и баш (даже отсталый 4.3), подозреваю, сильно изменился. Теперь вряд ли можно что-то выгадать, пихая жидкие байты команд в специальную трубу вместо стандартного ввода. 4) Весь гипотетический выигрыш с него я убил очень давно, когда подключения ресурсов загнал в запуск отдельных nxnode. А юзверь просто заметить не сможет за те пол-секунды, пока дотягивается мышой до окна, что у него еще не все поцепилось. 5) Не нравится он мне ;)
Спасибо сказали:
Djelf
Сообщения: 615
ОС: Гигтег+Цшт32

Re: Старый друг - лучше новых двух

Сообщение Djelf »

Вырезай все эти костыли к чертовой матери, в том числе и проброс на официальный NX сервер 3.5, который никто, никогда уже не будет использовать, и вообще хз как и откуда его вообще загрузить...
Никому это уже не потребуется, ИМХО.
Но, я бы еще подрезал smb и cups, как то... Мне оно не надо, зачем оно пытается что-то вообще делать?
Было бы что-то типа CUPS_DISABLED в логе и ура!
Последний раз редактировалось Djelf 13.02.2020 20:14, всего редактировалось 1 раз.
Спасибо сказали:
dimbor
Ведущий рубрики
Сообщения: 1569
Статус: Подвинутый участник

Re: Старый друг - лучше новых двух

Сообщение dimbor »

Djelf писал:
13.02.2020 20:03
Но, я бы еще подрезал smb и cups как то... Мне оно не надо, зачем оно пытается что-то вообще делать?
Было бы что-то типа CUPS_DISABLED в логе и ура!
Будет вам и белка, будет и свисток. Ошибки молодости, так сказать. Я тогда сувал nxlog везде, где была какая-то непонятка. А убирать забывал. Уйдет после скулайчивания nxnode.
Добавлено (20:16):
А я шары с принтерами активно использую, вот.
Спасибо сказали:
Djelf
Сообщения: 615
ОС: Гигтег+Цшт32

Re: Старый друг - лучше новых двух

Сообщение Djelf »

Я тогда сувал nxlog везде, где была какая-то непонятка.
Это нормально, но сообщения при отключенной функции, не должны вообще попадать в ту область, где выводится эти сообщения.
Вроде так же должно работать? Не работает модуль = нет сообщений от него и модуль "отваливается" сразу же, при попытке запуска.
Эх... "авгиевы конюшни" этот FreeNX :)

P.S. режь ВСЕ лишнее/устаревшее, и проброс в офф.сервер тоже можно убить.
Спасибо сказали:
Djelf
Сообщения: 615
ОС: Гигтег+Цшт32

Re: Старый друг - лучше новых двух

Сообщение Djelf »

И еще в сторону ускорения...

Видимо тут уже придется теорию мультикжща думать ;)

И вот вопрос на засыпку: А зачем создается новый кэш-файл при каждом новом подключении?
Синхронизация gui-объектов происходит по MD5 (P.S. это можно делать значительно быстрее с помощью Knuth multiplicative hashing).
Ну и ладно, по MD5, так по MD5, но почему не подцепить старый кэш?
Он сам потом, при работе по MD5 выяснит некорректные/устаревшие данные и их прибьет...

Я уверен - возможна реализация и глобального кэша...
Спасибо сказали:
dimbor
Ведущий рубрики
Сообщения: 1569
Статус: Подвинутый участник

Re: Старый друг - лучше новых двух

Сообщение dimbor »

Djelf писал:
15.02.2020 19:22
Видимо тут уже придется теорию мультикжща думать ;)
Штоа? Долго думал, но ничего кроме Большого Горохового Взрыва под этот термин не подходит.

А кэш это не я, честно. Это агент.
Спасибо сказали:
Djelf
Сообщения: 615
ОС: Гигтег+Цшт32

Re: Старый друг - лучше новых двух

Сообщение Djelf »

dimbor писал:
15.02.2020 20:30
Djelf писал:
15.02.2020 19:22
Видимо тут уже придется теорию мультикжща думать ;)
Штоа? Долго думал, но ничего кроме Большого Горохового Взрыва под этот термин не подходит.

А кэш это не я, честно. Это агент.
Ой`ц, ну получился новый термин определения мульти-кэша, это было случайно, это так само по себе получилось...
Это "лапки", это не я :unsure:
Пальцы, иногда работают быстрее чем голова ;(

UPD: чтобы читался старый кэш сессии, а не создавался новый, нужно запускать не как "unix-applications", а как "proxy" или "agent" (надо курить nxcomp Loop.cpp до посинения, там еще есть возможность создания общего кэша в ./images).
В этом случае в логе вместо Info: No suitable cache file found.
Будет Info: Using cache file 'C:\Users\User\.nx/cache-proxy/S-0AA4ECB45F12F0810DE3ADCBDC3601F2'.
На сервере аналогично.

Так что да, nxagent, он сам по себе, при некоторых опциях, но мы можем ему приказать!

З.Ы. А NX-Опции запуска у него те же, что и в nxproxy --help
Спасибо сказали:
dimbor
Ведущий рубрики
Сообщения: 1569
Статус: Подвинутый участник

Re: Старый друг - лучше новых двух

Сообщение dimbor »

Это все интересно и полезно будет в дальнейшем. А я сейчас занят более глобальным делом. Сгребаю в кучу всю ту хренову тучу сущностей, что наплодили во фриэныксе. Оно мало того, что разными путями передается, да еще одно и то же четырьмя способами обзывается. Для начала условился: все о чем nxserver и nxnode между собой обмениваются, не имеющее префикса 'NX>', к протоколу отношения не имеет. Вот там-то ребята и оторвались на полную катушку. Попытался упорядочить и в очередной раз переименовал поля в сессионной бд, имей в виду.

Понял сакральный смысл предварительного запуска nxnode --check. При обломе сего запуска, клиенту сообщается о неверном логине/пароле юзера. И все. То-то раньше при любом косяке в nxnode это выскакивало. Уже, в принципе, прокачал башевские скилы и морально готов выкинуть expect к хреням. Только вот в nxnode безобразия разгребу.

Пока там с restore чудеса: Запускается второй монитор, и оба гонят в клиенту задвоеное. Хорошо клиенты эту гадость глотают. Но так быть не должно. В непонятках.

Опять же, там при restore все параметры запуска агента передаются заново, options перезаписываются, а потом агенту наступает HUP. Тоже пока не въехал, что там может изменяться, а что не может. Еще с учетом, что за эти годы агент изменение своей геометрии на лету здорово прокачал.
Спасибо сказали:
Djelf
Сообщения: 615
ОС: Гигтег+Цшт32

Re: Старый друг - лучше новых двух

Сообщение Djelf »

Ну так пока чуток времени есть, ковыряю с другой стороны потихоньку, тут " странные" находки и фиксирую.

А вот геометрия это да! Я сейчас с VcXsrv запускаю, ресйзится шикарно, обновляется экран потом два раза, но это не страшно.
Не проверял как у него с рутлесом, но в режиме десктоп работает очень достойно.
В твоей ситуации, можно в OpenNX сделать перенаправление на nxwin.exe в случае рутлеса.

Пока дела продвигаются не плохо:

Код: Выделить всё

17:49:01.278692 go2nx: elapsed time 1.2134499s
17:49:01.276740 nxssh: (StdOut) Send: NX> 299 Switch connection to: NX mode: encrypted options: 
Ошибка: NXClient дохлую сессию отказывается прибивать, хотя nxserver --terminate id работает.
Но пока базу сессий не прибил, и nxserver --terminate id не работало (все искать проще, где багнуло).

Вот еще что нужно сделать: при запуске сессии с --application=\"dummy\" сессия отваливается без ошибки.
Предполагаю, должна генерироваться ошибка
NX> 500 Error: Fatal - Missing application 'dummy'

Ошибся, я ошибся, и всего на одну букафку, а времени потратил много, чтобы понять где накосячил, и я ли виноват :cray:

P.S. Соратники x2go собрали под Win32 13й пульз.
Это пульзу не поможет (на медленных соединениях), но есть пример канала через опус https://github.com/VittGam/mtrx, но через udp...
Сделать можно..., возможно даже включение в nx-libs. Но! Никто не делает, спонсоры видать истощились )
Спасибо сказали:
dimbor
Ведущий рубрики
Сообщения: 1569
Статус: Подвинутый участник

Re: Старый друг - лучше новых двух

Сообщение dimbor »

Djelf писал:
15.02.2020 20:40
UPD: чтобы читался старый кэш сессии, а не создавался новый, нужно запускать не как "unix-applications", а как "proxy" или "agent" (надо курить nxcomp Loop.cpp до посинения, там еще есть возможность создания общего кэша в ./images).
В этом случае в логе вместо Info: No suitable cache file found.
Будет Info: Using cache file 'C:\Users\User\.nx/cache-proxy/S-0AA4ECB45F12F0810DE3ADCBDC3601F2'.
На сервере аналогично.
А я наврал, гы. Фриэныкс виновен, казнить. Только сейчас до опций добрался. Там - чудеса, впрочем как обычно. При startsession от клиента прилетает type. freenx обрабатывает его следующим кодом:

Код: Выделить всё

# Rootless fix from 2x nxserver 1.5.0
realtype=$type
[ "$type" = "unix-application" -o "$type" = "unix-default" ] && \
   realtype="unix-desktop"
[ "$type" = "unix-gnome" ] && realtype="gnome"
[ "$type" = "unix-kde" ] && realtype="kde"
Это происходит вообще всегда, не только для рутлеса. Получившийся realtype засовывается агенту в options как type= А клиенту обратно отправляется 'NX> 704 Session cache: $type'. Это возвращается тот type, который пришел. Везде ложь, короче.

Расскажи плиз, что б мне тудой написать в свете моих откровений и твоих новых знаний.
Добавлено (21:37):
Для начала попробую эту хрень вообще извести.
Спасибо сказали:
dimbor
Ведущий рубрики
Сообщения: 1569
Статус: Подвинутый участник

Re: Старый друг - лучше новых двух

Сообщение dimbor »

ЗЫ: Может знаешь, что за параметр "strict" от клиента передается, но сейчас нигде не юзается?
Спасибо сказали:
dimbor
Ведущий рубрики
Сообщения: 1569
Статус: Подвинутый участник

Re: Старый друг - лучше новых двух

Сообщение dimbor »

Опции поправил, попробуй.
Спасибо сказали: