Various types containers support

This commit is contained in:
pokamest 2021-09-20 21:51:28 +03:00
parent 0d9f1ba95b
commit 157d7c4f23
39 changed files with 609 additions and 479 deletions

View file

@ -3,27 +3,9 @@
NewServerProtocolsLogic::NewServerProtocolsLogic(UiLogic *logic, QObject *parent):
PageLogicBase(logic, parent),
m_pushButtonSettingsCloakChecked{false},
m_pushButtonSettingsSsChecked{false},
m_pushButtonSettingsOpenvpnChecked{false},
m_lineEditCloakPortText{},
m_lineEditCloakSiteText{},
m_lineEditSsPortText{},
m_comboBoxSsCipherText{"chacha20-ietf-poly1305"},
m_lineEditOpenvpnPortText{},
m_comboBoxOpenvpnProtoText{"udp"},
m_frameSettingsParentWireguardVisible{false},
m_checkBoxCloakChecked{true},
m_checkBoxSsChecked{false},
m_checkBoxOpenVpnChecked{false},
m_progressBarConnectionMinimum{0},
m_progressBarConnectionMaximum{100}
{
set_frameSettingsParentWireguardVisible(false);
connect(this, &NewServerProtocolsLogic::pushButtonConfigureClicked, this, [this](){
uiLogic()->installServer(getInstallConfigsFromProtocolsPage());
});
}
@ -31,57 +13,23 @@ void NewServerProtocolsLogic::updatePage()
{
set_progressBarConnectionMinimum(0);
set_progressBarConnectionMaximum(300);
set_pushButtonSettingsCloakChecked(true);
set_pushButtonSettingsCloakChecked(false);
set_pushButtonSettingsSsChecked(true);
set_pushButtonSettingsSsChecked(false);
set_lineEditCloakPortText(amnezia::protocols::cloak::defaultPort);
set_lineEditCloakSiteText(amnezia::protocols::cloak::defaultRedirSite);
set_lineEditSsPortText(amnezia::protocols::shadowsocks::defaultPort);
set_comboBoxSsCipherText(amnezia::protocols::shadowsocks::defaultCipher);
set_lineEditOpenvpnPortText(amnezia::protocols::openvpn::defaultPort);
set_comboBoxOpenvpnProtoText(amnezia::protocols::openvpn::defaultTransportProto);
}
QMap<DockerContainer, QJsonObject> NewServerProtocolsLogic::getInstallConfigsFromProtocolsPage() const
void NewServerProtocolsLogic::onPushButtonConfigureClicked(DockerContainer c, int port, TransportProto tp)
{
QJsonObject cloakConfig {
{ config_key::container, amnezia::containerToString(DockerContainer::OpenVpnOverCloak) },
{ config_key::cloak, QJsonObject {
{ config_key::port, lineEditCloakPortText() },
{ config_key::site, lineEditCloakSiteText() }}
}
};
QJsonObject ssConfig {
{ config_key::container, amnezia::containerToString(DockerContainer::OpenVpnOverShadowSocks) },
{ config_key::shadowsocks, QJsonObject {
{ config_key::port, lineEditSsPortText() },
{ config_key::cipher, comboBoxSsCipherText() }}
}
};
QJsonObject openVpnConfig {
{ config_key::container, amnezia::containerToString(DockerContainer::OpenVpn) },
{ config_key::openvpn, QJsonObject {
{ config_key::port, lineEditOpenvpnPortText() },
{ config_key::transport_proto, comboBoxOpenvpnProtoText() }}
}
};
QMap<DockerContainer, QJsonObject> containers;
Protocol mainProto = ContainerProps::defaultProtocol(c);
if (checkBoxCloakChecked()) {
containers.insert(DockerContainer::OpenVpnOverCloak, cloakConfig);
}
QJsonObject config {
{ config_key::container, ContainerProps::containerToString(c) },
{ ProtocolProps::protoToString(mainProto), QJsonObject {
{ config_key::port, QString::number(port) },
{ config_key::transport_proto, ProtocolProps::transportProtoToString(tp, mainProto) }}
}
};
if (checkBoxSsChecked()) {
containers.insert(DockerContainer::OpenVpnOverShadowSocks, ssConfig);
}
containers.insert(c, config);
if (checkBoxOpenVpnChecked()) {
containers.insert(DockerContainer::OpenVpn, openVpnConfig);
}
return containers;
uiLogic()->installServer(containers);
}