Subject: get rid of remnant html tags in client<->broker communications
From: Mike Gabriel <[email-masked]>
To: [email-masked]
Date: Fri, 07 Dec 2012 09:06:00 +0100

Package: x2goclient
Severity: normal
Version: 3.99.3.1-HEAD
Tags: patch confirmed

Hi Alex,

I have taken a closer look at the httpbrokerclient.cpp code in  
x2goclient. Most replies from the httpbroker are compliant with a  
text/plain content type. This is good IMHO.

However, in HttpBrokerClient::createIniFile x2goclient expects <br>  
html tags as line breaks. If these <br> tags are missing, the session  
profile won't get recognized by x2goclient.

With the current developmental code in x2gobroker.git, I try to  
implement the current broker API with no html elements at all, so I'd  
be happy if these last required <br>s could be made unnecessary.

Currently, as a list of session profiles the httpbroker client code in  
x2goclient expects some broker output like this:

"""
START_USER_SESSIONS<br>[b00830a9-aec4-4e9e-88f8-ddbffeb1c8ea]defsndport=1<br>sndport=4713<br>xinerama=1<br>variant=<br>useiconv=0<br>iconvfrom=UTF-8<br>height=600<br>usekbd=1<br>applications=TERMINAL,WWWBROWSER,MAILCLIENT,OFFICE<br>host=localhost<br>export=<br>user=<br>fstunnel=1<br>quality=9<br>sshport=22<br>sound=1<br>fullscreen=0<br>rootless=0<br>layout=<br>name=LOCALHOST<br>sshproxyport=22<br>soundsystem=pulse<br>speed=2<br>iconvto=UTF-8<br>soundtunnel=1<br>useexports=1<br>width=800<br>command=KDE<br>multidisp=0<br>print=1<br>setdpi=0<br>type=auto<br>dpi=96<br>pack=16m-jpeg<br>
END_USER_SESSIONS<br>
"""

So, I am quite keen on x2goclient being able to _also_ handle broker  
output that looks like this, instead:

"""
[47af8619-d619-43de-bf00-2c30c47772d1]
defsndport=1
sndport=4713
xinerama=1
variant=
useiconv=0
iconvfrom=UTF-8
height=600
usekbd=1
applications=TERMINAL,WWWBROWSER,MAILCLIENT,OFFICE
host=localhost
export=
user=
fstunnel=1
quality=9
sshport=22
sound=1
fullscreen=0
rootless=0
layout=
name=LOCALHOST
sshproxyport=22
soundsystem=pulse
speed=2
iconvto=UTF-8
soundtunnel=1
useexports=1
width=800
command=KDE
multidisp=0
print=1
setdpi=0
type=auto
dpi=96
pack=16m-jpeg
END_USER_SESSIONS
"""

Attached to this post you find a patch against httpbrokerclient.* that  
makes x2goclient understand both variants of httpbroker output (IMHO).  
Can you please cross-check if that patch keeps x2goclient working with  
all other broker implementations that are currently deployed at your  
customers' sites?

Greets,
Mike

-- 

DAS-NETZWERKTEAM
mike gabriel, rothenstein 5, 24214 neudorf-bornstein
fon: +49 (1520) 1976 148

GnuPG Key ID 0x25771B31
mail: [email-masked], http://das-netzwerkteam.de

freeBusy:
https://mail.das-netzwerkteam.de/freebusy/m.gabriel%40das-netzwerkteam.de.xfb
--- a/httpbrokerclient.cpp
+++ b/httpbrokerclient.cpp
@@ -319,16 +319,18 @@ void HttpBrokerClient::testConnection()
 }

-void HttpBrokerClient::createIniFile(const QString& content)
+void HttpBrokerClient::createIniFile(const QString& raw_content)
 {
+    QString content;
+    content = raw_content;
+    content.replace("<br>","\n");
+    x2goDebug<<"inifile content: "<<content<<"\n";
     QString cont;
-    QStringList lines=content.split("START_USER_SESSIONS<br>");
+    QStringList lines=content.split("START_USER_SESSIONS\n");
     if (lines.count()>1)
     {
         cont=lines[1];
-        cont=cont.split("END_USER_SESSIONS")[0];
-        cont.replace("\n","");
-        cont.replace("<br>","\n");
+        cont=cont.split("END_USER_SESSIONS\n")[0];
     }
     mainWindow->config.iniFile=cont;
 }