This is an automated email from the git hooks/post-receive script. x2go pushed a change to branch master in repository x2goclient. from 1175599 {x2goclient,help,onmainwindow}.cpp: implement new --bypass-cleanup-helper parameter. new 65e2b83 x2gokdrive support for X2GoClient. new abe20a5 fix authentification on http broker when sending event. new 73ff62c Fix resuming sessions on multiply servers. new 9c19ae3 Initualizing sessionId, command and display for direct RDP to complay with standard sessions. new b956df0 Direct RDP sesion send to broker event CONNECTED instead of CONNECTING at start of RDP client. new af117bb fixing setting correct session command when resuming the session. new 416a233 don't exit if sending event to http broker is failed. The 7 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Summary of changes: src/InteractionDialog.cpp | 2 + src/httpbrokerclient.cpp | 33 ++++++- src/httpbrokerclient.h | 2 + src/onmainwindow.cpp | 231 ++++++++++++++++++++++++++++++++++++++++------ src/onmainwindow.h | 3 +- src/sessionexplorer.cpp | 2 +- src/sessionwidget.cpp | 20 ++-- src/sessionwidget.h | 1 + src/wapi.cpp | 1 + 9 files changed, 258 insertions(+), 37 deletions(-) -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository x2goclient. commit 65e2b8304f3f11f5bd094e28b65afebb444a4813 Author: Oleksandr Shneyder <o.shneyder@phoca-gmbh.de> Date: Fri Jan 18 11:38:47 2019 +0100 x2gokdrive support for X2GoClient. --- src/InteractionDialog.cpp | 2 + src/onmainwindow.cpp | 169 +++++++++++++++++++++++++++++++++++++++++----- src/onmainwindow.h | 2 +- src/sessionexplorer.cpp | 2 +- src/sessionwidget.cpp | 20 ++++-- src/sessionwidget.h | 1 + src/wapi.cpp | 1 + 7 files changed, 172 insertions(+), 25 deletions(-) diff --git a/src/InteractionDialog.cpp b/src/InteractionDialog.cpp index 6ab5d45..d0efa3f 100644 --- a/src/InteractionDialog.cpp +++ b/src/InteractionDialog.cpp @@ -29,6 +29,8 @@ #ifndef Q_OS_LINUX #if QT_VERSION < 0x050000 #include <QPlastiqueStyle> +#else +#include <QStyleFactory> #endif #endif diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index 7c7c1ba..1982757 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -18,6 +18,9 @@ #include "onmainwindow_privat.h" #include "help.h" + +#include <QStyleFactory> + void x2goSession::operator = ( const x2goSession& s ) { agentPid=s.agentPid; @@ -31,6 +34,7 @@ void x2goSession::operator = ( const x2goSession& s ) sndPort=s.sndPort; fsPort=s.fsPort; status=s.status; + sessionType=s.sessionType; } bool ONMainWindow::portable=false; @@ -3998,6 +4002,10 @@ x2goSession ONMainWindow::getSessionFromString ( const QString& string ) s.sessionType=x2goSession::ROOTLESS; if ( st=='S' ) s.sessionType=x2goSession::SHADOW; + if ( st=='K' ) + { + s.sessionType=x2goSession::KDRIVE; + } QString command=cmdinfo.mid ( 1 ); if ( command.length() >0 ) s.command=command; @@ -4071,6 +4079,7 @@ void ONMainWindow::startNewSession() QString user=getCurrentUname(); QString pack; + bool kdrive=false; bool fullscreen; int height; int width; @@ -4214,6 +4223,10 @@ void ONMainWindow::startNewSession() { command=st->setting()->value ( sid+"/command", ( QVariant ) defaultCmd ).toString(); + + kdrive=st->setting()->value ( sid+"/kdrive", + ( QVariant ) false ).toBool(); + host=st->setting()->value ( sid+"/host", ( QVariant ) @@ -4308,7 +4321,12 @@ void ONMainWindow::startNewSession() } localDisplayNumber=disp; } - if (! startXorgOnStart) + if(kdrive) + { + x2goDebug<<"KDRIVE session don't start X Server"; + slotSetWinServersReady(); + } + if (! startXorgOnStart && ! kdrive) startXOrg(); #endif delete st; @@ -4319,6 +4337,7 @@ void ONMainWindow::startNewSession() runRemoteCommand=false; } + resumingSession.server=host; if (defaultLayout.size()>0) @@ -4413,6 +4432,8 @@ void ONMainWindow::startNewSession() sessTypeStr="P "; command="PUBLISHED"; } + if(kdrive) + sessTypeStr="K "; QString dpiEnv; QString xdmcpEnv; QString xinerama_env = "X2GO_XINERAMA="; @@ -4625,7 +4646,12 @@ void ONMainWindow::resumeSession ( const x2goSession& s ) xorgMode=SAPP; xorgWidth=QString::number(width); xorgHeight=QString::number(height); - if (! startXorgOnStart) + if(s.sessionType == x2goSession::KDRIVE) + { + x2goDebug<<"KDRIVE session, don't start X-Server"; + slotSetWinServersReady(); + } + if (! startXorgOnStart && (s.sessionType != x2goSession::KDRIVE)) startXOrg(); // #endif #else /* defined (Q_OS_WIN) */ @@ -4839,6 +4865,9 @@ void ONMainWindow::selectSession ( QStringList& sessions ) type=tr ( "single application" ); if ( s.sessionType==x2goSession::SHADOW ) type=tr ( "shadow session" ); + if ( s.sessionType==x2goSession::KDRIVE ) + type=tr ( "X2GoKDrive session" ); + item= new QStandardItem ( type ); model->setItem ( row,S_TYPE,item ); @@ -5357,6 +5386,7 @@ void ONMainWindow::slotRetResumeSess ( bool result, QString host; bool sound=true; + bool kdrive=false; int sndSystem=PULSE; QString sndPort; #if !defined (Q_OS_WIN) && !defined (Q_OS_DARWIN) @@ -5395,6 +5425,8 @@ void ONMainWindow::slotRetResumeSess ( bool result, else st= new X2goSettings(config.iniFile,QSettings::IniFormat); + kdrive=st->setting()->value ( sid+"/kdrive", + ( QVariant ) false ).toBool(); sound=st->setting()->value ( sid+"/sound", ( QVariant ) true ).toBool(); QString sndsys=st->setting()->value ( @@ -5473,6 +5505,10 @@ void ONMainWindow::slotRetResumeSess ( bool result, sString.replace ( '\n','|' ); host=resumingSession.server; resumingSession=getNewSessionFromString ( sString ); + if(kdrive) + { + resumingSession.sessionType=x2goSession::KDRIVE; + } resumingSession.server=host; resumingSession.crTime=QDateTime::currentDateTime().toString ( "dd.MM.yy HH:mm:ss" ); @@ -5505,6 +5541,15 @@ void ONMainWindow::slotRetResumeSess ( bool result, } else { + + if(resumingSession.sessionType==x2goSession::KDRIVE) + { + qDebug()<<"resuming kdrive session"; + } + else + { + qDebug()<<"resuming normal session"; + } host=resumingSession.server; QStringList outputLines=output.split("\n",QString::SkipEmptyParts); foreach(QString line,outputLines) @@ -5830,6 +5875,8 @@ void ONMainWindow::slotTunnelOk(int) xmodExecuted=false; + qDebug()<<"RESUMING SESSION is KDRIVE: "<<(resumingSession.sessionType== x2goSession::KDRIVE); + nxproxy=new QProcess; proxyErrString=""; QStringList env = QProcess::systemEnvironment(); @@ -5853,11 +5900,16 @@ void ONMainWindow::slotTunnelOk(int) // On Mac OS X, we want to make sure that DISPLAY is set to a proper value, // but at the same time don't want to set the value ourselves but keep // the provided one. - QString disp=getXDisplay(); - if ( disp==QString::null ) + + QString disp="0"; + if(resumingSession.sessionType!= x2goSession::KDRIVE) { - //slotProxyerror ( QProcess::FailedToStart ); - return; + disp=getXDisplay(); + if ( disp==QString::null ) + { + //slotProxyerror ( QProcess::FailedToStart ); + return; + } } #endif // Q_OS_WIN || Q_OS_DARWIN #if defined ( Q_OS_WIN ) @@ -5911,6 +5963,7 @@ void ONMainWindow::slotTunnelOk(int) QString proxyCmd="nxproxy -S nx/nx,options="+dirpath+"/options:"+ resumingSession.display; + #ifdef Q_OS_DARWIN //run nxproxy from bundle QDir dir ( appDir ); @@ -5919,9 +5972,90 @@ void ONMainWindow::slotTunnelOk(int) proxyCmd="\""+dir.absolutePath() +"/\""+proxyCmd; #endif //Q_OS_DARWIN - x2goDebug<<"Starting NX proxy, command: " + proxyCmd; - nxproxy->start ( proxyCmd ); + if(resumingSession.sessionType==x2goSession::KDRIVE) + { + bool randr=false; + bool fs=false; + QString width; + QString height; + bool multidisp=false; + QString dispNumber="1"; + + if (!embedMode ) + { + if (!useLdap) + { + X2goSettings *st; + QString sid; + if ( !embedMode ) { + if (!(sessionExplorer->getLastSession())) { + x2goDebug << "No session selected, not searching for proxy window."; + return; + } + + sid=sessionExplorer->getLastSession()->id(); + } + else + sid="embedded"; + + if (brokerMode) + st=new X2goSettings(config.iniFile,QSettings::IniFormat); + else + st= new X2goSettings( "sessions" ); + randr=st->setting()->value ( sid+"/xinerama", + ( QVariant ) defaultXinerama ).toBool(); + fs=st->setting()->value ( sid+"/fullscreen", ( QVariant ) defaultFullscreen).toBool(); + + width=st->setting()->value ( sid+"/width", ( QVariant ) "800").toString(); + height=st->setting()->value ( sid+"/height", ( QVariant ) "600").toString(); + + + if (st->setting()->value ( sid+"/multidisp", ( QVariant ) false ).toBool()) + { + dispNumber=st->setting()->value ( sid+"/display", (QVariant ) "1").toString(); + multidisp=st->setting()->value ( sid+"/multidisp", ( QVariant ) false ).toBool(); + } + delete st; + } + } + + QStringList options; +#ifdef Q_OS_WIN + //restore real path, as we not using cygwin for x2gokdriveclient + nxroot=homeDir +"/.x2go"; + dirpath=nxroot+"/S-"+resumingSession.sessionId; +#endif + proxyCmd="x2gokdriveclient"; + options<<"--connect"<<"localhost"<<"--port"<<localGraphicPort<<"--title"<<resumingSession.sessionId<<"-S"<<"nx/nx,options="+dirpath+ + "/options:"+resumingSession.display; + if(randr) + { + options<<"--randr"; + } + if(fs) + { + options<<"--fs"; + } + else + if(multidisp) + { + options<<"--screen"<<dispNumber; + } + else + { + options<<"--width"<<width<<"--height"<<height; + } + + x2goDebug<<"Starting NX proxy, command: " + proxyCmd<<options; + nxproxy->start ( proxyCmd, options ); + } + else + { + x2goDebug<<"Starting NX proxy, command: " + proxyCmd; + nxproxy->start ( proxyCmd); + } + proxyRunning=true; if(brokerMode) { @@ -11116,6 +11250,7 @@ bool ONMainWindow::startSshd(ONMainWindow::key_types key_type) void ONMainWindow::setProxyWinTitle() { + if (embedMode) return; @@ -11378,7 +11513,7 @@ void ONMainWindow::slotFindProxyWin() setProxyWinTitle(); proxyWinTimer->stop(); - if (!embedMode) + if (!embedMode && !(resumingSession.sessionType==x2goSession::KDRIVE)) { if (!useLdap) { @@ -11446,7 +11581,7 @@ void ONMainWindow::slotFindProxyWin() #ifdef Q_OS_WIN x2goDebug<<"Maximize proxy window: "<<maximizeProxyWin; - if ( !startEmbedded ) + if ( !startEmbedded &&!(resumingSession.sessionType==x2goSession::KDRIVE)) { if ( maximizeProxyWin ) { @@ -12088,7 +12223,7 @@ void ONMainWindow::initPassDlg() cancel->setEnabled ( false ); #ifdef Q_OS_WIN QRect r; - wapiWindowRect ( ok->winId(),r ); + wapiWindowRect ( (HWND)ok->winId(),r ); #endif } if (defaultLayout.size()>1) @@ -12277,8 +12412,8 @@ void ONMainWindow::initStatusDlg() if ( embedMode ) { QRect r; - wapiWindowRect ( sbAdv->winId(),r ); - wapiWindowRect ( stInfo->verticalScrollBar ()->winId(),r ); + wapiWindowRect ( (HWND)sbAdv->winId(),r ); + wapiWindowRect ( (HWND)stInfo->verticalScrollBar ()->winId(),r ); } #endif @@ -12531,10 +12666,10 @@ void ONMainWindow::initSelectSessDlg() if ( embedMode ) { QRect r; - wapiWindowRect ( sOk->winId(),r ); - wapiWindowRect ( sessTv->verticalScrollBar ()->winId(),r ); - wapiWindowRect ( sessTv->horizontalScrollBar ()->winId(),r ); - wapiWindowRect ( sessTv->header ()->viewport()->winId(),r ); + wapiWindowRect ( (HWND)sOk->winId(),r ); + wapiWindowRect ( (HWND)sessTv->verticalScrollBar ()->winId(),r ); + wapiWindowRect ( (HWND)sessTv->horizontalScrollBar ()->winId(),r ); + wapiWindowRect ( (HWND)sessTv->header ()->viewport()->winId(),r ); } #endif diff --git a/src/onmainwindow.h b/src/onmainwindow.h index 1896b1a..345f2e6 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -150,7 +150,7 @@ struct x2goSession bool published; int colorDepth; bool fullscreen; - enum {DESKTOP,ROOTLESS,SHADOW} sessionType; + enum {DESKTOP,ROOTLESS,SHADOW, KDRIVE} sessionType; QString command; void operator = ( const x2goSession& s ); }; diff --git a/src/sessionexplorer.cpp b/src/sessionexplorer.cpp index fe884f6..ec29106 100644 --- a/src/sessionexplorer.cpp +++ b/src/sessionexplorer.cpp @@ -237,7 +237,7 @@ void SessionExplorer::slotCreateDesktopIcon ( SessionButton* bt ) "link.WorkingDirectory = \""<<workDir<<"\"\n"<< "link.Save\n"; file.close(); - system ( scrname.toAscii() ); + system ( scrname.toLatin1() ); QFile::remove ( scrname ); #endif } diff --git a/src/sessionwidget.cpp b/src/sessionwidget.cpp index e72e30e..4ead112 100644 --- a/src/sessionwidget.cpp +++ b/src/sessionwidget.cpp @@ -207,6 +207,7 @@ SessionWidget::SessionWidget ( bool newSession, QString id, ONMainWindow * mw, QHBoxLayout* cmdLay=new QHBoxLayout (); cmdLay->addWidget ( new QLabel ( tr ( "Session type:" ),this ) ); #endif + cbKdrive=new QCheckBox(tr("Run in X2GoKDrive (experimental)")); sessBox=new QComboBox ( deskSess ); cmd=new QLineEdit ( deskSess ); cmdCombo=new QComboBox ( deskSess ); @@ -228,14 +229,15 @@ SessionWidget::SessionWidget ( bool newSession, QString id, ONMainWindow * mw, sessBox->addItem ( tr ( "Custom desktop" ) ); sessBox->addItem ( tr ( "Single application" ) ); sessBox->addItem ( tr ( "Published applications" ) ); - cmdLay->addWidget ( sessBox,0,1,Qt::AlignLeft ); + cmdLay->addWidget ( cbKdrive,0,1,Qt::AlignLeft ); + cmdLay->addWidget ( sessBox,1,1,Qt::AlignLeft ); leCmdIp=new QLabel ( tr ( "Command:" ),deskSess ); pbAdvanced=new QPushButton ( tr ( "Advanced options..." ),deskSess ); - cmdLay->addWidget ( leCmdIp,0,2 ); + cmdLay->addWidget ( leCmdIp,1,2 ); cmdLay->setColumnStretch(6,1); - cmdLay->addWidget ( cmd ,0,3); - cmdLay->addWidget ( cmdCombo,0,4 ); - cmdLay->addWidget ( pbAdvanced ,0,5); + cmdLay->addWidget ( cmd ,1,3); + cmdLay->addWidget ( cmdCombo,1,4 ); + cmdLay->addWidget ( pbAdvanced ,1,5); cmdCombo->setSizePolicy ( QSizePolicy::Expanding, QSizePolicy::Preferred ); cmdCombo->hide(); @@ -254,7 +256,7 @@ SessionWidget::SessionWidget ( bool newSession, QString id, ONMainWindow * mw, sessLay->addWidget ( deskSess ); #ifdef Q_OS_LINUX cbDirectRDP=new QCheckBox(tr("Direct RDP connection"), deskSess); - cmdLay->addWidget(cbDirectRDP,1,0,1,6); + cmdLay->addWidget(cbDirectRDP,2,0,1,6); cbDirectRDP->hide(); connect(cbDirectRDP,SIGNAL(clicked()), this, SLOT(slot_rdpDirectClicked())); #endif @@ -799,6 +801,9 @@ void SessionWidget::readConfig() sessName->selectAll(); sessName->setFocus(); } + + cbKdrive->setChecked(st.setting()->value (sessionId+"/kdrive", false).toBool() ); + #ifdef Q_OS_LINUX slot_rdpDirectClicked(); #endif @@ -811,6 +816,7 @@ void SessionWidget::setDefaults() sessBox->setCurrentIndex ( KDE ); cmdCombo->clear(); cmdCombo->addItem ( "" ); + cbKdrive->setChecked(false); cmdCombo->addItems ( mainWindow->transApplicationsNames() ); cbAutoLogin->setChecked(false); cbKrbLogin->setChecked(false); @@ -883,6 +889,8 @@ void SessionWidget::saveSettings() st.setting()->setValue(sessionId+"/directrdp",( QVariant ) cbDirectRDP->isChecked()); st.setting()->setValue(sessionId+"/directxdmcp",( QVariant ) cbDirectRDP->isChecked()); #endif + + st.setting()->setValue(sessionId+"/kdrive",( QVariant ) cbKdrive->isChecked()); QString command; bool rootless=false; bool published=false; diff --git a/src/sessionwidget.h b/src/sessionwidget.h index bbc940e..294885a 100644 --- a/src/sessionwidget.h +++ b/src/sessionwidget.h @@ -103,6 +103,7 @@ private: QCheckBox* cbProxySamePass; QCheckBox* cbProxyAutologin; QCheckBox* cbProxyKrbLogin; + QCheckBox* cbKdrive; QLineEdit* proxyKey; QPushButton* pbOpenProxyKey; QLabel* proxyKeyLabel; diff --git a/src/wapi.cpp b/src/wapi.cpp index b5d485b..182ffc2 100644 --- a/src/wapi.cpp +++ b/src/wapi.cpp @@ -24,6 +24,7 @@ #ifdef Q_OS_WIN #include <winsock2.h> #include <windows.h> +#include <winerror.h> #include <sddl.h> #include "wapi.h" #include "x2gologdebug.h" -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository x2goclient. commit 73ff62c43d1db34a59746b0cc8575f521462f676 Author: Oleksandr Shneyder <o.shneyder@phoca-gmbh.de> Date: Wed Apr 3 17:37:46 2019 +0200 Fix resuming sessions on multiply servers. --- src/httpbrokerclient.cpp | 27 +++++++++++++++++++++--- src/httpbrokerclient.h | 2 ++ src/onmainwindow.cpp | 55 ++++++++++++++++++++++++++++++++++++++++++------ src/onmainwindow.h | 1 + 4 files changed, 75 insertions(+), 10 deletions(-) diff --git a/src/httpbrokerclient.cpp b/src/httpbrokerclient.cpp index b9c0337..fc2cee3 100644 --- a/src/httpbrokerclient.cpp +++ b/src/httpbrokerclient.cpp @@ -663,6 +663,7 @@ void HttpBrokerClient::slotRequestFinished ( QNetworkReply* reply ) void HttpBrokerClient::parseSession(QString sinfo) { config->sessiondata=""; + suspendedSession.clear(); x2goDebug<<"Starting parser."; QStringList lst=sinfo.split("SERVER:",QString::SkipEmptyParts); int keyStartPos=sinfo.indexOf("-----BEGIN DSA PRIVATE KEY-----"); @@ -687,11 +688,31 @@ void HttpBrokerClient::parseSession(QString sinfo) if (sinfo.indexOf("SESSION_INFO")!=-1) { QStringList lst=sinfo.split("SESSION_INFO:",QString::SkipEmptyParts); - config->sessiondata=lst[1]; - x2goDebug<<"Session data: "<<config->sessiondata<<"\n"; + //config->sessiondata=lst[1]; + x2goDebug<<"Session data: "<<lst[1]<<"\n"; + suspendedSession=lst[1].trimmed().split ( '\n', QString::SkipEmptyParts ); + mainWindow->selectSession(suspendedSession); + } + else + { + emit sessionSelected(); } x2goDebug<<"Parsing has finished."; - emit sessionSelected(); +} + +void HttpBrokerClient::resumeSession(const QString& id, const QString& server) +{ + x2goDebug<<"Resuming session with id:"<<id<<"on:"<<server; + foreach (QString sline, suspendedSession) + { + if(sline.indexOf(id)!=-1) + { + config->sessiondata=sline; + config->serverIp=server; + emit sessionSelected(); + break; + } + } } diff --git a/src/httpbrokerclient.h b/src/httpbrokerclient.h index 73ae2ef..d01c734 100644 --- a/src/httpbrokerclient.h +++ b/src/httpbrokerclient.h @@ -47,6 +47,7 @@ public: void closeSSHInteractionDialog(); void sendEvent(const QString& ev, const QString& id, const QString& server, const QString& client, const QString& login, const QString& cmd, const QString& display, const QString& start, uint connectionTime); + void resumeSession(const QString& id, const QString& server); private: QNetworkAccessManager* http; QNetworkRequest* netRequest; @@ -63,6 +64,7 @@ private: QTime requestTime; bool sshBroker; SshMasterConnection* sshConnection; + QStringList suspendedSession; private: void createIniFile(const QString& raw_content); void processClientConfig(const QString& raw_content); diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index 1982757..52fde24 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -462,7 +462,6 @@ ONMainWindow::ONMainWindow ( QWidget *parent ) :QMainWindow ( parent ) saveCygnusSettings(); #endif initPassDlg(); - initSelectSessDlg(); initStatusDlg(); interDlg=new InteractionDialog(bgFrame); connect(interDlg, SIGNAL(closeInterractionDialog()), this, SLOT(slotCloseInteractionDialog())); @@ -559,6 +558,8 @@ ONMainWindow::ONMainWindow ( QWidget *parent ) :QMainWindow ( parent ) SLOT ( slotSendBrokerAlive() ) ); } + initSelectSessDlg(); + proxyWinTimer=new QTimer ( this ); connect ( proxyWinTimer, SIGNAL ( timeout() ), this, SLOT ( slotFindProxyWin() ) ); @@ -3916,6 +3917,13 @@ void ONMainWindow::slotListSessions ( bool result,QString output, QDesktopWidget wd; + //we already selected the session + if(brokerMode) + { + resumeSession(s); + return; + } + /* Check getSessionFromString for what this "invalid" string means. */ if ((s.agentPid != "invalid") && (s.status == "S") && (isColorDepthOk (wd.depth (), s.colorDepth)) @@ -3986,6 +3994,8 @@ x2goSession ONMainWindow::getSessionFromString ( const QString& string ) s.sndPort=lst[9]; if ( lst.count() >13 ) s.fsPort=lst[13]; + if (brokerMode && lst.count()>14) + s.brokerUser=lst[14]; s.colorDepth=0; if ( s.sessionId.indexOf ( "_dp" ) !=-1 ) { @@ -4848,7 +4858,10 @@ void ONMainWindow::selectSession ( QStringList& sessions ) selectedSessions.append ( s ); QStandardItem *item; - item= new QStandardItem ( s.display ); + if(!brokerMode) + item= new QStandardItem ( s.display ); + else + item= new QStandardItem ( s.brokerUser ); model->setItem ( row,S_DISPLAY,item ); if ( s.status=="R" ) @@ -4960,6 +4973,12 @@ void ONMainWindow::selectSession ( QStringList& sessions ) } } + if(brokerMode) + { + bSusp->hide(); + bTerm->hide(); + } + sessTv->setCurrentIndex ( sessTv->model()->index ( 0, 0 ) ); sessTv->setFocus(); selectSessionDlg->show(); @@ -5019,6 +5038,11 @@ void ONMainWindow::slotActivated ( const QModelIndex& index ) void ONMainWindow::slotResumeSess() { x2goSession s=getSelectedSession(); + if(brokerMode) + { + broker->resumeSession(s.sessionId, s.server); + return; + } QDesktopWidget wd; if ( isColorDepthOk ( wd.depth(),s.colorDepth ) ) { @@ -12533,8 +12557,14 @@ void ONMainWindow::initSelectSessDlg() sessTv->setRootIsDecorated ( false ); model=new QStandardItemModel ( sessionExplorer->getSessionsList()->size(), 8 ); - model->setHeaderData ( S_DISPLAY,Qt::Horizontal, - QVariant ( ( QString ) tr ( "Display" ) ) ); + if(!brokerMode) + model->setHeaderData ( S_DISPLAY,Qt::Horizontal, + QVariant ( ( QString ) tr ( "Display" ) ) ); + else + { + model->setHeaderData ( S_DISPLAY,Qt::Horizontal, + QVariant ( ( QString ) tr ( "User" ) ) ); + } model->setHeaderData ( S_STATUS,Qt::Horizontal, QVariant ( ( QString ) tr ( "Status" ) ) ); model->setHeaderData ( S_COMMAND,Qt::Horizontal, @@ -12609,7 +12639,8 @@ void ONMainWindow::initSelectSessDlg() alay->addWidget ( bShadowView ); alay->addWidget ( bShadow ); alay->addStretch(); - alay->addWidget ( bNew ); + if(!brokerMode) + alay->addWidget ( bNew ); alay->addWidget ( bCancel ); tvlay->addWidget ( sessTv ); @@ -12617,6 +12648,8 @@ void ONMainWindow::initSelectSessDlg() blay->addStretch(); blay->addWidget ( sOk ); + if(brokerMode) + blay->addWidget ( bNew ); blay->addWidget ( sCancel ); blay->addStretch(); if ( !miniMode ) @@ -12635,13 +12668,21 @@ void ONMainWindow::initSelectSessDlg() connect ( sessTv,SIGNAL ( selected ( const QModelIndex& ) ), this,SLOT ( slotActivated ( const QModelIndex& ) ) ); + connect ( sOk,SIGNAL ( clicked() ),this, SLOT ( slotResumeSess() ) ); connect ( sessTv,SIGNAL ( doubleClicked ( const QModelIndex& ) ), this,SLOT ( slotResumeDoubleClick ( const QModelIndex& ) ) ); - connect ( sOk,SIGNAL ( clicked() ),this, SLOT ( slotResumeSess() ) ); + if(!brokerMode) + { + connect ( bNew,SIGNAL ( clicked() ),this, SLOT ( slotNewSess() ) ); + } + else + { + connect ( bNew,SIGNAL ( clicked() ),broker, SIGNAL ( sessionSelected() ) ); + } + connect ( bSusp,SIGNAL ( clicked() ),this, SLOT ( slotSuspendSess() ) ); connect ( bTerm,SIGNAL ( clicked() ),this, SLOT ( slotTermSess() ) ); - connect ( bNew,SIGNAL ( clicked() ),this, SLOT ( slotNewSess() ) ); connect ( bShadow,SIGNAL ( clicked() ),this, SLOT ( slotShadowSess() ) ); diff --git a/src/onmainwindow.h b/src/onmainwindow.h index 345f2e6..2761c64 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -146,6 +146,7 @@ struct x2goSession QString grPort; QString sndPort; QString fsPort; + QString brokerUser; uint connectedSince; bool published; int colorDepth; -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository x2goclient. commit 9c19ae342f2cbec9359206e9c1006d89b8c25536 Author: Oleksandr Shneyder <o.shneyder@phoca-gmbh.de> Date: Thu Apr 4 10:52:43 2019 +0200 Initualizing sessionId, command and display for direct RDP to complay with standard sessions. --- src/onmainwindow.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index 52fde24..baa8ef6 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -3560,7 +3560,9 @@ void ONMainWindow::startDirectRDP() // x2goDebug<<"starting direct session with cmd:"<<proxyCmd; nxproxy->start ( proxyCmd ); resumingSession.server=host; - resumingSession.sessionId=sessionExplorer->getLastSession()->name(); + resumingSession.sessionId=user+"-RDP-"+QString::number(QDateTime::currentDateTime().toMSecsSinceEpoch()/1000)+"_stRRDP_dp24"; + resumingSession.display="RDP"; + resumingSession.command="RDP"; resumingSession.crTime=QDateTime::currentDateTime().toString("dd.MM.yy HH:mm:ss"); showSessionStatus(); if(brokerMode) -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository x2goclient. commit b956df0bd75558f39d223f124299149c3f01ddb6 Author: Oleksandr Shneyder <o.shneyder@phoca-gmbh.de> Date: Thu Apr 4 11:03:19 2019 +0200 Direct RDP sesion send to broker event CONNECTED instead of CONNECTING at start of RDP client. --- src/onmainwindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index baa8ef6..d4e6981 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -3567,7 +3567,7 @@ void ONMainWindow::startDirectRDP() showSessionStatus(); if(brokerMode) { - sendEventToBroker(CONNECTING); + sendEventToBroker(CONNECTED); } // QTimer::singleShot ( 30000,this,SLOT ( slotRestartProxy() ) ); -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository x2goclient. commit af117bb5fe467b60dc495d8cdac2c0a5f3e30107 Author: Oleksandr Shneyder <o.shneyder@phoca-gmbh.de> Date: Thu Apr 4 16:04:06 2019 +0200 fixing setting correct session command when resuming the session. --- src/onmainwindow.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index d4e6981..5f8a75a 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -35,6 +35,7 @@ void x2goSession::operator = ( const x2goSession& s ) fsPort=s.fsPort; status=s.status; sessionType=s.sessionType; + command=s.command; } bool ONMainWindow::portable=false; -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository x2goclient. commit 416a233c851d0000b9935c602288f2c8fbc35cfb Author: Oleksandr Shneyder <o.shneyder@phoca-gmbh.de> Date: Fri Apr 5 09:32:00 2019 +0200 don't exit if sending event to http broker is failed. --- src/httpbrokerclient.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/httpbrokerclient.cpp b/src/httpbrokerclient.cpp index fc2cee3..07986fc 100644 --- a/src/httpbrokerclient.cpp +++ b/src/httpbrokerclient.cpp @@ -627,6 +627,11 @@ void HttpBrokerClient::slotRequestFinished ( QNetworkReply* reply ) if(reply->error() != QNetworkReply::NoError) { x2goDebug<<"Broker HTTP request failed with error: "<<reply->errorString(); + if(reply == eventRequest) + { + //do not exit, just return the function + return; + } QMessageBox::critical(0,tr("Error"),reply->errorString()); emit fatalHttpError(); return; -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository x2goclient. commit abe20a5a3f88a77a7a2db2649ea3f0f855b2fca1 Author: Oleksandr Shneyder <o.shneyder@phoca-gmbh.de> Date: Tue Apr 2 14:28:01 2019 +0200 fix authentification on http broker when sending event. --- src/httpbrokerclient.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/httpbrokerclient.cpp b/src/httpbrokerclient.cpp index 02a69c9..b9c0337 100644 --- a/src/httpbrokerclient.cpp +++ b/src/httpbrokerclient.cpp @@ -370,6 +370,7 @@ void HttpBrokerClient::sendEvent(const QString& ev, const QString& id, const QSt QTextStream ( &req ) << "task=clientevent&"<< "user="<<QUrl::toPercentEncoding(brokerUser)<<"&"<< + "password="<<QUrl::toPercentEncoding(config->brokerPass)<<"&"<< "sid="<<id<<"&"<< "event="<<ev<<"&"<< "server="<<QUrl::toPercentEncoding(server)<<"&"<< -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/x2goclient.git