[X2Go-Commits] [x2goclient] 02/04: Send in broker event the duration of session on client.
git-admin at x2go.org
git-admin at x2go.org
Wed Aug 22 14:48:52 CEST 2018
This is an automated email from the git hooks/post-receive script.
x2go pushed a commit to branch master
in repository x2goclient.
commit 934d0c5fc1f1296cbfffa15d398af38627e5d592
Author: Oleksandr Shneyder <o.shneyder at phoca-gmbh.de>
Date: Wed Aug 22 13:23:34 2018 +0200
Send in broker event the duration of session on client.
---
debian/changelog | 1 +
src/httpbrokerclient.cpp | 9 ++++---
src/httpbrokerclient.h | 2 +-
src/onmainwindow.cpp | 66 ++++++++++++++++++++++++++++++------------------
src/onmainwindow.h | 6 ++---
5 files changed, 51 insertions(+), 33 deletions(-)
diff --git a/debian/changelog b/debian/changelog
index 6456828..d497840 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -9,6 +9,7 @@ x2goclient (4.1.2.2-0x2go1) UNRELEASED; urgency=medium
CONNECTED, SUSPENDING, TERMINATING, FINISHED. It's not a real session state,
but rather the state of X2Go Client.
- Save session command in resumingSession.command.
+ - Send in broker event the duration of session on client.
[ Mihai Moldovan ]
* New upstream version (4.1.2.2):
diff --git a/src/httpbrokerclient.cpp b/src/httpbrokerclient.cpp
index 21cb14f..002785b 100644
--- a/src/httpbrokerclient.cpp
+++ b/src/httpbrokerclient.cpp
@@ -348,7 +348,9 @@ void HttpBrokerClient::selectUserSession(const QString& session)
}
-void HttpBrokerClient::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)
+void HttpBrokerClient::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)
{
x2goDebug<<"Called sendEvent.";
QString brokerUser=config->brokerUser;
@@ -369,6 +371,7 @@ void HttpBrokerClient::sendEvent(const QString& ev, const QString& id, const QSt
"cmd="<<QUrl::toPercentEncoding(cmd)<<"&"<<
"display="<<QUrl::toPercentEncoding(display)<<"&"<<
"start="<<QUrl::toPercentEncoding(start)<<"&"<<
+ "elapsed="<<QString::number(connectionTime)<<"&"<<
"authid="<<nextAuthId;
x2goDebug << "Sending request: "<< req.toUtf8();
QNetworkRequest request(QUrl(config->brokerurl));
@@ -381,12 +384,12 @@ void HttpBrokerClient::sendEvent(const QString& ev, const QString& id, const QSt
if (nextAuthId.length() > 0) {
sshConnection->executeCommand ( config->sshBrokerBin+" --user "+ brokerUser +" --authid "+nextAuthId+
" --task clientevent --sid \""+id+"\" --event "+ev+" --server \""+server+"\" --client \""+client+"\" --login "+"\""+
- login+"\" --cmd \""+cmd+"\" --display \""+display+"\" --start \""+start+"\"",
+ login+"\" --cmd \""+cmd+"\" --display \""+display+"\" --start \""+start+"\" --elapsed "+QString::number(connectionTime),
this,SLOT ( slotEventSent(bool,QString,int)));
} else {
sshConnection->executeCommand ( config->sshBrokerBin+" --user "+ brokerUser +
" --task clientevent --sid \""+id+"\" --event "+ev+" --server \""+server+"\" --client \""+client+"\" --login "+"\""+
- login+"\" --cmd \""+cmd+"\" --display \""+display+"\" --start \""+start+"\"",
+ login+"\" --cmd \""+cmd+"\" --display \""+display+"\" --start \""+start+"\" --elapsed "+QString::number(connectionTime),
this,SLOT ( slotEventSent(bool,QString,int)));
}
}
diff --git a/src/httpbrokerclient.h b/src/httpbrokerclient.h
index 4e0098e..24f52f3 100644
--- a/src/httpbrokerclient.h
+++ b/src/httpbrokerclient.h
@@ -46,7 +46,7 @@ public:
void testConnection();
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);
+ const QString& login, const QString& cmd, const QString& display, const QString& start, uint connectionTime);
private:
QNetworkAccessManager* http;
QNetworkRequest* netRequest;
diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp
index d530745..bf97c9e 100644
--- a/src/onmainwindow.cpp
+++ b/src/onmainwindow.cpp
@@ -3550,8 +3550,7 @@ void ONMainWindow::startDirectRDP()
showSessionStatus();
if(brokerMode)
{
- sendEventToBroker(CONNECTING,resumingSession.sessionId,resumingSession.server, resumingSession.clientIp, getCurrentUname(),
- resumingSession.command, resumingSession.display, resumingSession.crTime);
+ sendEventToBroker(CONNECTING);
}
// QTimer::singleShot ( 30000,this,SLOT ( slotRestartProxy() ) );
@@ -3997,28 +3996,52 @@ x2goSession ONMainWindow::getSessionFromString ( const QString& string )
}
-void ONMainWindow::sendEventToBroker(ONMainWindow::client_events ev, const QString& id, const QString& server, const QString& client, const QString& login, const QString& cmd, const QString& display, const QString& start)
+void ONMainWindow::sendEventToBroker(ONMainWindow::client_events ev)
{
if(!config.brokerEvents)
{
return;
}
- if(ev <= lastBrokerEvent && id == lastBrokerEventSession )
+ if(ev <= lastBrokerEvent && resumingSession.sessionId == lastBrokerEventSession )
{
return;
}
lastBrokerEvent=ev;
- lastBrokerEventSession=id;
+ lastBrokerEventSession=resumingSession.sessionId;
QString event;
switch(ev)
{
- case CONNECTING: event="CONNECTING";break;
- case CONNECTED: event="CONNECTED";break;
- case SUSPENDING: event="SUSPENDING";break;
- case TERMINATING: event="TERMINATING";break;
- case FINISHED: event="FINISHED";break;
+ case CONNECTING:
+ {
+ event="CONNECTING";
+ resumingSession.connectedSince=QDateTime::currentDateTime().toTime_t();
+ break;
+ }
+ case CONNECTED:
+ {
+ event="CONNECTED";
+ resumingSession.connectedSince=QDateTime::currentDateTime().toTime_t();
+ break;
+ }
+ case SUSPENDING:
+ {
+ event="SUSPENDING";
+ break;
+ }
+ case TERMINATING:
+ {
+ event="TERMINATING";
+ break;
+ }
+ case FINISHED:
+ {
+ event="FINISHED";
+ break;
+ }
}
- broker->sendEvent(event, id, server, client, login, cmd, display, start);
+ broker->sendEvent(event, resumingSession.sessionId,resumingSession.server, resumingSession.clientIp, getCurrentUname(),
+ resumingSession.command, resumingSession.display, resumingSession.crTime,
+ QDateTime::currentDateTime().toTime_t()-resumingSession.connectedSince);
}
@@ -5059,8 +5082,7 @@ void ONMainWindow::slotSuspendSessFromSt()
if(brokerMode)
{
- sendEventToBroker(SUSPENDING,resumingSession.sessionId,resumingSession.server, resumingSession.clientIp, getCurrentUname(),
- resumingSession.command, resumingSession.display, resumingSession.crTime);
+ sendEventToBroker(SUSPENDING);
}
#ifdef Q_OS_LINUX
if (directRDP)
@@ -5092,8 +5114,7 @@ void ONMainWindow::slotTermSessFromSt()
if(brokerMode)
{
- sendEventToBroker(TERMINATING,resumingSession.sessionId,resumingSession.server, resumingSession.clientIp, getCurrentUname(),
- resumingSession.command, resumingSession.display, resumingSession.crTime);
+ sendEventToBroker(TERMINATING);
}
x2goDebug<<"Terminating direct RDP session.";
@@ -5111,8 +5132,7 @@ void ONMainWindow::slotTermSessFromSt()
sbExp->setEnabled ( false );
if(brokerMode)
{
- sendEventToBroker(TERMINATING,resumingSession.sessionId,resumingSession.server, resumingSession.clientIp, getCurrentUname(),
- resumingSession.command, resumingSession.display, resumingSession.crTime);
+ sendEventToBroker(TERMINATING);
}
setStatStatus ( tr ( "terminating" ) );
}
@@ -5122,8 +5142,7 @@ void ONMainWindow::slotTermSessFromSt()
sbExp->setEnabled ( false );
if(brokerMode)
{
- sendEventToBroker(TERMINATING,resumingSession.sessionId,resumingSession.server, resumingSession.clientIp, getCurrentUname(),
- resumingSession.command, resumingSession.display, resumingSession.crTime);
+ sendEventToBroker(TERMINATING);
}
termSession ( resumingSession.sessionId,false );
}
@@ -5866,8 +5885,7 @@ void ONMainWindow::slotTunnelOk(int)
proxyRunning=true;
if(brokerMode)
{
- sendEventToBroker(CONNECTING,resumingSession.sessionId,resumingSession.server, resumingSession.clientIp, getCurrentUname(),
- resumingSession.command, resumingSession.display, resumingSession.crTime);
+ sendEventToBroker(CONNECTING);
}
// always search for proxy window on linux. On Windows only in window mode
@@ -6147,8 +6165,7 @@ void ONMainWindow::slotProxyFinished ( int,QProcess::ExitStatus )
{
if(brokerMode)
{
- sendEventToBroker(FINISHED,resumingSession.sessionId,resumingSession.server, resumingSession.clientIp, getCurrentUname(),
- resumingSession.command, resumingSession.display, resumingSession.crTime);
+ sendEventToBroker(FINISHED);
}
#ifdef Q_OS_DARWIN
if (modMapTimer) {
@@ -6376,8 +6393,7 @@ void ONMainWindow::slotProxyStderr()
{
if(brokerMode)
{
- sendEventToBroker(CONNECTED,resumingSession.sessionId,resumingSession.server, resumingSession.clientIp, getCurrentUname(),
- resumingSession.command, resumingSession.display, resumingSession.crTime);
+ sendEventToBroker(CONNECTED);
}
setStatStatus ( tr ( "running" ) );
if (trayEnabled)
diff --git a/src/onmainwindow.h b/src/onmainwindow.h
index a1fab35..0abf74a 100644
--- a/src/onmainwindow.h
+++ b/src/onmainwindow.h
@@ -52,7 +52,6 @@
/**
@author Oleksandr Shneyder
*/
-
class QToolButton;
class QTemporaryFile;
class QLineEdit;
@@ -147,6 +146,7 @@ struct x2goSession
QString grPort;
QString sndPort;
QString fsPort;
+ uint connectedSince;
bool published;
int colorDepth;
bool fullscreen;
@@ -910,9 +910,7 @@ private:
bool trayMinCon;
bool trayMaxDiscon;
bool trayAutoHidden;
- void sendEventToBroker(client_events ev, const QString& id, const QString& server, const QString& client,
- const QString& login, const QString& cmd,
- const QString& display, const QString& start);
+ void sendEventToBroker(client_events ev);
QString findSshKeyForServer(QString user, QString server, QString port);
void loadSettings();
void showPass ( UserButton* user );
--
Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
More information about the x2go-commits
mailing list