#ifndef EXPORTCONTROLLER_H #define EXPORTCONTROLLER_H #include #include "ui/models/clientManagementModel.h" #include "ui/models/containers_model.h" #include "ui/models/servers_model.h" class ExportController : public QObject { Q_OBJECT public: explicit ExportController(const QSharedPointer &serversModel, const QSharedPointer &containersModel, const QSharedPointer &clientManagementModel, const std::shared_ptr &settings, 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(); 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(const QString &clientName); 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 exportErrorOccurred(ErrorCode errorCode); void exportConfigChanged(); void saveFile(const QString &fileName, const QString &data); private: int getQrCodesCount(); void clearPreviousConfig(); ErrorCode generateNativeConfig(const DockerContainer container, const QString &clientName, const Proto &protocol, QJsonObject &jsonNativeConfig); QSharedPointer m_serversModel; QSharedPointer m_containersModel; QSharedPointer m_clientManagementModel; std::shared_ptr m_settings; QString m_config; QString m_nativeConfigString; QList m_qrCodes; }; #endif // EXPORTCONTROLLER_H