Update: UltraVNC 1.4.3.6 and UltraVNC SC 1.4.3.6: https://forum.uvnc.com/viewtopic.php?t=37885
Important: Please update to latest version before to create a reply, a topic or an issue: https://forum.uvnc.com/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://x.com/ultravnc1
- Reddit community: https://www.reddit.com/r/ultravnc
- OpenHub: https://openhub.net/p/ultravnc

Quick Support tool based on UltraVNC 1.0.9.5

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
shadowfax
40
40
Posts: 77
Joined: 2010-05-06 12:28
Location: Spain

Quick Support tool based on UltraVNC 1.0.9.5

Post by shadowfax »

I'm developping a Quick Support application based on UltraVNC 1.0.9.5 with a Teamviewer look. Currently it is at a very early stage, but if someone wants to give it a try you can download the executable from: http://www.megaupload.com/?d=QZCR3O2Z

I still have to clean things up, change how the application is loaded a bit further, and make the Graphic's Interface look a better.

The download contains the executable file and a sample ultravnc.ini.

ultravnc.ini may contain some additional information:

[repeater]
URI=replace_with_your_uri
Host=replace_with_the_repeater_address
ID=replace_with_a_repater_ID

Right now it only works if the repeater listens on port 5500 (Default)

Now a brief description...

URI is optional. If defined it will download a new ultravnc.ini from that URL. Once hte URL is the same as defined on the local ultravnc.ini (Or is not defined) the application will use that INI file to load settings. Using PHP you can assign diferent repeater ID to each server...

Host is the address of the repeater/distributer. NO PORT CAN BE DEFINED.

ID is the repeater/distributer ID the server will use. If the INI file is generated through PHP/ASP you can get write a unique ID... If the ID is not defined it will connect without ID (Connecting to viewer).

In a future I'll add "Port" so you can define the port of the repeater/distributer... and "Type" so you can dfeine viewer or repeater/distributer, so if it is set to Repeater mode and has no ID it will auto generate one.

I also will write a PHP script for generating the full ultravnc.ini file from the site allowing to set random ID, or changing the settings for the Quick support on the fly. For example, if our Repeater host goes off-line we could change the Host address from our ISP and all connections will go to the new host. We could also know which IDs have been assigned as the ID could be stored on a database on our ISP (Even if we don't have access to the new repeater webui).

Not sure if you find this usefull... I'm sertainly looking for something like Teamviewer for free, and the great job from UltraVNC team is making this possible once again.

Ofcourse the full application is OpenSourced if someone would like to take a look at it at this early stage I'll publish the code URL. However, at the meantime it is mostly UltraVNC's code without some pieces such as Listening sockets, JavaViewer, etc... And the two new dialogs I'm trying to develop. On the TrayIcon you'll see some of the code I've removed as the admin properties dialog is still visible with a couple of "balds" in it due to removed code (Some have been hardcoded). You'll also see some functions removed from the tray menu.

Any thoughts about the aplication are welcomed. I hope to get things looking better shortly.

And once again, thanks to the UltraVNC Team for their great job that's making this possible.


UPDATE
  • Removed the admin properties dialog. You should include the proper INI file.
  • Removed the reverse connection dialog. The application will take care of it.
  • Solved autoreconnecting when LockSetting = 0. (Lock settings will offer diferent options sucha as quiting the application or allowing reconnect (LockSettings = 0).
Last edited by shadowfax on 2011-04-24 12:45, edited 3 times in total.
twagner
40
40
Posts: 74
Joined: 2008-09-09 20:43
Location: Germany

Re: Quick Support tool based on UltraVNC 1.0.9.5

Post by twagner »

sounds good, looks good,
but don`t work, error: failed to resolve remote address.
i can`t change any INI configuration file
i like the URI option.

twagner
Last edited by twagner on 2011-04-23 05:58, edited 1 time in total.
Die Welt geht Remote . . . . / the World goes remote . . . .
www.vnc-world.com
Writer of the first book about UltraVNC!!!
shadowfax
40
40
Posts: 77
Joined: 2010-05-06 12:28
Location: Spain

Re: Quick Support tool based on UltraVNC 1.0.9.5

Post by shadowfax »

Hi twagner,

Do you have the file ultravnc.ini in the application directory?

If so, can you post the section [repeater] you've created in a text editor?

The error you've specified is raised when it is unable to resolve the Host entry on the [repeater] section of ultravnc.ini.

Here is my testing ultravnc.ini without HTTP downloading:

Code: Select all

[Permissions]
[admin]
FileTransferEnabled=1
BlankMonitorEnabled=1
BlankInputsOnly=1
CaptureAlphaBlending=0
BlackAlphaBlending=0
DefaultScale=1
UseDSMPlugin=0
DSMPlugin=
DSMPluginConfig=
primary=1
secondary=0
InputsEnabled=1
LocalInputsDisabled=0
EnableJapInput=0
QuerySetting=2
QueryTimeout=10
QueryAccept=0
LockSetting=0
RemoveWallpaper=1
RemoveEffects=0
RemoveFontSmoothing=0
RemoveAero=1
DebugLevel=10
AllowProperties=1
AllowEditClients=1
FileTransferTimeout=30
KeepAliveInterval=5
SocketKeepAliveTimeout=10000
DisableTrayIcon=0
ConnectPriority=0
DebugMode=0
[repeater]
ID=123456789
Host=127.0.0.1
If you set the URI field for HTTP download, make sure the URL will supply a correct INI file. The returning ultravnc.ini in this case should have an exact copy of URI field in order to get it to work again in the same way since the downloaded file would replace the original ultravnc.ini and, if unset, when the application is executed a second time it won't connect to the URL... this is so in case you only wish to provide the new file once.

Best regards
shadowfax
40
40
Posts: 77
Joined: 2010-05-06 12:28
Location: Spain

Re: Quick Support tool based on UltraVNC 1.0.9.5

Post by shadowfax »

I'm having a slight dilemma I wish to share with the people that are interested on this modification.

If I ran the repeater I usually do it in a router or a ReadyNAS. Therefore chances are that I shall take some time to fix the server auth on the repeater or port the new 2011 repeater to Linux.

I use the external URI to download the INI file just in case my repeater disconnects or becomes inaccesible. This way I can change the repeater address to point the executing servers (Quick Support) to a new IP address (A repeater running on my PC or redirecting them to a viewer in listening mode) just by changing some setting on my site (externally hosted).

Up to here fine.... Now comes my dilemma:

I can make the quick support app connect to a site on connect and disconnect, this would allow my external site to show up my current connections (ID and so on)... If the repeater fails I would keep my connections shown on the site BUT some security measures should be enforced in order not to allow an attacker to add sessions or delete them from my ISP website. Not sure what the best way to implement this would be... maybe a challenge response?

Another way around, which seems more secure is to make the repeater send this requests, mirroring in some way the repeater's webui to my ISP website. The problem here comes from a repeater failure, as an unaccessible repeater won't be able to send the HTTP requests to update the ISP website... However, as the requests are unknown, and a password can be established and not send to the user it seems far more secure.

What way to go? Request on the server (quick Support) or requests on the repeater?

I guess the requests on the repeater could be optional, as it would be nice to have the ability to compile without the Webui (or have an option to disable it) and another option to enable outgoing HTTP commands in order to update an external website.... For example:

OnConnect="http://www.whatever.com/uvnc.php?passwd ... &id=YOURID"
OnDisconnect="http://www.whatever.com/uvnc.php?passwd ... &id=YOURID"

the PHP/ASP script would take care of IP addresses if needed. More parameters could be added... and the repeater could be installed on a non-highavailability server while the UI could be hosted on an external ISP with high availability.

There could be:
OnServerConnect
OnServerDisconnect
OnViewerConnect
OnViewerDisconnect
OnServerViewerConnect

Where the last one could split waiting servers/viewers and those that have been matched.

Well... what do you think about all this?
B
800
800
Posts: 2338
Joined: 2009-09-09 14:05

Re: Quick Support tool based on UltraVNC 1.0.9.5

Post by B »

I'm not sure whether this would help address your concern, or whether it would just add an unneeded layer of complexity, but what about authenticating all ends with public key certificates and/or using a light weight encryption tunnel between them? In other words, bake in security?

I may be missing the point though, and if so I apologize.
Dennis.home
Posts: 1
Joined: 2011-04-28 23:15
Contact:

Re: Quick Support tool based on UltraVNC 1.0.9.5

Post by Dennis.home »

Move information on using this please...
shadowfax
40
40
Posts: 77
Joined: 2010-05-06 12:28
Location: Spain

Re: Quick Support tool based on UltraVNC 1.0.9.5

Post by shadowfax »

I think security shall work -although I haven't tested it out- since the DSM Plugin option is still there.

You need the ultravnc.ini in order for the application to get it's configuration. Keep in mind, if you're using the download URL for configuration settings the DSM setting shall be present there as well as the download will replace the original VNC settings.

The process on building the QuickSupport redistributable is the same as with single click (Create a 7Z SFX) where you would include the exe file, ultravnc.ini... and probably SCHook.dll and the DSMPlugin if you wish to use it, and any other needed file.

I still want to tweak it a little bit, therefore I'll try to see if some of them are feasible and, if so, I'll publish the full usage once it has been clearlly defined. For now, it is simple, only ultraVNC.ini is needed with the new fields set.
B
800
800
Posts: 2338
Joined: 2009-09-09 14:05

Re: Quick Support tool based on UltraVNC 1.0.9.5

Post by B »

I can understand what you're saying but don't underestimate just how clueless some of us (including me) can be about rolling our own solutions. (I know how to create a self-extracting archive with 7-Zip but have never done so.) The more brain dead easy, the better.

I'm guessing Dennis was looking for a step-by-step guide of some kind.
shadowfax
40
40
Posts: 77
Joined: 2010-05-06 12:28
Location: Spain

Re: Quick Support tool based on UltraVNC 1.0.9.5

Post by shadowfax »

I'll publish a simple guide, maybe even a simple batch file or something to help out...

However, right now, the project is in an alpha stage (Although a kind of intermidiate release between alpha and Beta has been released). Some changes are taking place and will change the configuration settings :-?

The biggest change is that I'm adding JSON capabilities both to the QuickSupport application and the Repeater. Right now the application overwrittes the whole setup file (ultravnc.ini) and that adds a little extra and unnecesary bandwidth usage (Especially on my scenario where the QuickSupport MOD is located at my ISP server). I've choosen JSON over XML as it is easier to manage with PHP (json_encode and json_decode functions). But I still have some doubts between one and the other.

This change will allow the QuickSupport module to request only what it requires (Right now the only required data from the HTTP server is the ID it will be assigned).

Right now the INI file is crucial as it will be overwritten and they both need a correct configuration or it will fail. With this change the INI file will be created once and it won't be overwritten, so it will be much easier from the administrator point of view.

Involving this change there could be even more interaction between the server and the HTTP server from which it downloads the configuration file... For example:

I request a new ID...

The HTTP server could send a response such as

Code: Select all

{ "result":"OK", "method":"GetID", "results":{"ID":"1234"}}
or

Code: Select all

{"result":"ERROR","method:"GetID","results":{"description":"Connections are not allowed at this time of day. Please connect from 09:00 to 19:00"}}
This last message would popup a MessageBox showing the description and ending the application.

This adds much more interaction between the HTTP server and the QuickSupport module.

This changes could be applied even to the original UltraVNC server with some precompiler conditions and just adding a little bit of code to it.

Lets say it would be kind of a ACL powered by PHP/ASP/PERL/Whateverscript... interacting with C/C++ from the server itself.

Right now I'm testing all this to see if it can work ok. :)
shadowfax
40
40
Posts: 77
Joined: 2010-05-06 12:28
Location: Spain

Re: Quick Support tool based on UltraVNC 1.0.9.5

Post by shadowfax »

Latelly I had no time to code.... and now I've bumped into another thing I would like to get some feedback from you:

Since I'm probablly going into XML for language resources I though it could be nice having the settings in an XML file aswell. I've used libxml2 on my initial attempt. The code used to load a configuration string is:

Code: Select all

void
XmlFile::ReadString(char *key1, char *key2, char *value, int valuesize) 
{
	xmlXPathContextPtr xpathCtx;
	xmlXPathObjectPtr xpathObj;
	xmlChar xpathExpr[MAX_PATH];

	if( m_Xml == NULL )
	{
		vnclog.Print(LL_INTERR, VNCLOG("XML configuration file could not be found.\n"));
		return;
	}

	// ToDo: Expresion should be built here and assert later.
	*xpathExpr = '\0';
	strcpy((char*)xpathExpr, "/config/");
	strcat((char*)xpathExpr, key1);
	strcat((char*)xpathExpr, "/");
	strcat((char*)xpathExpr, key2);
	//assert(xpathExpr);


	/* Create xpath evaluation context */
	xpathCtx = xmlXPathNewContext(m_Xml);

	if(xpathCtx == NULL) {
        vnclog.Print(LL_INTERR, VNCLOG("Unable to create new XPath context\n"));
		//xmlFreeDoc(doc); 
		return;
    }

	/* Evaluate xpath expression */
	xpathObj = xmlXPathEvalExpression(xpathExpr, xpathCtx);
	if(xpathObj == NULL) {
		vnclog.Print(LL_INTERR, VNCLOG("Unable to evaluate xpath expression \"%s\"\n"), xpathExpr);
		xmlXPathFreeContext(xpathCtx); 
		//xmlFreeDoc(doc); 
		return;
    }

	if( xpathObj->nodesetval->nodeNr == 1 )
	{
		xmlNode * node = xpathObj->nodesetval->nodeTab[0];

		if( node->type == XML_ELEMENT_NODE)
		{ 
			xmlChar * val;
			val = xmlGetProp(node, (xmlChar*)"value");
			if( val == NULL )
				strcpy(value, "");
			else
				strcpy(value, (char*)val);
		} else {
			strcpy(value, "");
		}

		/* Free node */
		xmlFreeNode(node);

	} else {
		strcpy(value, "");
	}

	 /* Cleanup */
	xmlXPathFreeObject(xpathObj);
	xmlXPathFreeContext(xpathCtx); 
}
I'll probably remove key1 and key2 leaving only a variable called xpath... However I wanted to know what structure you would prefere on the configuration file. Here are some examples:

Code: Select all

<?xml version="1.0" encoding="ISO-8859-1"?>
<config>
	<admin>
		<DebugMode value="0" />
	</admin>
</config>

Code: Select all

<?xml version="1.0" encoding="ISO-8859-1"?>
<config>
	<admin>
		<conf name="DebugMode" value="0" />
	</admin>
</config>

Code: Select all

<?xml version="1.0" encoding="ISO-8859-1"?>
<config>
	<section name="admin">
		<conf name="DebugMode" value="0" />
	</admin>
</config>
...or any other format of the kind...

I've only listed one section of the configuration file with one of it's entries in order not to increase the text in this message.

NOTE: I must add some extra code in order to return an empty string on errors... ReadInt, or any other function would use ReadString and then check the values it retrieves...


Best regards
expertizeti
Posts: 1
Joined: 2011-06-01 17:01

Re: Quick Support tool based on UltraVNC 1.0.9.5

Post by expertizeti »

Hi you can post the source code ?

or what program i have to use to open the quicksupport.exe and see the source code ?

i like very much

wait you asap thanks a lot
dxdemetriou
Posts: 5
Joined: 2011-01-24 19:11

Re: Quick Support tool based on UltraVNC 1.0.9.5

Post by dxdemetriou »

I need the source code too if it's possible.
I like the idea of generating and showing password together with id.
Is it based on AutoIt?

Thanks.
voodoo3dfdx
Posts: 4
Joined: 2010-04-19 02:48

Re: Quick Support tool based on UltraVNC 1.0.9.5

Post by voodoo3dfdx »

Anyone have this app ? i look for app and the sourcecode, tnks a lot
User avatar
Robin
40
40
Posts: 122
Joined: 2008-06-26 10:12

Re: Quick Support tool based on UltraVNC 1.0.9.5

Post by Robin »

dxdemetriou wrote:I need the source code too if it's possible.
I like the idea of generating and showing password together with id.
Is it based on AutoIt?

Thanks.
...doesn't look like AutoIt coding...
Computer Specialist
Computer Forensic Analyst
Programmer (Utilities)
Musician : Guitarist ,Vocalist , Harmonica , Music Composer/Writer
sakal
Posts: 5
Joined: 2010-06-25 08:07
Location: Slovakia

Re: Quick Support tool based on UltraVNC 1.0.9.5

Post by sakal »

Can you reupload actual version? Link in Topic is not working anymore...
kof
Posts: 2
Joined: 2013-01-13 17:37

Re: Quick Support tool based on UltraVNC 1.0.9.5

Post by kof »

shadowfax, can you upload again, please? Link in the top is broken...
voodoo3dfdx
Posts: 4
Joined: 2010-04-19 02:48

Re: Quick Support tool based on UltraVNC 1.0.9.5

Post by voodoo3dfdx »

Please, upload again,tks a lot ^^
shadowfax
40
40
Posts: 77
Joined: 2010-05-06 12:28
Location: Spain

Re: Quick Support tool based on UltraVNC 1.0.9.5

Post by shadowfax »

Sorry for this late reply...

I usually do some work on uVNC on my summer hollidays and if I have a backup copy it must be on that computer... but not sure I kept a backup copy there :(

It shouldn't be hard to rewrite the whole thing again but on my office computer I have VS2010 and the new version of uVNC doesn't seem to compile out-of-the-box and don't have too much time to fiddle with it to get it to compile and modify it. If someone has been able to compile it with VS2010 it would be great to have a step-by-step guide on the changes and this time I'll try to upload the modified quick support to my github account.

Sorry for any inconvinience

EDIT I've managed to find a copy of VS2008 and started to take some fat out for Remote Support to version 1.1.9.3. If would be great if someone would want to help with it.

By taking some fat out I mean... Registry settings should not be used on Remote Support, no need for incoming connections, no need for HTTP/Java, etc... All this is done through conditional compilation so you may still compile the full UltraVNC. Taking away this functions makes the server a lighter for downloads, and improves performance a little as not so many things must be checked.

At the current stage I'm only taking fat away...
Post Reply