#ifndef EXPORTCONTROLLER_H #define EXPORTCONTROLLER_H #include #include "configurators/vpn_configurator.h" #include "ui/models/containers_model.h" #include "ui/models/servers_model.h" #include "ui/models/clientManagementModel.h" #ifdef Q_OS_ANDROID #include "platforms/android/authResultReceiver.h" #endif class ExportController : public QObject { Q_OBJECT public: explicit ExportController(const QSharedPointer &serversModel, const QSharedPointer &containersModel, const QSharedPointer &clientManagementModel, const std::shared_ptr &settings, const std::shared_ptr &configurator, QObject *parent = nullptr); Q_PROPERTY(QList qrCodes READ getQrCodes NOTIFY exportConfigChanged) Q_PROPERTY(int qrCodesCount READ getQrCodesCount NOTIFY exportConfigChanged) Q_PROPERTY(QString config READ getConfig NOTIFY exportConfigChanged) Q_PROPERTY(QString nativeConfigString READ getNativeConfigString NOTIFY exportConfigChanged) public slots: void generateFullAccessConfig(); #if defined(Q_OS_ANDROID) void generateFullAccessConfigAndroid(); #endif void generateConnectionConfig(const QString &clientName); void generateOpenVpnConfig(const QString &clientName); void generateWireGuardConfig(const QString &clientName); void generateAwgConfig(const QString &clientName); void generateShadowSocksConfig(); void generateCloakConfig(); void generateXrayConfig(); QString getConfig(); QString getNativeConfigString(); QList getQrCodes(); void exportConfig(const QString &fileName); void updateClientManagementModel(const DockerContainer container, ServerCredentials credentials); void revokeConfig(const int row, const DockerContainer container, ServerCredentials credentials); void renameClient(const int row, const QString &clientName, const DockerContainer container, ServerCredentials credentials); signals: void generateConfig(int type); void exportErrorOccurred(const QString &errorMessage); void exportConfigChanged(); void saveFile(const QString &fileName, const QString &data); private: QList generateQrCodeImageSeries(const QByteArray &data); QString svgToBase64(const QString &image); int getQrCodesCount(); void clearPreviousConfig(); QSharedPointer m_serversModel; QSharedPointer m_containersModel; QSharedPointer m_clientManagementModel; std::shared_ptr m_settings; std::shared_ptr m_configurator; QString m_config; QString m_nativeConfigString; QList m_qrCodes; #ifdef Q_OS_ANDROID QSharedPointer m_authResultNotifier; QSharedPointer m_authResultReceiver; #endif }; #endif // EXPORTCONTROLLER_H