ovd-guacamole

501 views
Skip to first unread message

Stylianos Markogiannakis

unread,
Oct 8, 2014, 11:15:00 PM10/8/14
to ulteo-ovd-com...@googlegroups.com
I have trouble with the login when I use the HTML5 option. 

When I try to connect, in catalina.out, I see that the "Authentication provider class not found"
"Caused by: java.lang.ClassNotFoundException: net.sourceforge.guacamole.net.auth.ovd.UlteoOVDAuthenticationProvider"

In "guacamole.properties" there is the entry:

"auth-provider: net.sourceforge.guacamole.net.auth.ovd.UlteoOVDAuthenticationProvider"

but nowhere in the guacamole.war the class "UlteoOVDAuthenticationProvider" is to be found.
Is the entry correct or should I be using something else?

How is the Authentication process handled?

I even (painfully) build from source using the relevant source code from guacamole-0.8.4 but the error persists.

Needless to say that if I connect directly to https://my.server.address/ovd/guacamole/ , I see the login screen but, no joy !!!

Any input will be greatly appreciated.

Mico

unread,
Oct 9, 2014, 12:25:54 AM10/9/14
to ulteo-ovd-com...@googlegroups.com
Hi Stylianos,

Can you provide some documentation on how you built and implemented from source.  I'm working to implement this as well and will help debug when I get further along with this package.

Stylianos Markogiannakis

unread,
Oct 9, 2014, 9:57:53 AM10/9/14
to ulteo-ovd-com...@googlegroups.com
I will gladly provide any info that I have available on building ovd-guacamole from source once I figure out the problem with the pesky UlteoOVDAuthenticationProvider authentication issue.

The sort and dirty is that I downloaded guacamole-client 0.8.4, replaced and renamed the directories/files to the ovd-guacamole source, tampered with the pom.xml files and replaced all instances of the substring "net.sourceforge" with "org.glyptodon". Also I tampered with the code of OVDLogin.java and GuacamolePrinterServlet.java to update the import statements.

Does anyone have a working environment based on the rpm package as distributed from Ulteo?

P.S. I was forced to go through the compiling from source because my system is CentOS 5.11 and not 6.xx, so the rpm was not installing because of the older version of glibc etc.
 

Mico

unread,
Oct 9, 2014, 10:23:02 AM10/9/14
to ulteo-ovd-com...@googlegroups.com
Awesome, I was just reviewing all the guacamole authentication stuff this during the morning.  I also now have ovd-guacamole compiling and working for a .deb package on ubuntu precise 12.04.  I'm using the much old 0.6.0-0.6.2 version of code that came with ulteo.  I'm looking to update it to 0.8.4-0.9.x today.

I've found this link describing some custom authentication procedures:

I'll play with implementing 0.9 and 0.8 a bit today hopefully.

Mico

unread,
Oct 9, 2014, 12:45:10 PM10/9/14
to ulteo-ovd-com...@googlegroups.com
I think your issue is related to changes in guacamole's API.

More documentation on the API

Mico

unread,
Oct 9, 2014, 1:10:19 PM10/9/14
to ulteo-ovd-com...@googlegroups.com
I think this issue is going to be related to file :
ovd-guacamole/guacamole/src/main/webapp/WEB-INF/web.xml

since you modified your pom.xml

Did you update this info in ovd-guacamole/guacamole/src/main/webapp/WEB-INF/web.xml

   <!-- OVD Login Servlet -->
    <servlet>
        <description>OVD Login servlet.</description>
        <servlet-name>OVDLogin</servlet-name>
        <servlet-class>net.sourceforge.guacamole.net.auth.ovd.OVDLogin</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>OVDLogin</servlet-name>
        <url-pattern>/ovdlogin</url-pattern>
    </servlet-mapping>

   <!-- OVD PDF Printing Servlet -->
    <servlet>
        <description>Ulteo PDF printer</description>
        <servlet-name>GuacamolePrinterServlet</servlet-name>
        <servlet-class>net.sourceforge.guacamole.printing.GuacamolePrinterServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>GuacamolePrinterServlet</servlet-name>
        <url-pattern>/printer/*</url-pattern>
    </servlet-mapping>

Mico

unread,
Oct 9, 2014, 1:11:32 PM10/9/14
to ulteo-ovd-com...@googlegroups.com

I'm attaching the original web.xml for reference.
web.xml

Stylianos Markogiannakis

unread,
Oct 9, 2014, 1:40:02 PM10/9/14
to ulteo-ovd-com...@googlegroups.com
Hey Mico,

I compared line by line your web.xml with mine and they are exactly the same aside from the fact that the string "net.sourceforge" has been replaced with "org.glyptodon"
I paid close attention to replace all the above mentioned references and I can build the package (rpmbuild) without any errors.
The exception is thrown (catalina.out) whenever I try to login from the Ulteo login page with the type set to HTML5.
It accepts my creds, the progress bar advances while it builds(?) my desktop environment and immediately after it regresses back (the bar) as if I am logging out.

The puzzling thing is that UlteoOVDAuthenticationProvider is nowhere to be found. I searched numerous times for it throughout all the source files and I can't find it anywhere.

At this point I am convinced that there is some code missing from the source package or the guacamole.properties as distributed is not correct.

Mico

unread,
Oct 9, 2014, 2:57:16 PM10/9/14
to ulteo-ovd-com...@googlegroups.com
Well, I decompiled all the Java classes code from ulteo's released java servlet code and didn't find any evidence of this missing class.  I wish we had some 0.6~ documentation for the guacamole.properties file to get a better understanding of what the auth-provider: field designates, it seems to imply that a class of this nature should exist though it clearly doesn't.

Stylianos Markogiannakis

unread,
Oct 9, 2014, 7:57:35 PM10/9/14
to ulteo-ovd-com...@googlegroups.com
That is what I meant too by saying that it was not found anywhere in the ovd source. 
I find it rather difficult for this particular class to be in the generic guacamole distribution, regardless the version, judging from its name. It clearly should be a class specific to Ulteo.

The auth-provider field designates the class that should be called to authenticate the user that tries to login. 
Probably the UlteoOVDAuthenticationProvider class (if it exists) should have some (additional) logic to handle the users as seen and known in Ulteo and authenticate them.

Apparently some reverse engineering into the logic is in order. If you like, send me a PM to discuss some ideas I have and figure out what is going on.

At this point, my only proposal is to try to play with the virtual machine and see how it behaves and, if it works as expected then, try to dismantle it and figure out what is going on.

Mico

unread,
Oct 9, 2014, 10:32:35 PM10/9/14
to ulteo-ovd-com...@googlegroups.com
I tested the ulteo-ovd-guacamole package by installing it on a fresh install ubuntu load with just a session manager and web client on one server.  I also setup a app server to simulate a working environment.  I proceeded to remove the ulteo-ovd-guacamole package from server and then installed the .deb that I built from source (has no reference of the class UlteoOVDAuthenticationProvider).  The replacement package worked without issue with the html5 web login.  Im debating attempting to just start the new package compilation and turn on very high debugging to find exactly where it is getting called.

Attached log of removal/reinstallation of built from source guacamole 0.6.2

root@ubuntu:/home/cisadmin# apt-get remove --purge ulteo-ovd-guacamole
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED:
  ulteo-ovd-guacamole*
0 upgraded, 0 newly installed, 1 to remove and 2 not upgraded.
After this operation, 2,277 kB disk space will be freed.
Do you want to continue [Y/n]? Y
(Reading database ... 62543 files and directories currently installed.)
Removing ulteo-ovd-guacamole ...
 * Reloading web server config apache2                                                                                                     apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
                                                                                                                                    [ OK ]
 * Stopping guacd                                                                                                                   [ OK ]
 Removing any system startup links for /etc/init.d/guacd ...
   /etc/rc0.d/K20guacd
   /etc/rc1.d/K20guacd
   /etc/rc2.d/S20guacd
   /etc/rc3.d/S20guacd
   /etc/rc4.d/S20guacd
   /etc/rc5.d/S20guacd
   /etc/rc6.d/K20guacd
Purging configuration files for ulteo-ovd-guacamole ...
dpkg: warning: while removing ulteo-ovd-guacamole, directory '/var/spool/ulteo' not empty so not removed.
Processing triggers for man-db ...
Processing triggers for ureadahead ...
Processing triggers for libc-bin ...
ldconfig deferred processing now taking place
root@ubuntu:/home/cisadmin# dpkg -i ulteo-ovd-guacamole_4.0.2_amd64.deb
Selecting previously unselected package ulteo-ovd-guacamole.
(Reading database ... 62356 files and directories currently installed.)
Unpacking ulteo-ovd-guacamole (from ulteo-ovd-guacamole_4.0.2_amd64.deb) ...
Setting up ulteo-ovd-guacamole (4.0.2) ...
 * Restarting web server apache2                                                                                                           apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
 ... waiting apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
                                                                                                                                    [ OK ]
 * Stopping guacd                                                                                                                           * SUCCESS (not running)
 * Starting guacd                                                                                                                          guacd[14062]: INFO:  Guacamole proxy daemon (guacd) version 0.6.2
guacd[14062]: INFO:  Unable to bind socket to host ::1, port 4822: Address family not supported by protocol
guacd[14062]: INFO:  Successfully bound socket to host 127.0.0.1, port 4822
guacd[14062]: INFO:  Exiting and passing control to PID 14063
guacd[14063]: INFO:  Exiting and passing control to PID 14065
                                                                                                                                    [ OK ]
 Adding system startup for /etc/init.d/guacd ...
   /etc/rc0.d/K20guacd -> ../init.d/guacd
   /etc/rc1.d/K20guacd -> ../init.d/guacd
   /etc/rc6.d/K20guacd -> ../init.d/guacd
   /etc/rc2.d/S20guacd -> ../init.d/guacd
   /etc/rc3.d/S20guacd -> ../init.d/guacd
   /etc/rc4.d/S20guacd -> ../init.d/guacd
   /etc/rc5.d/S20guacd -> ../init.d/guacd
Processing triggers for ureadahead ...
Processing triggers for man-db ...
Processing triggers for libc-bin ...
ldconfig deferred processing now taking place
root@ubuntu:/home/cisadmin#
Message has been deleted

Mico

unread,
Oct 9, 2014, 11:26:24 PM10/9/14
to ulteo-ovd-com...@googlegroups.com
Alright, I have an idea after looking at the 0.8.4 source code a bit further...

Original authentication class in ulteo 4.0.2 is located in :

ovd-sources-4.0.2/ovd-guacamole/auth-ulteo-ovd/src/main/java/net/sourceforge/guacamole/net/auth/ovd/OVDLogin.java

The servlet calls it in: 
ovd-sources-4.0.2/ovd-guacamole/guacamole/src/main/webapp/WEB-INF/web.xml

 <!-- OVD Login Servlet -->
    <servlet>
        <description>OVD Login servlet.</description>
        <servlet-name>OVDLogin</servlet-name>
        <servlet-class>net.sourceforge.guacamole.net.auth.ovd.OVDLogin</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>OVDLogin</servlet-name>
        <url-pattern>/ovdlogin</url-pattern>
    </servlet-mapping>

#########
line: <servlet-class>net.sourceforge.guacamole.net.auth.ovd.OVDLogin</servlet-class>
is referencing the OVDLogin.class located at:
ovd-sources-4.0.2/ovd-guacamole/auth-ulteo-ovd/src/main/java/net/sourceforge/guacamole/net/auth/ovd/OVDLogin.java (prior to compile)

You'll have to make sure this directory path correctly corresponds to the build.

Meaning you can't change net.sourceforge to org.glyptodon if it isn't properly reflecting the local directory structure inside the .war file.


On Thursday, October 9, 2014 9:34:43 PM UTC-5, Mico wrote:
My best guess at this point is... the class didnt matter in 0.6.2 guacamole and new versions got stricter about it needing to exist.  I think authentication might be presently transferred over from apache and something broke with the newer version.  I'm just guessing at this point... any feedback from the community is much appreciated.
Message has been deleted

Mico

unread,
Oct 10, 2014, 8:08:59 AM10/10/14
to ulteo-ovd-com...@googlegroups.com
I tired something like this with the standard 0.8.4 source,

mkdir ~/guacamole-client-0.8.4/guacamole/src/main/java/org/glyptodon/guacamole/net/auth
mkdir ~/guacamole-client-0.8.4/guacamole/src/main/java/org/glyptodon/guacamole/net/auth/ovd
cp ~/ovd-sources-4.0.2/ovd-guacamole/auth-ulteo-ovd/src/main/java/net/sourceforge/guacamole/net/auth/ovd/OVDLogin.java ~/guacamole-client-0.8.4/guacamole/src/main/java/org/glyptodon/guacamole/net/

vi ~/guacamole-client-0.8.4/guacamole/src/main/webapp/WEB-INF/web.xml

add:
<!-- OVD Login Servlet -->
    <servlet>
        <description>OVD Login servlet.</description>
        <servlet-name>OVDLogin</servlet-name>
        <servlet-class>org.glyptodon.guacamole.net.auth.ovd.OVDLogin</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>OVDLogin</servlet-name>
        <url-pattern>/ovdlogin</url-pattern>
    </servlet-mapping>

cd ~/guacamole-client-0.8.4/guacamole/
mvn package

It seems to compile this .war with the class referenced properly in the war.  Did you do similar? I think you had yours pointing to /ovd/guacamole instead of /ovdlogin?
guacamole-0.8.4.war

Kalpesh Darji

unread,
Oct 14, 2014, 4:16:23 AM10/14/14
to ulteo-ovd-com...@googlegroups.com
Hi,

Try this to install webclient:

apt-get -o Dpkg::Options::="--force-overwrite" install ulteo-ovd-web-client

After this, you will be able to run HTML5 client.

Best Regards,
Kalpesh Darji

Anantha Raghava

unread,
Jan 7, 2015, 9:30:13 PM1/7/15
to ulteo-ovd-com...@googlegroups.com
Hello Mico,

While working with latest Guacamole & freeRDP support, did you guys get to check sound & USB redirection support for HTML5.

Any support & guidance is highly appreciated.

Regards,
Ananth
Reply all
Reply to author
Forward
0 new messages