Update: UltraVNC 1.4.3.6 and UltraVNC SC 1.4.3.6: viewtopic.php?t=37885
Important: Please update to latest version before to create a reply, a topic or an issue: viewtopic.php?t=37864

Join us on social networks and share our announcements:
- Website: https://uvnc.com/
- GitHub: https://github.com/ultravnc
- Mastodon: https://mastodon.social/@ultravnc
- Facebook: https://www.facebook.com/ultravnc1
- X/Twitter: https://twitter.com/ultravnc1
- Reddit community: https://www.reddit.com/r/ultravnc
- OpenHub: https://openhub.net/p/ultravnc

NatBypassWrapper in Java, may i use this?

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
goodgod
Posts: 2
Joined: 2012-02-20 11:23

NatBypassWrapper in Java, may i use this?

Post by goodgod »

Hi,

i wrote simple wrapper for UltraVnc in order to be able to connect users behind routers.
Here we have client app and server app written in java (not the happiest solution for this kind of software, I know...).
Software uses unmodified UltraVnc binaries, which it downloads as it's started.
Works basically as TeamViewer programs, just a lot simpler :)

I would like to include this project into my commercial project, so may I do that?
I'm really not sure after reading GPLv3, so please, any help, reference or advice would be appreciated.

Screenshot (you'll get the idea):
http://oi43.tinypic.com/20uv6t0.jpg

App:
https://rapidshare.com/files/417720612/pzWrapper.rar

Usage:
*Server app (pzAppServer.jar):
java -jar pzAppServer.jar 65123
the only parameter is server port, default is 65123

*Client app (pzAppWrapper.jar)
java -jar pzAppWrapper.jar
Upon your acceptance, this app will download UltraVNC binaries and put them to c:\vnc, after that it will try to connect to server app, and it will fail, because you need to set server address first.
To do that you need to open c:\vnc\pzwrapper.conf and change tempProxy.dyndns.org to what ever address you installed the server app. Also if you have changed default port when you started server, change it here too.

Source is also available, pm me I'll be glad to send it to you.

Sincerely,
Lazar Banković
ltwally
Posts: 5
Joined: 2012-02-22 19:41

Re: NatBypassWrapper in Java, may i use this?

Post by ltwally »

This would be ideal for a reverse-vnc connection (ie. Single Click server), where the support staff already have their end configured, and just need an easy URL to point clients to.
ltwally
Posts: 5
Joined: 2012-02-22 19:41

Re: NatBypassWrapper in Java, may i use this?

Post by ltwally »

This would be ideal for a reverse-vnc connection (ie. Single Click server), where the support staff already have their end configured, and just need an easy URL to point clients to.
goodgod
Posts: 2
Joined: 2012-02-20 11:23

Re: NatBypassWrapper in Java, may i use this?

Post by goodgod »

Hi all,

i've made a little googleing around the internet in order to find a nice and efficient way for a p2p(direct) connections between routers. I've discovered (a little late though) that it is possible to make a direct connection between devices behind routers through a technique called 'hole punching'. It's a simple principle and there are published papers on this research available on the internet. One that i find interesting and easy to understand is this: http://www.brynosaurus.com/pub/net/p2pnat/.
Technique that i implemented and posted above is described as 'Relaying' which would be the case where we have a 'Relay' server on a well known address listening to user connections on a well known port. Users connect to server and then, on users demand, those connections 'bridge'(simple create two threads on 'Relay server' and forward everything from one user to another and vice versa). This handles the job surprisingly well on let's say 5 transactions at the same time that i tested(which servers its purpose). Really bad thing is that it consumes your server connection and slows it down by eating ram memory, etc..
This would be starting of a 'Relay' server on a public server machine, port 65123 : java -jar pzAppServer.jar 65123
This is local server and client app in the same package, used to make connection to 'Relay' server, and then wrap application that needs to communicate with other application through 'Relay' server. In this case its winvnc.exe but it could as well be any windows or linux application: java -jar pzAppWrapper.jar.
Another approach is using 'hole punching' technique which does not consume the server as in mean that the data transfer does not go through server. It uses server, here described as 'Rendezvous' server only to 'meet up' and exchange information on other party's address. What basically happens is that when i want to connect to other machine, I look up for its address on the 'Rendezvous' server and try to connect to it directly. At the same time, server tells the other party to try to connect to me, giving it my address and a port on my machine. This way both routers 'punch hole' on both routers which are now both expecting data from one to other. As this seems like no way in the hell it would work, the research that i provided above and couple others show that its pretty possible, and proven to work. They even marked the tested and 'well behaved' routers for this kind of job, as well as the percentage of tested routers that would work with this method.
I described the 'hole punching' method pretty roughly but you can get the idea of how things should work.
Now I searched for the implementation on this method and this showed up: http://nutss.gforge.cis.cornell.edu/stunt.php. I found out that they proved the method to be working, and provided java classes with the implementation and then stopped developing it couple of years ago.

I can't find any library online with this technique implemented so i was wondering if any of you tried this or have any thoughts on this. The protocol called 'STUN' .
The final thought would be to take an reliable UDP library, STUN implementation, open SSL and VNCLibraries(libvnc(http://libvncserver.sourceforge.net/)) and to make secure, efficient, fast, os independent, opensource, free, p2p remote desktop application.

Any thoughts? Ideas? Suggestions?

Sincerely,
Lazar
Post Reply