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'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
# ===============
# 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;
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;
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;
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
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 - - [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
_______________________________________________