diff options
| author | Daniel Teichmann <daniel.teichmann@das-netzwerkteam.de> | 2021-08-10 14:56:44 +0200 |
|---|---|---|
| committer | Daniel Teichmann <daniel.teichmann@das-netzwerkteam.de> | 2021-08-10 14:56:44 +0200 |
| commit | 6ae4c71032e6b15dedd631dfff0c0c4cc4a8522a (patch) | |
| tree | cd2c53b90bb13375df387414e99e6d8e7509e2a9 /src/session.cpp | |
| parent | afeb0381f568b4c9f51296cd5de325c8c8aac3f2 (diff) | |
| download | RWA.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/session.cpp')
| -rw-r--r-- | src/session.cpp | 271 |
1 files changed, 0 insertions, 271 deletions
diff --git a/src/session.cpp b/src/session.cpp deleted file mode 100644 index 25a8512..0000000 --- a/src/session.cpp +++ /dev/null @@ -1,271 +0,0 @@ -/* - * This file is part of Remote Support Desktop - * https://gitlab.das-netzwerkteam.de/RemoteWebApp/rwa.support.desktopapp - * Copyright 2020, 2021 Daniel Teichmann <daniel.teichmann@das-netzwerkteam.de> - * Copyright 2020, 2021 Mike Gabriel <mike.gabriel@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 "session.h" - -Session::Session(DBusAPI *dbus_api, RWAHost *host) : QObject() { - Q_ASSERT(host != nullptr); - Q_ASSERT(dbus_api != nullptr); - - _dbus_api = dbus_api; - _host = host; - - setPin("-----"); - setSessionID("-----"); - setURL(tr("Not available yet")); - setStatus("unknown"); - started = false; -} - -Session::~Session() { - qDebug().noquote() << QString("Session #'%0' on host '%1' will be deconstructed.") - .arg(getSessionID()) - .arg(getHost()->alias()); - stop(); - disconnect(); -} - -void Session::statusTimerEvent() { - qDebug() << "Status timer event triggered"; - - refresh_status(); -} - -bool Session::isSessionAliveOrRunning() { - if (getStatus() == "running" || getStatus() == "active") { - return true; - } else { - return false; - } -} - -RWAHost* Session::getHost() { - return _host; -} - -QString Session::getStatus() { - return _status; -} - -QString Session::getURL() { - return _url; -} - -QString Session::getSessionID() { - return _session_id; -} - -QString Session::getPin() { - return _pin; -} - -void Session::setURL(QString url) { - _url = url; - emit urlChanged(url); -} - -void Session::setSessionID(QString session_id) { - _session_id = session_id; - emit sessionIDChanged(session_id); -} - -void Session::setPin(QString pin) { - _pin = pin; - emit pinChanged(pin); -} - -void Session::setHost(RWAHost *host) { - _host = host; - emit hostChanged(host); -} - -void Session::setStatus(QString status) { - _status = status; - emit statusChanged(status); -} - -void Session::start() { - _dbus_api->start_request(_host); -} - -void Session::start_response(QJsonDocument *doc) { - // Q_ASSERT lets the program crash immediatly after method call - // when the session service is not started. - // Don't use Q_ASSERT(doc != nullptr); instead use: - if (doc == nullptr) { - emit startFailed(tr("Can't connect to underlying session service! " - "Is the session service started?")); - return; - } - - // Get the QJsonObject - QJsonObject jObject = doc->object(); - QVariantMap mainMap = jObject.toVariantMap(); - - // Status of request - QString status = mainMap["status"].toString(); - if (status != "success") { - QString type = mainMap["type"].toString(); - QString error_message = tr("An error occured while creating a new session!"); - - if (type == "multiple") { - // TODO: Ask to stop other session via a message dialog. - error_message = tr("The session service is configured " - "to not support multiple sessions " - "and there is already a session running."); - } else if (type == "connection") { - error_message = tr("Couldn't connect to host '%0'.") - .arg(getHost()->alias()); - } else if (type == "host_not_found") { - error_message = tr("The RWA host '%0' couldn't be found.") - .arg(getHost()->alias()); - } else if (type == "permission_denid") { - error_message = tr("The RWA host '%0' doesn't grant access.") - .arg(getHost()->alias()); - } else if (type == "unsupported_server") { - error_message = tr("The RWA host '%0' is not supported.") - .arg(getHost()->alias()); - } - - setStatus("start_session_error"); - qCritical().noquote() << error_message; - emit startFailed(error_message); - return; - } - - bool ok; - - // URL of remote web app frontend - QString url = mainMap["url"].toString(); - this->setURL(url); - - // PIN - long long pin = mainMap["pin"].toLongLong(&ok); - // Sanity Check - if(ok == false){ - QString error_message = "Unable to parse <pin> into longo long out of dbus answer!"; - qCritical().noquote() << error_message; - emit startFailed(error_message); - return; - } - this->setPin(QString::number(pin)); - - // session_id = remote support id from the rwa-server - long long session_id = mainMap["session_id"].toLongLong(); - // Sanity Check - if(ok == false){ - QString error_message = "Unable to parse <session_id> into long long out of dbus answer!"; - qCritical().noquote() << error_message; - emit startFailed(error_message); - return; - } - this->setSessionID(QString::number(session_id)); - - qDebug() << "Got session_id:" << session_id << - "\nGot url:" << url << - "\nGot pin:" << pin; - - emit pinChanged(QString::number(pin)); - emit urlChanged(url); - emit sessionIDChanged(QString::number(session_id)); - - started = true; - - // Ask status every 1000 millisecond - - QTimer *timer = new QTimer(this); - connect(timer, &QTimer::timeout, this, - QOverload<>::of(&Session::statusTimerEvent)); - timer->start(1000); - - qDebug() << "Successfully started a session."; - this->setStatus("start_session_success"); - - emit startSucceeded(); -} - -void Session::stop() { - if (started) - _dbus_api->stop_request(getHost(), getSessionID()); -} - -void Session::stop_response(QJsonDocument *doc) { - // Q_ASSERT lets the program crash immediatly after method call - // when the session service is not started. - // Don't use Q_ASSERT(doc != nullptr); instead use: - if (doc == nullptr) { - emit stopFailed(tr("Can't connect to underlying session service! " - "Is the session service started?")); - return; - } - - QJsonObject jObject = doc->object(); - QVariantMap mainMap = jObject.toVariantMap(); - - QString new_status = mainMap["status"].toString(); - qDebug() << "stop_response() retrieved json. Status now:" << new_status; - - started = false; - - this->setStatus(new_status); - - emit stopSucceeded(); -} - -void Session::status() { - _dbus_api->status_request(getHost(), this->getSessionID()); -} - -void Session::refresh_status() { - _dbus_api->refresh_status_request(getHost(), this->getSessionID()); -} - -void Session::status_response(QJsonDocument *doc) { - // Q_ASSERT lets the program crash immediatly after method call, - // when the session service is not started. - // Don't use Q_ASSERT(doc != nullptr); instead use: - if (doc == nullptr) { - if (!_emitted_status_error_already) { - emit statusFailed(tr("Can't connect to underlying session service! " - "Is the session service started?")); - - _emitted_status_error_already = true; - } - - return; - } - - _emitted_status_error_already = false; - - QJsonObject jObject = doc->object(); - QVariantMap mainMap = jObject.toVariantMap(); - QString new_status = mainMap["status"].toString(); - qDebug() << "status_response() retrieved json. Status:" << new_status; - - setStatus(new_status); - - emit statusSucceeded(); -} |
