From 264d77463d746de09d7c5e4fe721857fadeb6bcc Mon Sep 17 00:00:00 2001 From: Garegin Harutyunyan <78261915+Garegin866@users.noreply.github.com> Date: Thu, 8 Aug 2024 19:13:49 +0400 Subject: [PATCH] Refactoring/service logging functional (#793) --- client/amnezia_application.cpp | 4 +++- client/logger.cpp | 28 ++++++++++++++++++++++++++-- client/logger.h | 1 + client/settings.cpp | 2 ++ ipc/ipc_interface.rep | 1 + ipc/ipcserver.cpp | 4 ++++ ipc/ipcserver.h | 1 + service/server/main.cpp | 2 -- 8 files changed, 38 insertions(+), 5 deletions(-) diff --git a/client/amnezia_application.cpp b/client/amnezia_application.cpp index 8fe97cd7..c3adfe31 100644 --- a/client/amnezia_application.cpp +++ b/client/amnezia_application.cpp @@ -161,13 +161,15 @@ void AmneziaApplication::init() m_engine->load(url); m_systemController->setQmlRoot(m_engine->rootObjects().value(0)); + bool enabled = m_settings->isSaveLogs(); #ifndef Q_OS_ANDROID - if (m_settings->isSaveLogs()) { + if (enabled) { if (!Logger::init()) { qWarning() << "Initialization of debug subsystem failed"; } } #endif + Logger::setServiceLogsEnabled(enabled); #ifdef Q_OS_WIN if (m_parser.isSet("a")) diff --git a/client/logger.cpp b/client/logger.cpp index 0dc836c6..c76bc698 100644 --- a/client/logger.cpp +++ b/client/logger.cpp @@ -99,6 +99,29 @@ void Logger::deInit() m_file.close(); } +bool Logger::setServiceLogsEnabled(bool enabled) { +#ifdef AMNEZIA_DESKTOP + IpcClient *m_IpcClient = new IpcClient; + + if (!m_IpcClient->isSocketConnected()) { + if (!IpcClient::init(m_IpcClient)) { + qWarning() << "Error occurred when init IPC client"; + return false; + } + } + + if (m_IpcClient->Interface()) { + m_IpcClient->Interface()->setLogsEnabled(enabled); + } + else { + qWarning() << "Error occurred setting up service logs"; + return false; + } +#endif + + return true; +} + QString Logger::userLogsDir() { return QStandardPaths::writableLocation(QStandardPaths::AppDataLocation) + "/log"; @@ -141,7 +164,9 @@ bool Logger::openLogsFolder() bool Logger::openServiceLogsFolder() { QString path = Utils::systemLogPath(); +#ifdef Q_OS_WIN path = "file:///" + path; +#endif QDesktopServices::openUrl(QUrl::fromLocalFile(path)); return true; } @@ -184,8 +209,7 @@ void Logger::clearServiceLogs() } if (m_IpcClient->Interface()) { - m_IpcClient->Interface()->setLogsEnabled(false); - m_IpcClient->Interface()->cleanUp(); + m_IpcClient->Interface()->clearLogs(); } else { qWarning() << "Error occurred cleaning up service logs"; diff --git a/client/logger.h b/client/logger.h index f8bfc225..0dcbd35c 100644 --- a/client/logger.h +++ b/client/logger.h @@ -26,6 +26,7 @@ public: static bool init(); static void deInit(); + static bool setServiceLogsEnabled(bool enabled); static bool openLogsFolder(); static bool openServiceLogsFolder(); static QString appLogFileNamePath(); diff --git a/client/settings.cpp b/client/settings.cpp index 8129b1e6..872adec7 100644 --- a/client/settings.cpp +++ b/client/settings.cpp @@ -226,6 +226,8 @@ void Settings::setSaveLogs(bool enabled) } } #endif + Logger::setServiceLogsEnabled(enabled); + if (enabled) { setLogEnableDate(QDateTime::currentDateTime()); } diff --git a/ipc/ipc_interface.rep b/ipc/ipc_interface.rep index 79f2d042..5baf9c33 100644 --- a/ipc/ipc_interface.rep +++ b/ipc/ipc_interface.rep @@ -21,6 +21,7 @@ class IpcInterface SLOT( void cleanUp() ); SLOT( void setLogsEnabled(bool enabled) ); + SLOT( void clearLogs() ); SLOT( bool createTun(const QString &dev, const QString &subnet) ); SLOT( bool deleteTun(const QString &dev) ); diff --git a/ipc/ipcserver.cpp b/ipc/ipcserver.cpp index c734912b..32fc5f30 100644 --- a/ipc/ipcserver.cpp +++ b/ipc/ipcserver.cpp @@ -162,6 +162,10 @@ void IpcServer::cleanUp() Logger::cleanUp(); } +void IpcServer::clearLogs() { + Logger::clearLogs(); +} + bool IpcServer::createTun(const QString &dev, const QString &subnet) { return Router::createTun(dev, subnet); diff --git a/ipc/ipcserver.h b/ipc/ipcserver.h index bd474481..74f88d0f 100644 --- a/ipc/ipcserver.h +++ b/ipc/ipcserver.h @@ -26,6 +26,7 @@ public: virtual bool checkAndInstallDriver() override; virtual QStringList getTapList() override; virtual void cleanUp() override; + virtual void clearLogs() override; virtual void setLogsEnabled(bool enabled) override; virtual bool createTun(const QString &dev, const QString &subnet) override; virtual bool deleteTun(const QString &dev) override; diff --git a/service/server/main.cpp b/service/server/main.cpp index 495192c3..144ddf60 100644 --- a/service/server/main.cpp +++ b/service/server/main.cpp @@ -46,8 +46,6 @@ int main(int argc, char **argv) { Utils::initializePath(Utils::systemLogPath()); - Logger::init(); - if (argc >= 2) { qInfo() << "Started as console application"; return runApplication(argc, argv);