aboutsummaryrefslogtreecommitdiff
path: root/src/DBusAPI.cpp
diff options
context:
space:
mode:
authorDaniel Teichmann <daniel.teichmann@das-netzwerkteam.de>2021-08-10 14:56:44 +0200
committerDaniel Teichmann <daniel.teichmann@das-netzwerkteam.de>2021-08-10 14:56:44 +0200
commit6ae4c71032e6b15dedd631dfff0c0c4cc4a8522a (patch)
treecd2c53b90bb13375df387414e99e6d8e7509e2a9 /src/DBusAPI.cpp
parentafeb0381f568b4c9f51296cd5de325c8c8aac3f2 (diff)
downloadRWA.Support.DesktopApp-6ae4c71032e6b15dedd631dfff0c0c4cc4a8522a.tar.gz
RWA.Support.DesktopApp-6ae4c71032e6b15dedd631dfff0c0c4cc4a8522a.tar.bz2
RWA.Support.DesktopApp-6ae4c71032e6b15dedd631dfff0c0c4cc4a8522a.zip
Complete restructure of current code tree
Diffstat (limited to 'src/DBusAPI.cpp')
-rw-r--r--src/DBusAPI.cpp423
1 files changed, 0 insertions, 423 deletions
diff --git a/src/DBusAPI.cpp b/src/DBusAPI.cpp
deleted file mode 100644
index 9a0f8de..0000000
--- a/src/DBusAPI.cpp
+++ /dev/null
@@ -1,423 +0,0 @@
-/*
- * This file is part of Remote Support Desktop
- * https://gitlab.das-netzwerkteam.de/RemoteWebApp/rwa.support.desktopapp
- * Copyright 2021 Daniel Teichmann <daniel.teichmann@das-netzwerkteam.de>
- * SPDX-License-Identifier: GPL-2.0-or-later
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the
- * Free Software Foundation, Inc.,
- * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-#include "DBusAPI.h"
-
-/*!
- * \class DBusAPI
- * \brief The DBusAPI class provides all necessary D-Bus methods and distributes the response via signals.
- */
-DBusAPI::DBusAPI() {
- _initDBus();
-}
-
-/*!
- * \brief Initializes private _dbus_rwa object.
- */
-void DBusAPI::_initDBus() {
- if (!QDBusConnection::sessionBus().isConnected()) {
- qCritical() << "Cannot connect to the D-Bus session bus.";
- }
-
- // Create DBus object
- _dbus_rwa = new OrgArcticaProjectRWASupportSessionServiceInterface("org.ArcticaProject.RWASupportSessionService",
- "/RWASupportSessionService",
- QDBusConnection::sessionBus(),
- this->parent());
-
- qDebug("Initialized DBus object!");
-}
-
-/*!
- * \brief Ask the session service to start a session.
- *
- * \a host RWAHost object which includes all necessary information about a RWA host.
- */
-void DBusAPI::start_request(RWAHost *host) {
- Q_ASSERT(host != nullptr);
-
- qDebug() << "Requesting D-Bus service to start a new session on host:" << host->alias();
-
- // Make an asynchronous 'start' call (Response will be sent to 'start_reply')
- QDBusPendingCall async = _dbus_rwa->asyncCall("start", host->uuid());
- QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(async, this);
-
- QObject::connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)),
- this, SLOT(start_reply(QDBusPendingCallWatcher*)));
-}
-
-/*!
- * \brief Method gets called when a D-Bus response is ready.
- *
- * \a call contains the D-Bus response (session service or for example maybe just a error message).
- *
- * TODO: Example of json input
- */
-void DBusAPI::start_reply(QDBusPendingCallWatcher *call) {
- QString result = "";
- QDBusPendingReply<QString> reply = *call;
- if (reply.isError()) {
- qCritical() << "D-Bus 'start' request failed, this was the reply:";
- qCritical() << reply.error();
-
- if (QDBusError::ServiceUnknown == reply.error().type()) {
- qCritical() << "The session service was probably just not started!";
- }
-
- emit serviceStartResponse(nullptr);
-
- return;
- } else {
- result = reply.argumentAt<0>();
- }
- call->deleteLater();
-
- qDebug() << "Raw JSON from starting session is:" << result.toUtf8().replace('"', "");
- QJsonDocument doc = QJsonDocument::fromJson(result.toUtf8());
-
- emit serviceStartResponse(&doc);
-}
-
-/*!
- * \brief Ask the session service to stop session #<session_id>.
- *
- * \a host RWAHost object which includes all necessary information about a RWA host.
- *
- * \a session_id Unique identifier for a session in a specific host.
- */
-void DBusAPI::stop_request(RWAHost *host, QString session_id) {
- Q_ASSERT(host != nullptr);
- Q_ASSERT(session_id != "");
-
- bool ok;
- long long session_id_number = session_id.toLongLong(&ok);
-
- // Sanity Check
- if(ok == false){
- qWarning().noquote() << QString("Unable to parse session_id '%0' as long long!").arg(session_id);
- return;
- }
-
- qDebug().noquote() << QString("Requesting D-Bus service to stop "
- "session #'%0' on host '%1'")
- .arg(session_id)
- .arg(host->alias());
-
- // Make an asynchronous 'stop' call (Response will be sent to 'stop_reply')
- QDBusPendingCall async = _dbus_rwa->asyncCall("stop", host->uuid(), session_id_number);
- QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(async, this);
-
- QObject::connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)),
- this, SLOT(stop_reply(QDBusPendingCallWatcher*)));
-}
-
-/*!
- * \brief Method gets called when a D-Bus response is ready.
- *
- * \a call contains the D-Bus response (session service or for example maybe just a error message).
- *
- * TODO: Example of json input
- */
-void DBusAPI::stop_reply(QDBusPendingCallWatcher *call) {
- QString result = "";
-
- QDBusPendingReply<QString> reply = *call;
- if (reply.isError()) {
- qCritical() << "D-Bus 'stop' request failed, this was the reply:";
- qCritical() << reply.error();
-
- if (QDBusError::ServiceUnknown == reply.error().type()) {
- qCritical() << "The session service was probably just not started!";
- }
-
- emit serviceStopResponse(nullptr);
-
- return;
- } else {
- result = reply.argumentAt<0>();
- }
- call->deleteLater();
-
- qDebug() << "Raw JSON from stopping a session is:" << result.toUtf8().replace('"', "");
- QJsonDocument doc = QJsonDocument::fromJson(result.toUtf8());
-
- emit serviceStopResponse(&doc);
-}
-
-/*!
- * \brief Ask the session service for status of <session_id>.
- *
- * \a host RWAHost object which includes all necessary information about a RWA host.
- *
- * \a session_id Unique identifier for a session in a specific host.
- */
-void DBusAPI::status_request(RWAHost *host, QString session_id) {
- Q_ASSERT(host != nullptr);
- Q_ASSERT(session_id != "");
-
- bool ok;
- long long session_id_number = session_id.toLongLong(&ok);
-
- // Sanity Check
- if(ok == false){
- qWarning().noquote() << QString("Unable to parse session_id '%0' as long long!").arg(session_id);
- return;
- }
-
- qDebug().noquote() << QString("Requesting D-Bus service for status of session "
- "#'%0' on host '%1'").arg(session_id).arg(host->alias());
-
- // Make an asynchronous 'start' call (Response will be sent to 'status_reply')
- QDBusPendingCall async = _dbus_rwa->asyncCall("status", host->uuid(), session_id_number);
- QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(async, this);
-
- QObject::connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)),
- this, SLOT(status_reply(QDBusPendingCallWatcher*)));
-}
-
-/*!
- * \brief Forces the session service to refresh it's status of <session_id> and tell us about it then.
- *
- * \a host RWAHost object which includes all necessary information about a RWA host.
- *
- * \a session_id Unique identifier for a session in a specific host.
- */
-void DBusAPI::refresh_status_request(RWAHost *host, QString session_id) {
- Q_ASSERT(host != nullptr);
- Q_ASSERT(session_id != "");
-
- bool ok;
- long long session_id_number = session_id.toLongLong(&ok);
-
- // Sanity Check
- if(ok == false){
- qWarning().noquote() << QString("Unable to parse session_id '%0' as long long!").arg(session_id);
- return;
- }
-
- qDebug().noquote() << QString("Requesting D-Bus service for refresh_status of session "
- "#'%0' on host '%1'").arg(session_id).arg(host->alias());
-
- // Make an asynchronous 'start' call (Response will be sent to 'status_reply')
- QDBusPendingCall async = _dbus_rwa->asyncCall("refresh_status", host->uuid(), session_id_number);
- QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(async, this);
-
- QObject::connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)),
- this, SLOT(status_reply(QDBusPendingCallWatcher*)));
-}
-
-/*!
- * \brief Method gets called when a D-Bus response is ready.
- *
- * \a call contains the D-Bus response (session service or for example maybe just a error message).
- *
- * TODO: Example of json input
- */
-void DBusAPI::status_reply(QDBusPendingCallWatcher *call){
- QString result = "";
-
- QDBusPendingReply<QString> reply = *call;
- if (reply.isError()) {
- qCritical() << "D-Bus '(refresh_)status' request failed, this was the reply:";
- qCritical() << reply.error();
-
- if (QDBusError::ServiceUnknown == reply.error().type()) {
- qCritical() << "The session service was probably just not started!";
- }
-
- emit serviceStatusResponse(nullptr);
-
- return;
- } else {
- result = reply.argumentAt<0>();
- }
- call->deleteLater();
-
- // Get the QJsonObject
- qDebug() << "Raw JSON from a status request for a session is:" << result.toUtf8().replace('"', "");
- QJsonDocument doc = QJsonDocument::fromJson(result.toUtf8());
-
- emit serviceStatusResponse(&doc);
-}
-
-/*!
- * \brief This method requests the session service to list all RWAHosts.
- */
-void DBusAPI::get_web_app_hosts_request() {
- qDebug().noquote() << QString("Requesting D-Bus service to list "
- "all remote web app hosts");
-
- // Make an asynchronous 'get_web_app_hosts' call
- // Response will be sent to 'get_web_app_hosts_reply'
- QDBusPendingCall async = _dbus_rwa->asyncCall("get_web_app_hosts");
- QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(async, this);
-
- QObject::connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)),
- this, SLOT(get_web_app_hosts_reply(QDBusPendingCallWatcher*)));
-}
-
-/*!
- * \brief This method requests the session service to add a RWAHost to its configuration files.
- *
- * \a host_url is the remote web app adress which will be used by the session service to coordinate
- * sessions, connections, settings and such.
- */
-void DBusAPI::add_web_app_host_request(QString host_url, QString host_alias) {
- Q_ASSERT(host_url != "");
- Q_ASSERT(host_alias != "");
-
- qDebug().noquote() << QString("Requesting D-Bus service to register new "
- "remote web app host '%0' with url '%1'").arg(host_alias).arg(host_url);
-
- // Make an asynchronous 'add_web_app_host' call
- // Response will be sent to 'add_web_app_host_reply'
- QDBusPendingCall async = _dbus_rwa->asyncCall("add_web_app_host", host_url, host_alias);
- QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(async, this);
-
- QObject::connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)),
- this, SLOT(add_web_app_host_reply(QDBusPendingCallWatcher*)));
-}
-
-/*!
- * \brief This method requests the session service to remove a RWAHost from its configuration files.
- *
- * \a host_uuid Unique identifier which all hosts have.
- */
-void DBusAPI::remove_web_app_host_request(QString host_uuid) {
- Q_ASSERT(host_uuid != "");
-
- qDebug().noquote() << QString("Requesting D-Bus service to list "
- "all remote web app hosts");
-
- // Make an asynchronous 'remove_web_app_host' call
- // Response will be sent to 'remove_web_app_host_reply'
- QDBusPendingCall async = _dbus_rwa->asyncCall("remove_web_app_host", host_uuid);
- QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(async, this);
-
- QObject::connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)),
- this, SLOT(remove_web_app_host_reply(QDBusPendingCallWatcher*)));
-}
-
-/*!
- * \brief Method gets called when a D-Bus response is ready.
- *
- * \a call contains the D-Bus response (session service or for example maybe just a error message).
- *
- * TODO: Example of json input
- */
-void DBusAPI::get_web_app_hosts_reply(QDBusPendingCallWatcher *call){
- QString result = "";
-
- QDBusPendingReply<QString> reply = *call;
- if (reply.isError()) {
- qCritical() << "D-Bus 'get_web_app_hosts' request failed, this was the reply:";
- qCritical() << reply.error();
-
- if (QDBusError::ServiceUnknown == reply.error().type()) {
- qCritical() << "The session service was probably just not started!";
- }
-
- emit serviceGetWebAppHostsResponse(nullptr);
-
- return;
- } else {
- result = reply.argumentAt<0>();
- }
- call->deleteLater();
-
- // Get the QJsonObject
- qDebug() << "Raw JSON from the remote web app host listing request:" << result.toUtf8().replace('"', "");
- QJsonDocument doc = QJsonDocument::fromJson(result.toUtf8());
-
- emit serviceGetWebAppHostsResponse(&doc);
-}
-
-/*!
- * \brief Method gets called when a D-Bus response is ready.
- *
- * \a call contains the D-Bus response (session service or for example maybe just a error message).
- *
- * TODO: Example of json input
- */
-void DBusAPI::add_web_app_host_reply(QDBusPendingCallWatcher *call){
- QString result = "";
-
- QDBusPendingReply<QString> reply = *call;
- if (reply.isError()) {
- qCritical() << "D-Bus 'add_web_app_host' request failed, this was the reply:";
- qCritical() << reply.error();
-
- if (QDBusError::ServiceUnknown == reply.error().type()) {
- qCritical() << "The session service was probably just not started!";
- }
-
- emit serviceAddWebAppHostResponse(nullptr);
-
- return;
- } else {
- result = reply.argumentAt<0>();
- }
- call->deleteLater();
-
- // Get the QJsonObject
- qDebug() << "Raw JSON from the remote web app host register request:" << result.toUtf8().replace('"', "");
- QJsonDocument doc = QJsonDocument::fromJson(result.toUtf8());
-
- emit serviceAddWebAppHostResponse(&doc);
-}
-
-/*!
- * \brief Method gets called when a D-Bus response is ready.
- *
- * \a call contains the D-Bus response (session service or for example maybe just a error message).
- *
- * TODO: Example of json input
- */
-void DBusAPI::remove_web_app_host_reply(QDBusPendingCallWatcher *call){
- QString result = "";
-
- QDBusPendingReply<QString> reply = *call;
- if (reply.isError()) {
- qCritical() << "D-Bus 'remove_web_app_host' request failed, this was the reply:";
- qCritical() << reply.error();
-
- if (QDBusError::ServiceUnknown == reply.error().type()) {
- qCritical() << "The session service was probably just not started!";
- }
-
- emit serviceRemoveWebAppHostResponse(nullptr);
-
- return;
- } else {
- result = reply.argumentAt<0>();
- }
- call->deleteLater();
-
- // Get the QJsonObject
- qDebug() << "Raw JSON from the remote web app host deletion request:" << result.toUtf8().replace('"', "");
- QJsonDocument doc = QJsonDocument::fromJson(result.toUtf8());
-
- emit serviceRemoveWebAppHostResponse(&doc);
-}