[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