#ifndef INSTALLCONTROLLER_H #define INSTALLCONTROLLER_H #include #include #include "containers/containers_defs.h" #include "core/defs.h" #include "ui/models/containers_model.h" #include "ui/models/servers_model.h" #include "ui/models/protocols_model.h" class InstallController : public QObject { Q_OBJECT public: explicit InstallController(const QSharedPointer &serversModel, const QSharedPointer &containersModel, const QSharedPointer &protocolsModel, const std::shared_ptr &settings, QObject *parent = nullptr); ~InstallController(); public slots: void install(DockerContainer container, int port, TransportProto transportProto); void setCurrentlyInstalledServerCredentials(const QString &hostName, const QString &userName, const QString &secretData); void setShouldCreateServer(bool shouldCreateServer); void scanServerForInstalledContainers(); void updateContainer(QJsonObject config); void removeCurrentlyProcessedServer(); void removeAllContainers(); void removeCurrentlyProcessedContainer(); QRegularExpression ipAddressPortRegExp(); QRegularExpression ipAddressRegExp(); void mountSftpDrive(const QString &port, const QString &password, const QString &username); bool checkSshConnection(); void setEncryptedPassphrase(QString passphrase); void addEmptyServer(); signals: void installContainerFinished(const QString &finishMessage, bool isServiceInstall); void installServerFinished(const QString &finishMessage); void updateContainerFinished(const QString& message); void scanServerFinished(bool isInstalledContainerFound); void removeCurrentlyProcessedServerFinished(const QString &finishedMessage); void removeAllContainersFinished(const QString &finishedMessage); void removeCurrentlyProcessedContainerFinished(const QString &finishedMessage); void installationErrorOccurred(const QString &errorMessage); void serverAlreadyExists(int serverIndex); void passphraseRequestStarted(); void passphraseRequestFinished(); void serverIsBusy(const bool isBusy); void currentContainerUpdated(); private: void installServer(DockerContainer container, QJsonObject &config); void installContainer(DockerContainer container, QJsonObject &config); bool isServerAlreadyExists(); QSharedPointer m_serversModel; QSharedPointer m_containersModel; QSharedPointer m_protocolModel; std::shared_ptr m_settings; ServerCredentials m_currentlyInstalledServerCredentials; bool m_shouldCreateServer; QString m_privateKeyPassphrase; #ifndef Q_OS_IOS QList> m_sftpMountProcesses; #endif }; #endif // INSTALLCONTROLLER_H