diff --git a/client/android/AndroidManifest.xml b/client/android/AndroidManifest.xml index efb46f92..d0e94d39 100644 --- a/client/android/AndroidManifest.xml +++ b/client/android/AndroidManifest.xml @@ -78,14 +78,15 @@ - + + diff --git a/client/client.pro b/client/client.pro index fe501f31..90979584 100644 --- a/client/client.pro +++ b/client/client.pro @@ -31,9 +31,7 @@ HEADERS += \ containers/containers_defs.h \ core/defs.h \ core/errorstrings.h \ - core/ipcclient.h \ configurators/openvpn_configurator.h \ - core/privileged_process.h \ core/scripts_registry.h \ core/server_defs.h \ core/servercontroller.h \ @@ -88,9 +86,7 @@ SOURCES += \ configurators/wireguard_configurator.cpp \ containers/containers_defs.cpp \ core/errorstrings.cpp \ - core/ipcclient.cpp \ configurators/openvpn_configurator.cpp \ - core/privileged_process.cpp \ core/scripts_registry.cpp \ core/server_defs.cpp \ core/servercontroller.cpp \ @@ -203,6 +199,8 @@ win32|macx|linux:!android { DEFINES += AMNEZIA_DESKTOP HEADERS += \ + core/ipcclient.h \ + core/privileged_process.h \ ui/systemtray_notificationhandler.h \ protocols/openvpnprotocol.h \ protocols/openvpnovercloakprotocol.h \ @@ -210,11 +208,16 @@ win32|macx|linux:!android { protocols/wireguardprotocol.h \ SOURCES += \ + core/ipcclient.cpp \ + core/privileged_process.cpp \ ui/systemtray_notificationhandler.cpp \ protocols/openvpnprotocol.cpp \ protocols/openvpnovercloakprotocol.cpp \ protocols/shadowsocksvpnprotocol.cpp \ protocols/wireguardprotocol.cpp \ + + REPC_REPLICA += ../ipc/ipc_interface.rep + REPC_REPLICA += ../ipc/ipc_process_interface.rep } android { @@ -365,6 +368,4 @@ ios { } -REPC_REPLICA += ../ipc/ipc_interface.rep -!ios: REPC_REPLICA += ../ipc/ipc_process_interface.rep diff --git a/client/core/ipcclient.cpp b/client/core/ipcclient.cpp index e4053878..0252ea0f 100644 --- a/client/core/ipcclient.cpp +++ b/client/core/ipcclient.cpp @@ -65,7 +65,6 @@ bool IpcClient::init(IpcClient *instance) QSharedPointer IpcClient::CreatePrivilegedProcess() { -#ifndef Q_OS_IOS if (! Instance()->m_ipcClient || ! Instance()->m_ipcClient->isReplicaValid()) { qWarning() << "IpcClient::createPrivilegedProcess : IpcClient IpcClient replica is not valid"; return nullptr; @@ -107,9 +106,6 @@ QSharedPointer IpcClient::CreatePrivilegedProcess() auto proccessReplica = QSharedPointer(pd->ipcProcess); return proccessReplica; -#else - return QSharedPointer(); -#endif } diff --git a/client/core/privileged_process.cpp b/client/core/privileged_process.cpp index 82a114de..3852236f 100644 --- a/client/core/privileged_process.cpp +++ b/client/core/privileged_process.cpp @@ -1,6 +1,5 @@ #include "privileged_process.h" -#ifndef Q_OS_IOS PrivilegedProcess::PrivilegedProcess() : IpcProcessInterfaceReplica() { @@ -26,4 +25,3 @@ void PrivilegedProcess::waitForFinished(int msecs) loop->exec(); } -#endif // Q_OS_IOS diff --git a/client/core/privileged_process.h b/client/core/privileged_process.h index 62829bc5..4d08c043 100644 --- a/client/core/privileged_process.h +++ b/client/core/privileged_process.h @@ -3,7 +3,6 @@ #include -#ifndef Q_OS_IOS #include "rep_ipc_process_interface_replica.h" // This class is dangerous - instance of this class casted from base class, // so it support only functions @@ -20,11 +19,6 @@ public: }; -#else // defined Q_OS_IOS -class IpcProcessInterfaceReplica {}; -class PrivilegedProcess {}; -#endif // Q_OS_IOS - #endif // PRIVILEGED_PROCESS_H diff --git a/client/debug.cpp b/client/debug.cpp index 8b228932..dfdb15dd 100644 --- a/client/debug.cpp +++ b/client/debug.cpp @@ -1,3 +1,4 @@ +#include #include #include #include @@ -6,12 +7,14 @@ #include -#include - #include "debug.h" #include "defines.h" #include "utils.h" +#ifdef AMNEZIA_DESKTOP +#include +#endif + QFile Debug::m_file; QTextStream Debug::m_textStream; QString Debug::m_logFileName = QString("%1.log").arg(APPLICATION_NAME); @@ -140,6 +143,7 @@ void Debug::clearLogs() void Debug::clearServiceLogs() { +#ifdef AMNEZIA_DESKTOP IpcClient *m_IpcClient = new IpcClient; if (!m_IpcClient->isSocketConnected()) { @@ -156,6 +160,7 @@ void Debug::clearServiceLogs() else { qWarning() << "Error occured cleaning up service logs"; } +#endif } void Debug::cleanUp() diff --git a/client/ui/pages_logic/ServerSettingsLogic.cpp b/client/ui/pages_logic/ServerSettingsLogic.cpp index 16efe55b..e15207b7 100644 --- a/client/ui/pages_logic/ServerSettingsLogic.cpp +++ b/client/ui/pages_logic/ServerSettingsLogic.cpp @@ -8,6 +8,7 @@ #include "core/errorstrings.h" #include +#include ServerSettingsLogic::ServerSettingsLogic(UiLogic *logic, QObject *parent): PageLogicBase(logic, parent), diff --git a/client/ui/pages_logic/VpnLogic.cpp b/client/ui/pages_logic/VpnLogic.cpp index 0c7254b1..ae39f905 100644 --- a/client/ui/pages_logic/VpnLogic.cpp +++ b/client/ui/pages_logic/VpnLogic.cpp @@ -1,7 +1,10 @@ +#include + #include "VpnLogic.h" #include "core/errorstrings.h" #include "vpnconnection.h" +#include #include #include "../uilogic.h" #include "defines.h" @@ -239,6 +242,6 @@ void VpnLogic::onConnectWorker(int serverIndex, const ServerCredentials &credent void VpnLogic::onDisconnect() { - set_pushButtonConnectChecked(false); + onConnectionStateChanged(VpnProtocol::Disconnected); emit disconnectFromVpn(); } diff --git a/client/ui/uilogic.cpp b/client/ui/uilogic.cpp index f4c79d5d..878facb7 100644 --- a/client/ui/uilogic.cpp +++ b/client/ui/uilogic.cpp @@ -30,7 +30,6 @@ #include "core/errorstrings.h" #include "containers/containers_defs.h" -#include "protocols/shadowsocksvpnprotocol.h" #include "ui/qautostart.h" @@ -136,6 +135,11 @@ UiLogic::~UiLogic() void UiLogic::initalizeUiLogic() { #ifdef Q_OS_ANDROID + connect(AndroidController::instance(), &AndroidController::initialized, [this](bool status, bool connected, const QDateTime& connectionDate) { + if (connected) { + vpnLogic()->onConnectionStateChanged(VpnProtocol::Connected); + } + }); if (!AndroidController::instance()->initialize()) { qDebug() << QString("Init failed") ; emit VpnProtocol::Error; diff --git a/client/vpnconnection.cpp b/client/vpnconnection.cpp index 2e55901b..8434da0e 100644 --- a/client/vpnconnection.cpp +++ b/client/vpnconnection.cpp @@ -10,7 +10,12 @@ #include #include #include + +#ifdef AMNEZIA_DESKTOP +#include "ipc.h" +#include "core/ipcclient.h" #include +#endif #ifdef Q_OS_ANDROID #include "android_controller.h" @@ -21,9 +26,6 @@ #include #endif -#include "ipc.h" -#include "core/ipcclient.h" - #include "utils.h" #include "vpnconnection.h" @@ -46,6 +48,7 @@ void VpnConnection::onBytesChanged(quint64 receivedBytes, quint64 sentBytes) void VpnConnection::onConnectionStateChanged(VpnProtocol::VpnConnectionState state) { +#ifdef AMNEZIA_DESKTOP if (IpcClient::Interface()) { if (state == VpnProtocol::Connected){ IpcClient::Interface()->resetIpStack(); @@ -85,7 +88,7 @@ void VpnConnection::onConnectionStateChanged(VpnProtocol::VpnConnectionState sta } } } - +#endif emit connectionStateChanged(state); } @@ -96,6 +99,7 @@ const QString &VpnConnection::remoteAddress() const void VpnConnection::addSitesRoutes(const QString &gw, Settings::RouteMode mode) { +#ifdef AMNEZIA_DESKTOP QStringList ips; QStringList sites; const QVariantMap &m = m_settings.vpnSites(mode); @@ -135,6 +139,7 @@ void VpnConnection::addSitesRoutes(const QString &gw, Settings::RouteMode mode) }; QHostInfo::lookupHost(site, this, cbResolv); } +#endif } QSharedPointer VpnConnection::vpnProtocol() const @@ -144,6 +149,7 @@ QSharedPointer VpnConnection::vpnProtocol() const void VpnConnection::addRoutes(const QStringList &ips) { +#ifdef AMNEZIA_DESKTOP if (connectionState() == VpnProtocol::Connected && IpcClient::Interface()) { if (m_settings.routeMode() == Settings::VpnOnlyForwardSites) { IpcClient::Interface()->routeAddList(m_vpnProtocol->vpnGateway(), ips); @@ -152,10 +158,12 @@ void VpnConnection::addRoutes(const QStringList &ips) IpcClient::Interface()->routeAddList(m_vpnProtocol->routeGateway(), ips); } } +#endif } void VpnConnection::deleteRoutes(const QStringList &ips) { +#ifdef AMNEZIA_DESKTOP if (connectionState() == VpnProtocol::Connected && IpcClient::Interface()) { if (m_settings.routeMode() == Settings::VpnOnlyForwardSites) { IpcClient::Interface()->routeDeleteList(vpnProtocol()->vpnGateway(), ips); @@ -164,11 +172,14 @@ void VpnConnection::deleteRoutes(const QStringList &ips) IpcClient::Interface()->routeDeleteList(m_vpnProtocol->routeGateway(), ips); } } +#endif } void VpnConnection::flushDns() { +#ifdef AMNEZIA_DESKTOP if (IpcClient::Interface()) IpcClient::Interface()->flushDns(); +#endif } ErrorCode VpnConnection::lastError() const @@ -349,6 +360,7 @@ void VpnConnection::disconnectFromVpn() { // qDebug() << "Disconnect from VPN 1"; +#ifdef AMNEZIA_DESKTOP if (IpcClient::Interface()) { IpcClient::Interface()->flushDns(); @@ -356,8 +368,15 @@ void VpnConnection::disconnectFromVpn() QRemoteObjectPendingReply response = IpcClient::Interface()->clearSavedRoutes(); response.waitForFinished(1000); } +#endif + + if (!m_vpnProtocol.data()) { + emit connectionStateChanged(VpnProtocol::Disconnected); +#ifdef Q_OS_ANDROID + AndroidController::instance()->stop(); +#endif return; } m_vpnProtocol.data()->stop(); diff --git a/client/vpnconnection.h b/client/vpnconnection.h index 7a21e7b0..d0dc2135 100644 --- a/client/vpnconnection.h +++ b/client/vpnconnection.h @@ -8,9 +8,12 @@ #include "protocols/vpnprotocol.h" #include "core/defs.h" -#include "core/ipcclient.h" #include "settings.h" +#ifdef AMNEZIA_DESKTOP +#include "core/ipcclient.h" +#endif + using namespace amnezia; class VpnConnection : public QObject @@ -74,8 +77,10 @@ private: QJsonObject m_vpnConfiguration; QJsonObject m_routeMode; QString m_remoteAddress; - IpcClient *m_IpcClient {nullptr}; +#ifdef AMNEZIA_DESKTOP + IpcClient *m_IpcClient {nullptr}; +#endif }; #endif // VPNCONNECTION_H