Index: nxcl-0.9/lib/notQt.cpp =================================================================== --- nxcl-0.9.orig/lib/notQt.cpp 2008-10-10 20:09:53.000000000 +0200 +++ nxcl-0.9/lib/notQt.cpp 2008-10-10 20:10:26.000000000 +0200 @@ -443,6 +443,9 @@ void notQtUtilities::splitString (string& line, char token, vector& rtn) { + if (line.size() < 1) + return; + rtn.clear(); unsigned int i=0; while (i < (line.size())-1) { @@ -459,6 +462,9 @@ void notQtUtilities::splitString (string& line, char token, list& rtn) { + if (line.size() < 1) + return; + rtn.clear(); unsigned int i=0; while (i < (line.size())-1) { Index: nxcl-0.9/lib/nxclientlib.cpp =================================================================== --- nxcl-0.9.orig/lib/nxclientlib.cpp 2008-10-10 20:09:53.000000000 +0200 +++ nxcl-0.9/lib/nxclientlib.cpp 2008-10-10 20:10:26.000000000 +0200 @@ -152,6 +152,8 @@ this->sessionRunning = false; this->proxyData.encrypted = false; this->password = false; + this->useHttpProxy = false; + this->httpProxyAuthenticated = false; dbgln ("In NXClientLib constructor"); @@ -172,6 +174,22 @@ dbgln ("In NXClientLib destructor"); } +void NXClientLib::setProxy (string proxyHost, + string proxyUser, + string proxyPass, + int proxyPort) +{ + useHttpProxy = true; + httpProxyHost = proxyHost; + + if (!httpProxyUser.empty()) + httpProxyAuthenticated = true; + + httpProxyUser = proxyUser; + httpProxyPass = proxyPass; + httpProxyPort = proxyPort; +} + void NXClientLib::invokeNXSSH (string publicKey, string serverHost, bool encryption, string key, int port) { @@ -228,6 +246,21 @@ arguments.push_back ("-oRhostsRSAAuthentication no"); arguments.push_back ("-oPubkeyAuthentication yes"); + // Proxy support + + if (useHttpProxy) { + arguments.push_back("-P"); + + argtmp.str(""); + + if (httpProxyAuthenticated) + argtmp << this->httpProxyUser << ":" << this->httpProxyPass << "@"; + + argtmp << this->httpProxyHost << ":" << this->httpProxyPort; + + arguments.push_back(argtmp.str()); + } + if (encryption == true) { arguments.push_back("-B"); session.setEncryption (true); @@ -785,7 +818,7 @@ nxwinArguments.push_back(fontPath.str()); nxwinArguments.push_back("-name"); - nxwinArguments.push_back("NXWin"); + nxwinArguments.push_back("DoD"); nxwinArguments.push_back(":0"); nxwinArguments.push_back("-screen"); Index: nxcl-0.9/lib/nxclientlib.h =================================================================== --- nxcl-0.9.orig/lib/nxclientlib.h 2008-10-10 20:09:53.000000000 +0200 +++ nxcl-0.9/lib/nxclientlib.h 2008-10-10 20:10:26.000000000 +0200 @@ -178,6 +178,21 @@ int port = 22); /*! + * Set proxy server settings for nxssh. + * + * \param proxyHost is the hostname + * + * \param proxyUser is the username (null if not necessary) + * + * \param proxyPass is the password + * + * \param proxyPort is the port + */ + void setProxy (string proxyHost, + string proxyUser, + string proxyPass, + int proxyPort); + /*! * Overloaded to give callback data on write. * * Writes data to this->nxsshProcess stdin and also @@ -453,6 +468,31 @@ * Password for the connection */ string nxpass; + /*! + * Whether to use an http proxy for nxssh + */ + bool useHttpProxy; + /*! + * A proxy server to be used with nxssh + */ + string httpProxyHost; + /*! + * Whether to use authentication + */ + bool httpProxyAuthenticated; + /*! + * Username for the http proxy + */ + string httpProxyUser; + /*! + * Password for the http proxy + */ + string httpProxyPass; + /*! + * Port for the http proxy + */ + int httpProxyPort; + }; } // namespace Index: nxcl-0.9/lib/nxdata.h =================================================================== --- nxcl-0.9.orig/lib/nxdata.h 2008-10-10 20:09:53.000000000 +0200 +++ nxcl-0.9/lib/nxdata.h 2008-10-10 20:10:26.000000000 +0200 @@ -1,12 +1,12 @@ /*************************************************************************** - nxdata.h - ------------------- - begin : Wednesday 9th August 2006 - modifications : July 2007 - copyright : (C) 2006 by George Wright - modifications : (C) 2007 Embedded Software Foundry Ltd. (U.K.) - : Author: Sebastian James - email : seb@esfnet.co.uk, gwright@kde.org + nxdata.h + ------------------- +begin : Wednesday 9th August 2006 +modifications : July 2007 +copyright : (C) 2006 by George Wright +modifications : (C) 2007 Embedded Software Foundry Ltd. (U.K.) +: Author: Sebastian James +email : seb@esfnet.co.uk, gwright@kde.org ***************************************************************************/ /*************************************************************************** @@ -43,77 +43,83 @@ namespace nxcl { - struct NXConfigData { - string serverHost; - int serverPort; - string sessionUser; - string sessionPass; - string sessionName; - string sessionType; - int cache; - int images; - string linkType; - bool render; - string backingstore; - int imageCompressionMethod; - int imageCompressionLevel; - string geometry; - string keyboard; - string kbtype; - bool media; - string agentServer; - string agentUser; - string agentPass; - int cups; - string key; - bool encryption; - bool fullscreen; - bool virtualDesktop; - string customCommand; - }; - - struct NXSessionData { - string sessionName; - string sessionType; - int cache; - int images; - string linkType; - bool render; - string backingstore; - int imageCompressionMethod; - int imageCompressionLevel; - string geometry; - string keyboard; - string kbtype; - bool media; - string agentServer; - string agentUser; - string agentPass; - int cups; - string id; - string key; - bool encryption; - bool fullscreen; - bool virtualDesktop; - string customCommand; - bool suspended; - int xRes; - int yRes; - int depth; - int display; - bool terminate; - }; - - struct NXResumeData { - int display; - string sessionType; - string sessionID; - string options; - int depth; - string screen; - string available; - string sessionName; - }; + struct NXConfigData { + string serverHost; + int serverPort; + string sessionUser; + string sessionPass; + string sessionName; + string sessionType; + int cache; + int images; + string linkType; + bool render; + string backingstore; + int imageCompressionMethod; + int imageCompressionLevel; + string geometry; + string keyboard; + string kbtype; + bool media; + string agentServer; + string agentUser; + string agentPass; + int cups; + string key; + bool encryption; + bool fullscreen; + bool virtualDesktop; + string customCommand; + bool useProxy; + string proxyHost; + int proxyPort; + bool proxyAuthenticated; + string proxyUser; + string proxyPass; + }; + + struct NXSessionData { + string sessionName; + string sessionType; + int cache; + int images; + string linkType; + bool render; + string backingstore; + int imageCompressionMethod; + int imageCompressionLevel; + string geometry; + string keyboard; + string kbtype; + bool media; + string agentServer; + string agentUser; + string agentPass; + int cups; + string id; + string key; + bool encryption; + bool fullscreen; + bool virtualDesktop; + string customCommand; + bool suspended; + int xRes; + int yRes; + int depth; + int display; + bool terminate; + }; + + struct NXResumeData { + int display; + string sessionType; + string sessionID; + string options; + int depth; + string screen; + string available; + string sessionName; + }; } // namespace #endif