Unholy "Guacamole"

This forum is for VNC related products. This means not only UltraVNC. It even is allowed to announce or describe commercial (and of course non-commercial) programs here (but not anywhere else in the forum).
Post Reply
B
800
800
Posts: 2338
Joined: 2009-09-09 14:05

Unholy "Guacamole"

Post by B »

This just hit Slashdot, and I haven't reviewed it yet. At first glance I thought it might be similar to the very ambitious web viewer <b>and</b> server, VNCProxy.com from Rémi Serrano....

but upon review, all it is is a repositioning of the decade old Java VNC <b>viewer</b> application only? The same one that's bundled into UltraVNC and every other VNC on the planet??

http://linux.slashdot.org/story/10/05/0 ... ?art_pos=1


How is this news? They took a perfectly functional viewer that worked in EVERY browser, and made it dependent on HTML5 and AJAX, and it still requires a Java enabled VNC server separately?

I guess I'm confused. It must just be an advertorial / slashvertisement.
zhanghengzhi
Posts: 5
Joined: 2010-04-22 20:22
Contact:

Re: Unholy "Guacamole"

Post by zhanghengzhi »

Hello... I am the developer responsible for the project you speak of.

Guacamole is nothing old... it's a completely new application whose Java code resides on the server only. The web-based client provides VNC access to those who cannot use a native client due to firewalls / company policy / etc.

The whole idea is to provide a pure JavaScript/HTML5 client that requires no Java or plugins on the client-side. Naturally, there must be a server-side component that translates the VNC protocol into something manageable by JavaScript, and I chose to write that in Java.

I had nothing to do with the slashdot article, though I am very pleased that someone found my project worthy of a post. Apparently someone in Australia wrote a similar article for a blog called "TechWorld", and this is the link that someone reposted on slashdot today.

I don't intend to duplicate existing software; the purpose of Guacamole is to provide a convenient way for people to access their desktops without the need for plugins or extra software on the client computer.
B
800
800
Posts: 2338
Joined: 2009-09-09 14:05

Re: Unholy "Guacamole"

Post by B »

Okay, thanks, I can see that. (Great avatar/icon, by the way.) I guess this serves a similar purpose to the various previous viewers written in Java and ActiveX. More choices are good; it's just that I was very disappointed by the headline. "Puts VNC On The Web" had me thinking it included a web-delivered server component like VNCProxy does. And the breathless description made it sound as if nothing like this had existed before. Thus the negative reaction both at Slashdot and by me above.

At this particular stage, I would expect Java to be more available at the client side than HTML5, but of course that will change over time, so your software would become much more useful. (I'm certainly no fan of client side Java!)

Good luck with the project.
shadowfax
40
40
Posts: 77
Joined: 2010-05-06 12:28
Location: Spain

Re: Unholy "Guacamole"

Post by shadowfax »

Correct me if I'm wrong but I think Java runs as a server side include on a Tomcat Server, which means there is no need for Java on the client side. But haven't been able to take a look to see how it's working.

A detailed description would be nice, since all the "so called" AJAX clients directlly output Ajax from it's own server... That is, it replaces the Java VNC viewer included on UltraVNC with AJAX. I find it a nice idea but I'd like to find a 'REAL' AJAX VNC client in order to use a repeater through AJAX (Making it accesible through Safari for iPhone as there is no VNC client supporting repeaters for iPhone). I started coding a Repeater by mixing TinyHTTPd, aVNC (as webVNC didn't seem to work as expected) and the repeater code in order to make the repeater acessible through AJAX but haven't got enough time to achieve a reasonable progress on the project.

I'd really like to know if this project is able to achieve this task.
B
800
800
Posts: 2338
Joined: 2009-09-09 14:05

Re: Unholy "Guacamole"

Post by B »

Yeah, I was saying client side Java is, obviously, needed for the traditional VNC web viewer, and that Guacamole does away with that need. I'm sure Guacamole doesn't use client side Java. (So I would <i>guess</i> it's iPhone/Pad ready.)

But I don't think his or her project does much at all to address flexibility in either the server or repeater. I'm seeing it strictly as a Javaviewer analog/replacement?

Have you checked out VNCProxy.com? It actually works for this sort of thing, with Java on both sides.
shadowfax
40
40
Posts: 77
Joined: 2010-05-06 12:28
Location: Spain

Re: Unholy "Guacamole"

Post by shadowfax »

Yes. The problem is iPhone/iPad won't support java. Infact it won't support any emulated language. Therefore the solution would be:
  • 1) Writting a native application for the iPhone.
    2) Writting an AJAX client (If Guacamole doesn't do the trick) or implementing a HTTP server on the repeater should it can serve AJAX
    3) Modify the repeater so it would show a fake VNC session where you could choose to wich ID you wish to get connected
Maybe the third option -if possible- is the best for the official repeater as it could be an option enabeling/disableing this functionality... This would make the repeater compatible with all VNC clients, but I still don't know if it is possible since I haven't digged into the RFB Protocol.
Last edited by shadowfax on 2010-05-06 17:35, edited 2 times in total.
B
800
800
Posts: 2338
Joined: 2009-09-09 14:05

Re: Unholy "Guacamole"

Post by B »

I'm losing you -- would option 3 still depend on running AJAX and/or HTML5/Canvas at the client? If not, what would be expected at the client(s)?

Of course, one could just avoid iThings.... ;)
shadowfax
40
40
Posts: 77
Joined: 2010-05-06 12:28
Location: Spain

Re: Unholy "Guacamole"

Post by shadowfax »

No, option 3 wouldn't require AJAX... just a simple VNC client.

Sure you can keep away from iThings :) But it would be nice to connect to a VNC server from a wide number of devices, otherwise I would stick to the NX protocol.

Connecting to a VNC server is no problem, since there are numerous clients that connect to a VNC server... but not so many support the ID for the repeater (SC)... Option 3 would make the repeater 100% compatible with any VNC Client (even AJAX clients that haven't considered the repeater ID).

On the other hand, an AJAX client would be nice as you would be able to VNC without the need of installing a VNC client. You would be able to connect from a pals computer, a payed terminal as the ones found on airpots, hotel computers, etc... Where you are unable to install any software, and take control over your VNC sessions. JAVA applets such as VNCProxy are nice if java is installed but, if it isn't, you would be unable to install it on such devices. AJAX would offer wider access to your VNC systems.

I really think it's a neat idea... and I really like some projects like webVNC that replace the java client with an AJAX client (I'm not a java fan). But now-a-days, where most operating systems contains some sort of a remote desktop system (usually more efficient than the VNC/RFB protocol), I think VNC should focus on reverse connections as it is it's biggest strength a free remote support tool. Disgratefully most client won't support it (That's the reason of my third point)... And the AJAX projects I've found are focused on replacing the java client of the server itself, but not focused on reverse connections.
B
800
800
Posts: 2338
Joined: 2009-09-09 14:05

Re: Unholy "Guacamole"

Post by B »

Ah, thanks, I think I understand better. You aren't necessarily talking about replacing the need for executable vncviewer code. You are focusing on making repeater functionality more available, and in your scenario #3 a repeater server at, for example, repeaterserver.com would re-presenting, for example, a target server at yournetwork.com:5500.RepeaterID#123456 as a non-repeater-dependent VNC target like yournetwork-123456.repeaterserver.com:5900

Is that right?

That actually sounds like a great idea!

Though again, I don't see where Guacamole has anything to do with that.
vcka
8
8
Posts: 16
Joined: 2010-05-12 07:32

Re: Unholy "Guacamole"

Post by vcka »

Main guacamole problem is that it can't connect to other machine except local host, because it doesn't support authentification... SAD :cry:
zhanghengzhi
Posts: 5
Joined: 2010-04-22 20:22
Contact:

Re: Unholy "Guacamole"

Post by zhanghengzhi »

vcka wrote:Main guacamole problem is that it can't connect to other machine except local host, because it doesn't support authentification... SAD :cry:
It supports VNC authentication as of version 0.2.2... you just have to specify which host/port/password combination in the configuration file (guacamole.xml). Multiple copies of this configuration file will allow you to have multiple instances of Guacamole under the same Tomcat, where each instance provides access to a different host.

Two threads which discuss doing this:

http://sourceforge.net/projects/guacamo ... ic/3699657 (entire thread)
http://sourceforge.net/projects/guacamo ... ic/3702880 (post #5 and forward)

Hope this helps...
shadowfax
40
40
Posts: 77
Joined: 2010-05-06 12:28
Location: Spain

Re: Unholy "Guacamole"

Post by shadowfax »

Is it possible to set the host and port though the HTTP query? It would be great as it would allow much more flexibility... whitelists and blacklist would also come in handy there.

If it is possible to specify que server and port, adding the repeater ID should be simple... and it would be great!

Is it possible to set the username and password through an AJAX popup? More or less the same thing as stated above... This would be nice when specifying a server through the HTTP query, plus it adds functionality in order to make possible the use of a repeater if a pasword is requested by the server.

I guess it would be possible since the server would be able to write an XML file on demand if the directory is configured with the correct permissions, right?
zhanghengzhi
Posts: 5
Joined: 2010-04-22 20:22
Contact:

Re: Unholy "Guacamole"

Post by zhanghengzhi »

shadowfax wrote:Is it possible to set the host and port though the HTTP query?
It will be. There is an open ticket for this in the Guacamole Trac: http://sourceforge.net/apps/trac/guacamole/ticket/13
vcka
8
8
Posts: 16
Joined: 2010-05-12 07:32

Re: Unholy "Guacamole"

Post by vcka »

Then repeater will be supported?
zhanghengzhi
Posts: 5
Joined: 2010-04-22 20:22
Contact:

Re: Unholy "Guacamole"

Post by zhanghengzhi »

vcka wrote:Then repeater will be supported?
I'm not sure what you mean.

You can already specify which VNC server you want a particular Guacamole instance to connect to in the configuration file. Multiple copies of the configuration file result in multiple instances, each providing access to a different VNC server. You can thus connect to any of a pre-configured set of servers through the same main server.

Guacamole acts as a VNC proxy in this sense. Is this what you mean by a repeater?

The enhancement described above would just allow the server and port to be specified by the client, rather than only in the configuration file.
vcka
8
8
Posts: 16
Joined: 2010-05-12 07:32

Re: Unholy "Guacamole"

Post by vcka »

zhanghengzhi wrote:
vcka wrote:Then repeater will be supported?
I'm not sure what you mean.

You can already specify which VNC server you want a particular Guacamole instance to connect to in the configuration file. Multiple copies of the configuration file result in multiple instances, each providing access to a different VNC server. You can thus connect to any of a pre-configured set of servers through the same main server.

Guacamole acts as a VNC proxy in this sense. Is this what you mean by a repeater?

The enhancement described above would just allow the server and port to be specified by the client, rather than only in the configuration file.
I mean VNCrepeater, this is what then you do not need to forward port on server side or viewer.
B
800
800
Posts: 2338
Joined: 2009-09-09 14:05

Re: Unholy "Guacamole"

Post by B »

zhanghengzhi wrote:
vcka wrote:Then repeater will be supported?
You can thus connect to any of a pre-configured set of servers through the same main server.

Guacamole acts as a VNC proxy in this sense. Is this what you mean by a repeater?
That's actually a pretty big feature then, and was not at all obvious to me.

Yes, for most people the idea of the repeater is to allow mobility and NAT traversal for both client and server. However, for certain use cases (including one of mine) the idea of a central machine proxying VNC connections for multiple stations on that central machine's private LAN is appealing.

I wonder if other VNC servers have similar proxy ability?
shadowfax
40
40
Posts: 77
Joined: 2010-05-06 12:28
Location: Spain

Re: Unholy "Guacamole"

Post by shadowfax »

Hello zhanghengzhi,

When talking about the repeater it means the UltraVNC Repeaters, however it is really easy to implement this feature into any client... Here is how it works (Quite simple).

A repeater has two ports, one accepting reverse VNC server connections and another accepting VNC Viewer connections. Basically the VNC Repeter acts as a proxy sending whatever is received from the client (VNC viewer) port to the appropiate server port, and viceversa.

Since a repeater may have multiple VNC Servers and Viewers connected at the same time there must be a way to tell the repeater wich server the VNC viewer will be linking to. To do so the repeater will be waiting for an package of 250 bytes with a string like:

ID:1234

All other bytes in the package will be null ('\0'). The number after "ID:" is set by the user, indicating the IDentifier of the server it want to connect to. In this example, it would connect to the server with ID "1234".

The data sent after this point is exactly the same as if you where talking to a standard VNC Server. That is, after the repeater has received the ID command, it will link both sockets directly and, therefore, it would be as if you where connected directly to that VNC Server.

In order for this to work on your project, you should ask for an ID to the user (Query string, for example), you then send a package of 250 bytes as "ID:XXXXXX" filling the X with the apropiate value, and send it to the server at connection... If there is a tag in the configuration file called "isRepeater" then pseudo code could be like

if isRepeater
send 250 bytes with "ID:XXXX"
end if
Last edited by shadowfax on 2010-05-17 14:46, edited 2 times in total.
Post Reply