supported container on connection (#736)
This commit is contained in:
parent
e39efb1d68
commit
10ea9b418a
7 changed files with 77 additions and 46 deletions
|
|
@ -62,6 +62,11 @@ void ConnectionController::openConnection()
|
||||||
DockerContainer container =
|
DockerContainer container =
|
||||||
qvariant_cast<DockerContainer>(m_serversModel->data(serverIndex, ServersModel::Roles::DefaultContainerRole));
|
qvariant_cast<DockerContainer>(m_serversModel->data(serverIndex, ServersModel::Roles::DefaultContainerRole));
|
||||||
|
|
||||||
|
if (!m_containersModel->isSupportedByCurrentPlatform(container)) {
|
||||||
|
emit connectionErrorOccurred(tr("The selected protocol is not supported on the current platform"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (container == DockerContainer::None) {
|
if (container == DockerContainer::None) {
|
||||||
emit connectionErrorOccurred(tr("VPN Protocols is not installed.\n Please install VPN container at first"));
|
emit connectionErrorOccurred(tr("VPN Protocols is not installed.\n Please install VPN container at first"));
|
||||||
return;
|
return;
|
||||||
|
|
|
||||||
|
|
@ -188,19 +188,24 @@ void InstallController::installServer(const DockerContainer container, const QMa
|
||||||
VpnConfigurationsController vpnConfigurationController(m_settings);
|
VpnConfigurationsController vpnConfigurationController(m_settings);
|
||||||
for (auto iterator = installedContainers.begin(); iterator != installedContainers.end(); iterator++) {
|
for (auto iterator = installedContainers.begin(); iterator != installedContainers.end(); iterator++) {
|
||||||
auto containerConfig = iterator.value();
|
auto containerConfig = iterator.value();
|
||||||
auto errorCode =
|
|
||||||
vpnConfigurationController.createProtocolConfigForContainer(m_processedServerCredentials, iterator.key(), containerConfig);
|
|
||||||
if (errorCode) {
|
|
||||||
emit installationErrorOccurred(errorString(errorCode));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
containerConfigs.append(containerConfig);
|
|
||||||
|
|
||||||
errorCode = m_clientManagementModel->appendClient(iterator.key(), serverCredentials, containerConfig,
|
if (ContainerProps::isSupportedByCurrentPlatform(container)) {
|
||||||
QString("Admin [%1]").arg(QSysInfo::prettyProductName()));
|
auto errorCode =
|
||||||
if (errorCode) {
|
vpnConfigurationController.createProtocolConfigForContainer(m_processedServerCredentials, iterator.key(), containerConfig);
|
||||||
emit installationErrorOccurred(errorString(errorCode));
|
if (errorCode) {
|
||||||
return;
|
emit installationErrorOccurred(errorString(errorCode));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
containerConfigs.append(containerConfig);
|
||||||
|
|
||||||
|
errorCode = m_clientManagementModel->appendClient(iterator.key(), serverCredentials, containerConfig,
|
||||||
|
QString("Admin [%1]").arg(QSysInfo::prettyProductName()));
|
||||||
|
if (errorCode) {
|
||||||
|
emit installationErrorOccurred(errorString(errorCode));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
containerConfigs.append(containerConfig);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -222,18 +227,23 @@ void InstallController::installContainer(const DockerContainer container, const
|
||||||
QJsonObject containerConfig = m_containersModel->getContainerConfig(iterator.key());
|
QJsonObject containerConfig = m_containersModel->getContainerConfig(iterator.key());
|
||||||
if (containerConfig.isEmpty()) {
|
if (containerConfig.isEmpty()) {
|
||||||
containerConfig = iterator.value();
|
containerConfig = iterator.value();
|
||||||
auto errorCode = vpnConfigurationController.createProtocolConfigForContainer(serverCredentials, iterator.key(), containerConfig);
|
|
||||||
if (errorCode) {
|
|
||||||
emit installationErrorOccurred(errorString(errorCode));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
m_serversModel->addContainerConfig(iterator.key(), containerConfig);
|
|
||||||
|
|
||||||
errorCode = m_clientManagementModel->appendClient(iterator.key(), serverCredentials, containerConfig,
|
if (ContainerProps::isSupportedByCurrentPlatform(container)) {
|
||||||
QString("Admin [%1]").arg(QSysInfo::prettyProductName()));
|
auto errorCode = vpnConfigurationController.createProtocolConfigForContainer(serverCredentials, iterator.key(), containerConfig);
|
||||||
if (errorCode) {
|
if (errorCode) {
|
||||||
emit installationErrorOccurred(errorString(errorCode));
|
emit installationErrorOccurred(errorString(errorCode));
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
m_serversModel->addContainerConfig(iterator.key(), containerConfig);
|
||||||
|
|
||||||
|
errorCode = m_clientManagementModel->appendClient(iterator.key(), serverCredentials, containerConfig,
|
||||||
|
QString("Admin [%1]").arg(QSysInfo::prettyProductName()));
|
||||||
|
if (errorCode) {
|
||||||
|
emit installationErrorOccurred(errorString(errorCode));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
m_serversModel->addContainerConfig(iterator.key(), containerConfig);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (container != iterator.key()) { // skip the newly installed container
|
if (container != iterator.key()) { // skip the newly installed container
|
||||||
|
|
@ -279,22 +289,28 @@ void InstallController::scanServerForInstalledContainers()
|
||||||
VpnConfigurationsController vpnConfigurationController(m_settings);
|
VpnConfigurationsController vpnConfigurationController(m_settings);
|
||||||
|
|
||||||
for (auto iterator = installedContainers.begin(); iterator != installedContainers.end(); iterator++) {
|
for (auto iterator = installedContainers.begin(); iterator != installedContainers.end(); iterator++) {
|
||||||
QJsonObject containerConfig = m_containersModel->getContainerConfig(iterator.key());
|
auto container = iterator.key();
|
||||||
|
QJsonObject containerConfig = m_containersModel->getContainerConfig(container);
|
||||||
if (containerConfig.isEmpty()) {
|
if (containerConfig.isEmpty()) {
|
||||||
containerConfig = iterator.value();
|
containerConfig = iterator.value();
|
||||||
auto errorCode =
|
|
||||||
vpnConfigurationController.createProtocolConfigForContainer(serverCredentials, iterator.key(), containerConfig);
|
|
||||||
if (errorCode) {
|
|
||||||
emit installationErrorOccurred(errorString(errorCode));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
m_serversModel->addContainerConfig(iterator.key(), containerConfig);
|
|
||||||
|
|
||||||
errorCode = m_clientManagementModel->appendClient(iterator.key(), serverCredentials, containerConfig,
|
if (ContainerProps::isSupportedByCurrentPlatform(container)) {
|
||||||
QString("Admin [%1]").arg(QSysInfo::prettyProductName()));
|
auto errorCode =
|
||||||
if (errorCode) {
|
vpnConfigurationController.createProtocolConfigForContainer(serverCredentials, container, containerConfig);
|
||||||
emit installationErrorOccurred(errorString(errorCode));
|
if (errorCode) {
|
||||||
return;
|
emit installationErrorOccurred(errorString(errorCode));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
m_serversModel->addContainerConfig(container, containerConfig);
|
||||||
|
|
||||||
|
errorCode = m_clientManagementModel->appendClient(container, serverCredentials, containerConfig,
|
||||||
|
QString("Admin [%1]").arg(QSysInfo::prettyProductName()));
|
||||||
|
if (errorCode) {
|
||||||
|
emit installationErrorOccurred(errorString(errorCode));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
m_serversModel->addContainerConfig(container, containerConfig);
|
||||||
}
|
}
|
||||||
|
|
||||||
isInstalledContainerAddedToGui = true;
|
isInstalledContainerAddedToGui = true;
|
||||||
|
|
|
||||||
|
|
@ -83,6 +83,16 @@ QJsonObject ContainersModel::getContainerConfig(const int containerIndex)
|
||||||
return qvariant_cast<QJsonObject>(data(index(containerIndex), ConfigRole));
|
return qvariant_cast<QJsonObject>(data(index(containerIndex), ConfigRole));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ContainersModel::isSupportedByCurrentPlatform(const int containerIndex)
|
||||||
|
{
|
||||||
|
return qvariant_cast<bool>(data(index(containerIndex), IsSupportedRole));
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ContainersModel::isServiceContainer(const int containerIndex)
|
||||||
|
{
|
||||||
|
return qvariant_cast<amnezia::ServiceType>(data(index(containerIndex), ServiceTypeRole) == ServiceType::Other);
|
||||||
|
}
|
||||||
|
|
||||||
QHash<int, QByteArray> ContainersModel::roleNames() const
|
QHash<int, QByteArray> ContainersModel::roleNames() const
|
||||||
{
|
{
|
||||||
QHash<int, QByteArray> roles;
|
QHash<int, QByteArray> roles;
|
||||||
|
|
|
||||||
|
|
@ -49,6 +49,9 @@ public slots:
|
||||||
|
|
||||||
QJsonObject getContainerConfig(const int containerIndex);
|
QJsonObject getContainerConfig(const int containerIndex);
|
||||||
|
|
||||||
|
bool isSupportedByCurrentPlatform(const int containerIndex);
|
||||||
|
bool isServiceContainer(const int containerIndex);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
QHash<int, QByteArray> roleNames() const override;
|
QHash<int, QByteArray> roleNames() const override;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -405,8 +405,9 @@ void ServersModel::addContainerConfig(const int containerIndex, const QJsonObjec
|
||||||
server.insert(config_key::containers, containers);
|
server.insert(config_key::containers, containers);
|
||||||
|
|
||||||
auto defaultContainer = server.value(config_key::defaultContainer).toString();
|
auto defaultContainer = server.value(config_key::defaultContainer).toString();
|
||||||
if ((ContainerProps::containerFromString(defaultContainer) == DockerContainer::None
|
if (ContainerProps::containerFromString(defaultContainer) == DockerContainer::None
|
||||||
|| ContainerProps::containerService(container) != ServiceType::Other)) {
|
&& ContainerProps::containerService(container) != ServiceType::Other
|
||||||
|
&& ContainerProps::isSupportedByCurrentPlatform(container)) {
|
||||||
server.insert(config_key::defaultContainer, ContainerProps::containerToString(container));
|
server.insert(config_key::defaultContainer, ContainerProps::containerToString(container));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,7 @@ ListView {
|
||||||
imageSource: "qrc:/images/controls/download.svg"
|
imageSource: "qrc:/images/controls/download.svg"
|
||||||
showImage: !isInstalled
|
showImage: !isInstalled
|
||||||
|
|
||||||
checkable: isInstalled && !ConnectionController.isConnected && isSupported
|
checkable: isInstalled && !ConnectionController.isConnected
|
||||||
checked: proxyDefaultServerContainersModel.mapToSource(index) === ServersModel.getDefaultServerData("defaultContainer")
|
checked: proxyDefaultServerContainersModel.mapToSource(index) === ServersModel.getDefaultServerData("defaultContainer")
|
||||||
|
|
||||||
onClicked: {
|
onClicked: {
|
||||||
|
|
@ -64,11 +64,6 @@ ListView {
|
||||||
containersDropDown.close()
|
containersDropDown.close()
|
||||||
ServersModel.setDefaultContainer(ServersModel.defaultIndex, proxyDefaultServerContainersModel.mapToSource(index))
|
ServersModel.setDefaultContainer(ServersModel.defaultIndex, proxyDefaultServerContainersModel.mapToSource(index))
|
||||||
} else {
|
} else {
|
||||||
if (!isSupported && isInstalled) {
|
|
||||||
PageController.showErrorMessage(qsTr("The selected protocol is not supported on the current platform"))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
ContainersModel.setProcessedContainerIndex(proxyDefaultServerContainersModel.mapToSource(index))
|
ContainersModel.setProcessedContainerIndex(proxyDefaultServerContainersModel.mapToSource(index))
|
||||||
InstallController.setShouldCreateServer(false)
|
InstallController.setShouldCreateServer(false)
|
||||||
PageController.goToPage(PageEnum.PageSetupWizardProtocolSettings)
|
PageController.goToPage(PageEnum.PageSetupWizardProtocolSettings)
|
||||||
|
|
|
||||||
|
|
@ -25,8 +25,9 @@ PageType {
|
||||||
target: InstallController
|
target: InstallController
|
||||||
|
|
||||||
function onInstallContainerFinished(finishedMessage, isServiceInstall) {
|
function onInstallContainerFinished(finishedMessage, isServiceInstall) {
|
||||||
if (!ConnectionController.isConnected && !isServiceInstall) {
|
var containerIndex = ContainersModel.getProcessedContainerIndex()
|
||||||
ServersModel.setDefaultContainer(ServersModel.processedIndex, ContainersModel.getProcessedContainerIndex())
|
if (!ConnectionController.isConnected && !ContainersModel.isServiceContainer(containerIndex)) {
|
||||||
|
ServersModel.setDefaultContainer(ServersModel.processedIndex, containerIndex)
|
||||||
}
|
}
|
||||||
|
|
||||||
PageController.closePage() // close installing page
|
PageController.closePage() // close installing page
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue