mirror of
https://github.com/amnezia-vpn/amnezia-client.git
synced 2026-05-08 14:33:23 +00:00
* refactor: move business logic from servers model * refactor: move containersModel initialization * refactor: added protocol ui controller and removed settings class from protocols model * refactor: moved cli management to separate controller * refactor: moved app split to separate controller * refactor: moved site split to separate controller * refactor: moved allowed dns to separate controller * refactor: moved language logic to separate ui controller * refactor: removed Settings from devices model * refactor: moved configs and services api logit to separate core controller * refactor: added a layer with a repository between the storage and controllers * refactor: use child parent system instead of smart pointers for controllers and models initialization * refactor: moved install functions from server controller to install controller * refactor: install controller refactoring * chore: renamed exportController to exportUiController * refactor: separate export controller * refactor: removed VpnConfigurationsController * chore: renamed ServerController to SshSession * refactor: replaced ServerController to SshSession * chore: moved qml controllers to separate folder * chore: include fixes * chore: moved utils from core root to core/utils * chore: include fixes * chore: rename core/utils files to camelCase foramt * chore: include fixes * chore: moved some utils to api and selfhosted folders * chore: include fixes * chore: remove unused file * chore: moved serialization folder to core/utils * chore: include fixes * chore: moved some files from client root to core/utils * chore: include fixes * chore: moved ui utils to ui/utils folder * chore: include fixes * chore: move utils from root to ui/utils * chore: include fixes * chore: moved configurators to core/configurators * chore: include fixes * refactor: moved iap logic from ui controller to core * refactor: moved remaining core logic from ApiConfigsController to SubscriptionController * chore: rename apiNewsController to apiNewsUiController * refactor: moved core logic from news ui controller to core * chore: renamed apiConfigsController to subscriptionUiController * chore: include fixes * refactor: merge ApiSettingsController with SubscriptionUiController * chore: moved ui selfhosted controllers to separate folder * chore: include fixes * chore: rename connectionController to connectiomUiController * refactor: moved core logic from connectionUiController * chore: rename settingsController to settingsUiController * refactor: move core logic from settingsUiController * refactor: moved core controller signal/slot connections to separate class * fix: newsController fixes after refactoring * chore: rename model to camelCase * chore: include fixes * chore: remove unused code * chore: move selfhosted core to separate folder * chore: include fixes * chore: rename importController to importUiController * refactor: move core logic from importUiController * chore: minor fixes * chore: remove prem v1 migration * refactor: remove openvpn over cloak and openvpn over shadowsocks * refactor: removed protocolsForContainer function * refactor: add core models * refactor: replace json with c++ structs for server config * refactor: move getDnsPair to ServerConfigUtils * feat: add admin selfhosted config export test * feat: add multi import test * refactor: use coreController for tests * feat: add few simple tests * chore: qrepos in all core controllers * feat: add test for settings * refactor: remove repo dependency from configurators * chore: moved protocols to core folder * chore: include fixes * refactor: moved containersDefs, defs, apiDefs, protocolsDefs to different places * chore: include fixes * chore: build fixes * chore: build fixes * refactor: remove q repo and interface repo * feat: add test for ui servers model and controller * chore: renamed to camelCase * chore: include fixes * refactor: moved core logic from sites ui controller * fix: fixed api config processing * fix: fixed processed server index processing * refactor: protocol models now use c++ structs instead of json configs * refactor: servers model now use c++ struct instead of json config * fix: fixed default server index processing * fix: fix logs init * fix: fix secure settings load keys * chore: build fixes * fix: fixed clear settings * fix: fixed restore backup * fix: sshSession usage * fix: fixed export functions signatures * fix: return missing part from buildContainerWorker * fix: fixed server description on page home * refactor: add container config helpers functions * refactor: c++ structs instead of json * chore: add dns protocol config struct * refactor: move config utils functions to config structs * feat: add test for selfhosted server setup * refactor: separate resources.qrc * fix: fixed server rename * chore: return nameOverriddenByUser * fix: build fixes * fix: fixed models init * refactor: cleanup models usage * fix: fixed models init * chore: cleanup connections and functions signatures * chore: cleanup updateModel calls * feat: added cache to servers repo * chore: cleanup unused functions * chore: ssxray processing * chore: remove transportProtoWithDefault and portWithDefault functions * chore: removed proto types any and l2tp * refactor: moved some constants * fix: fixed native configs export * refactor: remove json from processConfigWith functions * fix: fixed processed server index usage * fix: qml warning fixes * chore: merge fixes * chore: update tests * fix: fixed xray config processing * fix: fixed split tunneling processing * chore: rename sites controllers and model * chore: rename fixes * chore: minor fixes * chore: remove ability to load backup from "file with connection settings" button * fix: fixed api device revoke * fix: remove full model update when renaming a user * fix: fixed premium/free server rename * fix: fixed selfhosted new server install * fix: fixed updateContainer function * fix: fixed revoke for external premium configs * feat: add native configs qr processing * chore: codestyle fixes * fix: fixed admin config create * chore: again remove ability to load backup from "file with connection settings" button * chore: minor fixes * fix: fixed variables initialization * fix: fixed qml imports * fix: minor fixes * fix: fix vpnConnection function calls * feat: add buckup error handling * fix: fixed admin config revok * fix: fixed selfhosted awg installation * fix: ad visability * feat: add empty check for primary dns * chore: minor fixes
214 lines
7.8 KiB
C++
214 lines
7.8 KiB
C++
#ifndef CORECONTROLLER_H
|
|
#define CORECONTROLLER_H
|
|
|
|
#include <QObject>
|
|
#include <QQmlContext>
|
|
#include <QThread>
|
|
|
|
#if !defined(Q_OS_ANDROID) && !defined(Q_OS_IOS)
|
|
#include "ui/utils/systemTrayNotificationHandler.h"
|
|
#endif
|
|
|
|
#include "ui/controllers/api/subscriptionUiController.h"
|
|
#include "ui/controllers/api/apiNewsUiController.h"
|
|
#include "ui/controllers/appSplitTunnelingUiController.h"
|
|
#include "ui/controllers/allowedDnsUiController.h"
|
|
#include "ui/controllers/connectionUiController.h"
|
|
#include "ui/controllers/selfhosted/exportUiController.h"
|
|
#include "core/controllers/selfhosted/exportController.h"
|
|
#include "ui/controllers/qml/focusController.h"
|
|
#include "ui/controllers/importUiController.h"
|
|
#include "core/controllers/selfhosted/importController.h"
|
|
#include "ui/controllers/selfhosted/installUiController.h"
|
|
#include "ui/controllers/qml/pageController.h"
|
|
#include "ui/controllers/settingsUiController.h"
|
|
#include "ui/controllers/serversUiController.h"
|
|
#include "ui/controllers/ipSplitTunnelingUiController.h"
|
|
#include "ui/controllers/systemController.h"
|
|
#include "ui/controllers/languageUiController.h"
|
|
#include "ui/controllers/api/servicesCatalogUiController.h"
|
|
|
|
#include "core/controllers/serversController.h"
|
|
#include "core/controllers/selfhosted/usersController.h"
|
|
#include "core/controllers/appSplitTunnelingController.h"
|
|
#include "core/controllers/ipSplitTunnelingController.h"
|
|
#include "core/controllers/allowedDnsController.h"
|
|
#include "core/controllers/api/servicesCatalogController.h"
|
|
#include "core/controllers/api/subscriptionController.h"
|
|
#include "core/controllers/api/newsController.h"
|
|
#include "core/controllers/selfhosted/installController.h"
|
|
#include "core/controllers/settingsController.h"
|
|
#include "core/controllers/connectionController.h"
|
|
|
|
#include "core/repositories/secureServersRepository.h"
|
|
#include "core/repositories/secureAppSettingsRepository.h"
|
|
#include "secureQSettings.h"
|
|
|
|
#include "ui/models/allowedDnsModel.h"
|
|
#include "ui/models/containersModel.h"
|
|
#include "ui/models/languageModel.h"
|
|
#ifdef Q_OS_WINDOWS
|
|
#include "ui/models/protocols/ikev2ConfigModel.h"
|
|
#endif
|
|
#include "ui/models/api/apiAccountInfoModel.h"
|
|
#include "ui/models/api/apiBenefitsModel.h"
|
|
#include "ui/models/api/apiCountryModel.h"
|
|
#include "ui/models/api/apiDevicesModel.h"
|
|
#include "ui/models/api/apiServicesModel.h"
|
|
#include "ui/models/api/apiSubscriptionPlansModel.h"
|
|
#include "ui/models/appSplitTunnelingModel.h"
|
|
#include "ui/models/clientManagementModel.h"
|
|
#include "ui/models/protocols/awgConfigModel.h"
|
|
#include "ui/models/protocols/openvpnConfigModel.h"
|
|
#include "ui/models/protocols/wireguardConfigModel.h"
|
|
#include "ui/models/protocols/xrayConfigModel.h"
|
|
#include "ui/models/protocolsModel.h"
|
|
#include "ui/models/services/torConfigModel.h"
|
|
#include "ui/models/serversModel.h"
|
|
#include "ui/models/services/sftpConfigModel.h"
|
|
#include "ui/models/services/socks5ProxyConfigModel.h"
|
|
#include "ui/models/ipSplitTunnelingModel.h"
|
|
#include "ui/models/newsModel.h"
|
|
|
|
#if !defined(Q_OS_ANDROID) && !defined(Q_OS_IOS)
|
|
#include "ui/utils/notificationHandler.h"
|
|
#endif
|
|
|
|
class CoreSignalHandlers;
|
|
class TestMultipleImports;
|
|
class TestAdminSelfHostedExport;
|
|
class TestServerEdit;
|
|
class TestDefaultServerChange;
|
|
class TestServerEdgeCases;
|
|
class TestSignalOrder;
|
|
class TestServersModelSync;
|
|
class TestGatewayStacks;
|
|
class TestComplexOperations;
|
|
class TestSettingsSignals;
|
|
class TestUiServersModelAndController;
|
|
class TestSelfHostedServerSetup;
|
|
|
|
class CoreController : public QObject
|
|
{
|
|
Q_OBJECT
|
|
friend class CoreSignalHandlers;
|
|
friend class TestMultipleImports;
|
|
friend class TestAdminSelfHostedExport;
|
|
friend class TestServerEdit;
|
|
friend class TestDefaultServerChange;
|
|
friend class TestServerEdgeCases;
|
|
friend class TestSignalOrder;
|
|
friend class TestServersModelSync;
|
|
friend class TestGatewayStacks;
|
|
friend class TestComplexOperations;
|
|
friend class TestSettingsSignals;
|
|
friend class TestUiServersModelAndController;
|
|
friend class TestSelfHostedServerSetup;
|
|
|
|
public:
|
|
explicit CoreController(const QSharedPointer<VpnConnection> &vpnConnection, SecureQSettings* settings,
|
|
QQmlApplicationEngine *engine, QObject *parent = nullptr);
|
|
|
|
PageController* pageController() const;
|
|
void setQmlRoot();
|
|
|
|
void openConnectionByIndex(int serverIndex);
|
|
void importConfigFromData(const QString &data);
|
|
void updateTranslator(const QLocale &locale);
|
|
|
|
signals:
|
|
void translationsUpdated();
|
|
void websiteUrlChanged(const QString &newUrl);
|
|
|
|
private:
|
|
void initRepositories();
|
|
void initCoreControllers();
|
|
void initModels();
|
|
void initControllers();
|
|
void initAndroidController();
|
|
void initAppleController();
|
|
void initLogging();
|
|
void initSignalHandlers();
|
|
void setQmlContextProperty(const QString &name, QObject *value);
|
|
|
|
QQmlApplicationEngine *m_engine {}; // TODO use parent child system here?
|
|
SecureQSettings* m_settings;
|
|
QSharedPointer<VpnConnection> m_vpnConnection;
|
|
QTranslator* m_translator;
|
|
|
|
SecureServersRepository* m_serversRepository;
|
|
SecureAppSettingsRepository* m_appSettingsRepository;
|
|
|
|
#if !defined(Q_OS_ANDROID) && !defined(Q_OS_IOS)
|
|
NotificationHandler* m_notificationHandler;
|
|
#endif
|
|
|
|
QMetaObject::Connection m_reloadConfigErrorOccurredConnection;
|
|
|
|
ConnectionUiController* m_connectionUiController;
|
|
FocusController* m_focusController;
|
|
PageController* m_pageController;
|
|
InstallUiController* m_installUiController;
|
|
ImportUiController* m_importController;
|
|
ImportController* m_importCoreController;
|
|
ExportUiController* m_exportUiController;
|
|
SettingsUiController* m_settingsUiController;
|
|
ServersUiController* m_serversUiController;
|
|
IpSplitTunnelingUiController* m_ipSplitTunnelingUiController;
|
|
SystemController* m_systemController;
|
|
AppSplitTunnelingUiController* m_appSplitTunnelingUiController;
|
|
AllowedDnsUiController* m_allowedDnsUiController;
|
|
LanguageUiController* m_languageUiController;
|
|
|
|
SubscriptionUiController* m_subscriptionUiController;
|
|
ApiNewsUiController* m_apiNewsUiController;
|
|
|
|
ServicesCatalogUiController* m_servicesCatalogUiController;
|
|
|
|
ServersController* m_serversController;
|
|
UsersController* m_usersController;
|
|
AppSplitTunnelingController* m_appSplitTunnelingController;
|
|
IpSplitTunnelingController* m_ipSplitTunnelingController;
|
|
AllowedDnsController* m_allowedDnsController;
|
|
ServicesCatalogController* m_servicesCatalogController;
|
|
SubscriptionController* m_subscriptionController;
|
|
NewsController* m_newsController;
|
|
InstallController* m_installController;
|
|
ExportController* m_exportController;
|
|
ConnectionController* m_connectionController;
|
|
SettingsController* m_settingsController;
|
|
|
|
ContainersModel* m_containersModel;
|
|
ContainersModel* m_defaultServerContainersModel;
|
|
ServersModel* m_serversModel;
|
|
LanguageModel* m_languageModel;
|
|
ProtocolsModel* m_protocolsModel;
|
|
IpSplitTunnelingModel* m_ipSplitTunnelingModel;
|
|
NewsModel* m_newsModel;
|
|
AllowedDnsModel* m_allowedDnsModel;
|
|
AppSplitTunnelingModel* m_appSplitTunnelingModel;
|
|
ClientManagementModel* m_clientManagementModel;
|
|
|
|
ApiServicesModel* m_apiServicesModel;
|
|
ApiSubscriptionPlansModel* m_apiSubscriptionPlansModel;
|
|
ApiBenefitsModel* m_apiBenefitsModel;
|
|
ApiCountryModel* m_apiCountryModel;
|
|
ApiAccountInfoModel* m_apiAccountInfoModel;
|
|
ApiDevicesModel* m_apiDevicesModel;
|
|
|
|
OpenVpnConfigModel* m_openVpnConfigModel;
|
|
XrayConfigModel* m_xrayConfigModel;
|
|
TorConfigModel* m_torConfigModel;
|
|
WireGuardConfigModel* m_wireGuardConfigModel;
|
|
AwgConfigModel* m_awgConfigModel;
|
|
#ifdef Q_OS_WINDOWS
|
|
Ikev2ConfigModel* m_ikev2ConfigModel;
|
|
#endif
|
|
SftpConfigModel* m_sftpConfigModel;
|
|
Socks5ProxyConfigModel* m_socks5ConfigModel;
|
|
|
|
CoreSignalHandlers* m_signalHandlers;
|
|
};
|
|
|
|
#endif // CORECONTROLLER_H
|