Files
amnezia-client/client/ui/pages_logic/ServerContainersLogic.cpp
T

103 lines
3.8 KiB
C++
Raw Normal View History

2021-09-16 16:19:14 +03:00
#include "ServerContainersLogic.h"
2021-09-07 19:26:58 +03:00
#include "ShareConnectionLogic.h"
#include "ServerConfiguringProgressLogic.h"
#include <QApplication>
2021-09-07 19:26:58 +03:00
#include "protocols/CloakLogic.h"
#include "protocols/OpenVpnLogic.h"
#include "protocols/ShadowSocksLogic.h"
#include "core/servercontroller.h"
#include <functional>
#include "../uilogic.h"
2022-01-28 16:03:21 +03:00
#include "../pages_logic/VpnLogic.h"
#include "vpnconnection.h"
2021-09-07 19:26:58 +03:00
2021-09-07 21:01:56 +03:00
ServerContainersLogic::ServerContainersLogic(UiLogic *logic, QObject *parent):
PageLogicBase(logic, parent)
2021-09-07 19:26:58 +03:00
{
}
void ServerContainersLogic::onUpdatePage()
2021-09-07 19:26:58 +03:00
{
2021-09-16 16:19:14 +03:00
ContainersModel *c_model = qobject_cast<ContainersModel *>(uiLogic()->containersModel());
c_model->setSelectedServerIndex(uiLogic()->selectedServerIndex);
ProtocolsModel *p_model = qobject_cast<ProtocolsModel *>(uiLogic()->protocolsModel());
p_model->setSelectedServerIndex(uiLogic()->selectedServerIndex);
emit updatePage();
2021-09-07 19:26:58 +03:00
}
void ServerContainersLogic::onPushButtonProtoSettingsClicked(DockerContainer c, Proto p)
2021-09-16 16:19:14 +03:00
{
2021-09-19 14:31:38 +03:00
qDebug()<< "ServerContainersLogic::onPushButtonProtoSettingsClicked" << c << p;
2021-09-16 16:19:14 +03:00
uiLogic()->selectedDockerContainer = c;
2022-08-25 12:47:02 +03:00
uiLogic()->protocolLogic(p)->updateProtocolPage(m_settings->protocolConfig(uiLogic()->selectedServerIndex, uiLogic()->selectedDockerContainer, p),
2021-09-16 16:19:14 +03:00
uiLogic()->selectedDockerContainer,
2022-08-25 12:47:02 +03:00
m_settings->haveAuthData(uiLogic()->selectedServerIndex));
2021-09-16 16:19:14 +03:00
2021-09-19 14:31:38 +03:00
emit uiLogic()->goToProtocolPage(p);
2021-09-16 16:19:14 +03:00
}
2021-09-19 14:31:38 +03:00
void ServerContainersLogic::onPushButtonDefaultClicked(DockerContainer c)
{
2022-08-25 12:47:02 +03:00
if (m_settings->defaultContainer(uiLogic()->selectedServerIndex) == c) return;
2022-01-28 16:03:21 +03:00
2022-08-25 12:47:02 +03:00
m_settings->setDefaultContainer(uiLogic()->selectedServerIndex, c);
2021-11-17 15:01:48 +03:00
uiLogic()->onUpdateAllPages();
2022-01-28 16:03:21 +03:00
2022-08-25 12:47:02 +03:00
if (uiLogic()->selectedServerIndex != m_settings->defaultServerIndex()) return;
2022-01-28 16:03:21 +03:00
if (!uiLogic()->m_vpnConnection) return;
if (!uiLogic()->m_vpnConnection->isConnected()) return;
2022-08-29 01:32:42 +03:00
uiLogic()->pageLogic<VpnLogic>()->onDisconnect();
uiLogic()->pageLogic<VpnLogic>()->onConnect();
2021-09-19 14:31:38 +03:00
}
void ServerContainersLogic::onPushButtonShareClicked(DockerContainer c)
{
2022-08-29 01:32:42 +03:00
uiLogic()->pageLogic<ShareConnectionLogic>()->updateSharingPage(uiLogic()->selectedServerIndex, c);
2021-09-19 14:31:38 +03:00
emit uiLogic()->goToPage(Page::ShareConnection);
}
2021-09-07 19:26:58 +03:00
void ServerContainersLogic::onPushButtonRemoveClicked(DockerContainer container)
2021-09-07 19:26:58 +03:00
{
//buttonSetEnabledFunc(false);
2022-08-25 17:35:28 +03:00
ErrorCode e = m_serverController->removeContainer(m_settings->serverCredentials(uiLogic()->selectedServerIndex), container);
2022-08-25 12:47:02 +03:00
m_settings->removeContainerConfig(uiLogic()->selectedServerIndex, container);
//buttonSetEnabledFunc(true);
2022-08-25 12:47:02 +03:00
if (m_settings->defaultContainer(uiLogic()->selectedServerIndex) == container) {
const auto &c = m_settings->containers(uiLogic()->selectedServerIndex);
if (c.isEmpty()) m_settings->setDefaultContainer(uiLogic()->selectedServerIndex, DockerContainer::None);
else m_settings->setDefaultContainer(uiLogic()->selectedServerIndex, c.keys().first());
}
2021-11-17 15:01:48 +03:00
uiLogic()->onUpdateAllPages();
}
2021-09-07 19:26:58 +03:00
void ServerContainersLogic::onPushButtonContinueClicked(DockerContainer c, int port, TransportProto tp)
{
2022-08-25 17:35:28 +03:00
QJsonObject config = m_serverController->createContainerInitialConfig(c, port, tp);
2021-09-07 19:26:58 +03:00
emit uiLogic()->goToPage(Page::ServerConfiguringProgress);
qApp->processEvents();
2021-09-07 19:26:58 +03:00
2022-08-29 01:32:42 +03:00
ErrorCode e = uiLogic()->pageLogic<ServerConfiguringProgressLogic>()->doInstallAction([this, c, &config](){
2022-08-25 17:35:28 +03:00
return m_serverController->setupContainer(m_settings->serverCredentials(uiLogic()->selectedServerIndex), c, config);
});
2021-09-07 19:26:58 +03:00
if (!e) {
2022-08-25 12:47:02 +03:00
m_settings->setContainerConfig(uiLogic()->selectedServerIndex, c, config);
if (ContainerProps::containerService(c) == ServiceType::Vpn) {
2022-08-25 12:47:02 +03:00
m_settings->setDefaultContainer(uiLogic()->selectedServerIndex, c);
}
2021-09-07 19:26:58 +03:00
}
2021-11-17 15:01:48 +03:00
uiLogic()->onUpdateAllPages();
emit uiLogic()->closePage();
}