Htmlclient will only work with x2gokdrive, not with nxagent.

Uli

Shea Tomsin <STomsin@econolite.com> schrieb am Do., 28. Okt. 2021, 11:08:
Hi

tl;dr: x2gohtmlclient sends websocket input that nxagent rejects, then aborts on Debian 11 and Ubuntu 20.04.03; e.g.

websockify records
"
var VNC_frame_data = [
'}3}6ba1f53e7eb3536232eeff332bd49336',
'}3}\x07\x00\x00\x00\x00\x05\x98\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
"

nxagent reports
Loop: WARNING! Non printable character decimal '7' received in remote data from FD#8.
Loop: WARNING! Non printable character decimal '0' received in remote data from FD#8.
Loop: WARNING! Non printable character decimal '0' received in remote data from FD#8.
Loop: WARNING! Non printable character decimal '0' received in remote data from FD#8.
Loop: WARNING! Non printable character decimal '0' received in remote data from FD#8.
Loop: WARNING! Non printable character decimal '5' received in remote data from FD#8.

then nxagent aborts
Error: Failure negotiating the session in stage '7'.
Error: Aborting session with 'Unable to open display 'nx/nx,options=/tmp/.x2go-user/C-user-50-1634698056_stDGNOME_dp24/options:50''.
Session: Aborting session at 'Tue Oct 19 22:48:16 2021'.

I saw https://lists.x2go.org/pipermail/x2go-dev/2021-June/013764.html so I tried both Debian 11 and Ubuntu 20.04.03 but same failure on both.

I'm new to x2go and the x2goclient works great so maybe this is an x2gohtmlclient et. al. issue?  Perhaps this is a known issue or a misconfiguration on my part with a quick and easy answer.

Many thanks in advance,

Shea


I was trying to follow: https://wiki.x2go.org/doku.php/wiki:advanced:x2gohtmlclient on a Ubuntu 20.04.03 LTS (then later a Debian 11) minimal desktop and I have distilled the wiki instructions to:

# ===============
# Ubuntu: Install Software
# ===============
sudo apt install -y \
fcgiwrap \
g++ \
git \
libcgi-pm-perl \
libencode-perl \
libexpect-perl \
libfile-touch-perl \
libjson-perl \
make \
minify \
nginx-full \
qt5-default \
qt5-qmake \
websockify \
x2goserver \
;

# ===============
# Debian: Install Software
# ===============
sudo apt install -y \
fcgiwrap \
g++ \
git \
libcgi-pm-perl \
libencode-perl \
libexpect-perl \
libfile-touch-perl \
libjson-perl \
make \
minify \
nginx-full \
qt5-qmake \
qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools \
ssl-cert \
websockify \
x2goserver \
;

# ===============
# Build and install x2gohtmlclient, x2gowswrapper, x2gowebrpc
# ===============
mkdir ${HOME}/x2go;
mkdir ${HOME}/x2go/deploy;

#
# Build: x2gowswrapper
#

cd ${HOME}/x2go;
[ -d 'x2gowswrapper' ] || git clone git://code.x2go.org/x2gowswrapper.git;
cd x2gowswrapper;

cat << "END" | patch -p 1
diff --git a/x2gowswrapper.cpp b/x2gowswrapper.cpp
index 91922e7..07fa50e 100644
--- a/x2gowswrapper.cpp
+++ b/x2gowswrapper.cpp
@@ -95,6 +95,7 @@ void X2GoWsWrapper::initialize()
     QStringList procargs;
 
     procargs<<"--verbose";
+    procargs<<"--record"<<"/var/log/x2gows/websockify."+wsPort;
     if(ssl_cert.length() && ssl_key.length())
     {
         procargs<<"--cert"<< ssl_cert <<"--key"<< ssl_key;
END

qmake && make;

install -D -d ${HOME}/x2go/deploy/usr/bin;
install -t ${HOME}/x2go/deploy/usr/bin x2gowswrapper;

#
# Build: x2gohtmlclient
#

cd ${HOME}/x2go;
[ -d 'x2gohtmlclient' ] || git clone git://code.x2go.org/x2gohtmlclient.git;
cd x2gohtmlclient;
./minify.sh;

install -D -d ${HOME}/x2go/deploy/etc;
( cd conf; tar c nginx | tar x -C ${HOME}/x2go/deploy/etc/; );

# make externally available
sed -i -r -e 's/127.0.0.1/0.0.0.0/' -e 's/::1/::/' ${HOME}/x2go/deploy/etc/nginx/sites-available/x2gohtmlclient-demo.conf;
sed -i -r -e 's/127.0.0.1/0.0.0.0/' -e 's/::1/::/' ${HOME}/x2go/deploy/etc/nginx/snippets/x2gohtmlclient-wswrapper.conf;

install -D -d ${HOME}/x2go/deploy/var/log/nginx;
install -D -d ${HOME}/x2go/deploy/var/log/x2gows;

install -D -d ${HOME}/x2go/deploy/usr/share/x2gohtmlclient/demo;
install -t ${HOME}/x2go/deploy/usr/share/x2gohtmlclient/demo index.html;
install -t ${HOME}/x2go/deploy/usr/share/x2gohtmlclient/demo x2gokdriveclient.html;

install -D -d ${HOME}/x2go/deploy//usr/share/x2gohtmlclient/;
install -t ${HOME}/x2go/deploy//usr/share/x2gohtmlclient x2gokdriveclient.html;

install -D -d ${HOME}/x2go/deploy/usr/share/javascript/x2gokdriveclient;
install -t ${HOME}/x2go/deploy/usr/share/javascript/x2gokdriveclient dist/x2gokdriveclient.min.js

install -D -d ${HOME}/x2go/deploy/usr/share/x2gohtmlclient/img/;
install -t ${HOME}/x2go/deploy/usr/share/x2gohtmlclient/img img/buttons/svg/*;
install -t ${HOME}/x2go/deploy/usr/share/x2gohtmlclient/img img/buttons/png/*;
install -t ${HOME}/x2go/deploy/usr/share/x2gohtmlclient/img img/backgrounds/svg/*;

install -D -d ${HOME}/x2go/deploy/usr/share/x2gohtmlclient/css/;
install -t ${HOME}/x2go/deploy/usr/share/x2gohtmlclient/css css/*;


#
# Build: x2gowebrpc
#

cd ${HOME}/x2go;
[ -d 'x2gowebrpc' ] || git clone git://code.x2go.org/x2gowebrpc.git
cd x2gowebrpc;

install -D -d ${HOME}/x2go/deploy/usr/lib/cgi-bin;
install -t ${HOME}/x2go/deploy/usr/lib/cgi-bin x2gorpc.cgi


install -D -d ${HOME}/x2go/deploy/etc/x2go/x2gows;

#cat << END > ${HOME}/x2go/deploy/etc/x2go/x2gows/x2gows.options
#ws_proto=wss
#ssl_cert=$(sed -n -r -e 's/^[[:space:]]*ssl_certificate[[:space:]]+([^[:space:];]*).*$/\1/p' ${HOME}/x2go/deploy/etc/nginx/sites-available/x2gohtmlclient-demo.conf)
#ssl_key=$(sed -n -r -e 's/^[[:space:]]*ssl_certificate_key[[:space:]]+([^[:space:];]*).*$/\1/p' ${HOME}/x2go/deploy/etc/nginx/sites-available/x2gohtmlclient-demo.conf)
#ssl_only=true
#log_dir=/var/log/x2gows
#END

cat << END > ${HOME}/x2go/deploy/etc/x2go/x2gows/x2gows.options
ws_proto=ws
log_dir=/var/log/x2gows
END


#
# Package
#
( cd ${HOME}/x2go/deploy; tar cfz /tmp/x2go.tgz . );

#
# Install
#

sudo tar xfz /tmp/x2go.tgz -C /;

sudo chown -R www-data:www-data /usr/share/x2gohtmlclient;
sudo chown -R www-data:www-data /usr/share/javascript/x2gokdriveclient;
sudo chown -R www-data:www-data /usr/bin/x2gowswrapper;
sudo chown -R www-data:www-data /usr/lib/cgi-bin;
sudo chown -R www-data:www-data /var/log/nginx;
sudo chown -R www-data:www-data /var/log/x2gows;
sudo chown -R www-data:www-data /etc/x2go/x2gows/x2gows.options;

sudo rm -f /etc/nginx/sites-enabled/default;
sudo ln -sf ../sites-available/x2gohtmlclient-demo.conf /etc/nginx/sites-enabled/x2gohtmlclient-demo.conf

#
# Run
#
sudo systemctl restart nginx


# ===============
# Error(s)
# ===============

--------------------
/tmp/.x2go-user/C-user-50-1634698056_stDGNOME_dp24/session.log
--------------------

running as X2Go Agent

NXAGENT - Version 3.5.99.23

Copyright (c) 2001, 2011 NoMachine (http://www.nomachine.com)
Copyright (c) 2008-2014 Oleksandr Shneyder <o.shneyder@phoca-gmbh.de>
Copyright (c) 2011-2016 Mike Gabriel <mike.gabriel@das-netzwerkteam.de>
Copyright (c) 2014-2016 Ulrich Sibiller <uli42@gmx.de>
Copyright (c) 2014-2016 Mihai Moldovan <ionic@ionic.de>
Copyright (c) 2015-2016 Qindel Group (http://www.qindel.com)
See https://github.com/ArcticaProject/nx-libs for more information.

Info: Agent running with pid '8744'.
Session: Starting session at 'Tue Oct 19 22:47:37 2021'.
Info: Proxy running in client mode with pid '8744'.
Info: Using errors file '/tmp/.x2go-user/C-user-50-1634698056_stDGNOME_dp24/session.log'.
Info: Using stats file '/tmp/.x2go-user/C-user-50-1634698056_stDGNOME_dp24/C-user-50-1634698056_stDGNOME_dp24/stats'.
Loop: WARNING! Unrecognized session type 'unix-kde-depth_24'. Assuming agent session.
Warning: Unrecognized session type 'unix-kde-depth_24'. Assuming agent session.
Info: Waiting for connection from 'localhost' on socket 'tcp:*:53626'.
Info: Accepted connection from '127.0.0.1'.
Loop: WARNING! Non printable character decimal '7' received in remote data from FD#8.
Warning: Non printable character decimal '7' received in remote data from FD#8.
Loop: WARNING! Non printable character decimal '0' received in remote data from FD#8.
Warning: Non printable character decimal '0' received in remote data from FD#8.
Loop: WARNING! Non printable character decimal '0' received in remote data from FD#8.
Warning: Non printable character decimal '0' received in remote data from FD#8.
Loop: WARNING! Non printable character decimal '0' received in remote data from FD#8.
Warning: Non printable character decimal '0' received in remote data from FD#8.
Loop: WARNING! Non printable character decimal '0' received in remote data from FD#8.
Warning: Non printable character decimal '0' received in remote data from FD#8.
Loop: WARNING! Non printable character decimal '5' received in remote data from FD#8.

....

Error: Failure negotiating the session in stage '7'.
Error: Aborting session with 'Unable to open display 'nx/nx,options=/tmp/.x2go-user/C-user-50-1634698056_stDGNOME_dp24/options:50''.
Session: Aborting session at 'Tue Oct 19 22:48:16 2021'.
Session: Session aborted at 'Tue Oct 19 22:48:16 2021'.

--------------------
/var/log/x2gows/websockify.50001.1
--------------------

var VNC_frame_data = [
'}3}6ba1f53e7eb3536232eeff332bd49336',
'}3}\x07\x00\x00\x00\x00\x05\x98\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00',
'}5}\n\x00\x00\x00\x04\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00',
'}35000}\x06\x00\x00\x009\x00\x00\x00\x1d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00',
'}35033}\x06\x00\x00\x00\x8e\x00\x00\x00\xc2\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00',
'}35067}\x06\x00\x00\x00\xd1\x00\x00\x00\x14\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00',
'}35101}\x06\x00\x00\x00\xed\x00\x00\x007\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00',
'}35174}\x06\x00\x00\x00\xee\x00\x00\x009\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00',
'}35200}\x06\x00\x00\x00\xec\x00\x00\x00=\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00',
'}35233}\x06\x00\x00\x00\xe3\x00\x00\x00I\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00',
'}35267}\x06\x00\x00\x00\xd4\x00\x00\x00h\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00',
'}35300}\x06\x00\x00\x00\xb0\x00\x00\x00\x9d\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00',
'}35333}\x06\x00\x00\x00W\x00\x00\x00\x08\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00',
'EOF'];

--------------------
/var/log/x2gows/8779_50000_50001.err
--------------------
warning, starting websockify without SSL support
WebSocket server settings:
  - Listen on :50001
  - No SSL/TLS support (no cert file)

  - Recording to '/var/log/x2gows/websockify.50001.*'

  - proxying from :50001 to :50000

127.0.0.1: new handler Process

127.0.0.1 - - [19/Oct/2021 22:47:41] "GET /x2gows/50001 HTTP/1.1" 101 -

127.0.0.1 - - [19/Oct/2021 22:47:41] 127.0.0.1: Plain non-SSL (ws://) WebSocket connection
127.0.0.1 - - [19/Oct/2021 22:47:41] 127.0.0.1: Path: '/x2gows/50001'

127.0.0.1 - - [19/Oct/2021 22:47:41] opening record file: /var/log/x2gows/websockify.50001.1

127.0.0.1 - - [19/Oct/2021 22:47:41] connecting to: :50000

127.0.0.1 - - [19/Oct/2021 22:48:16] :50000: Target closed connection

127.0.0.1 - - [19/Oct/2021 22:48:16] :50000: Closed target

--------------------
/var/log/x2gows/8779_50000_50001.log
--------------------
SSH pid: 8779 local port: 50000 WS port: 50001
start websockify with args --verbose --record /var/log/x2gows/websockify.50001 :50001 :50000
Client closed connection, terminating...
Terminating websockify
Terminating tunnel with pid 8779
terminating child process 8781 : ssh


_______________________________________________
x2go-dev mailing list
x2go-dev@lists.x2go.org
https://lists.x2go.org/listinfo/x2go-dev