From deda2e158e7683ad80743b112a5a2fdc821d7c8c Mon Sep 17 00:00:00 2001 From: pokamest Date: Mon, 6 Sep 2021 14:35:57 +0300 Subject: [PATCH] ShadowSocksLogic CloakLogic --- client/resources.qrc | 2 +- .../ui/pages_logic/protocols/CloakLogic.cpp | 293 +++++++++-- client/ui/pages_logic/protocols/CloakLogic.h | 69 ++- .../ui/pages_logic/protocols/OpenVpnLogic.cpp | 38 +- .../ui/pages_logic/protocols/OpenVpnLogic.h | 6 +- .../protocols/ShadowSocksLogic.cpp | 269 ++++++++-- .../pages_logic/protocols/ShadowSocksLogic.h | 67 ++- client/ui/qml/Pages/PageServerProtocols.qml | 2 +- .../ui/qml/Pages/Protocols/PageProtoCloak.qml | 32 +- ...hadowSock.qml => PageProtoShadowSocks.qml} | 28 +- client/ui/qml/main.qml | 4 +- client/ui/uilogic.cpp | 493 +----------------- client/ui/uilogic.h | 143 +---- 13 files changed, 684 insertions(+), 762 deletions(-) rename client/ui/qml/Pages/Protocols/{PageProtoShadowSock.qml => PageProtoShadowSocks.qml} (75%) diff --git a/client/resources.qrc b/client/resources.qrc index 06d95401..ece75a48 100644 --- a/client/resources.qrc +++ b/client/resources.qrc @@ -102,6 +102,6 @@ images/background_connected@2x.png ui/qml/Pages/Protocols/PageProtoCloak.qml ui/qml/Pages/Protocols/PageProtoOpenVPN.qml - ui/qml/Pages/Protocols/PageProtoShadowSock.qml + ui/qml/Pages/Protocols/PageProtoShadowSocks.qml diff --git a/client/ui/pages_logic/protocols/CloakLogic.cpp b/client/ui/pages_logic/protocols/CloakLogic.cpp index 87e08994..c6dd5ff9 100644 --- a/client/ui/pages_logic/protocols/CloakLogic.cpp +++ b/client/ui/pages_logic/protocols/CloakLogic.cpp @@ -1,51 +1,264 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//#include "configurators/cloak_configurator.h" -//#include "configurators/vpn_configurator.h" -//#include "configurators/openvpn_configurator.h" -//#include "configurators/shadowsocks_configurator.h" -//#include "configurators/ssh_configurator.h" - -//#include "core/servercontroller.h" -//#include "core/server_defs.h" -//#include "core/errorstrings.h" - -//#include "protocols/protocols_defs.h" -//#include "protocols/shadowsocksvpnprotocol.h" - -#include "debug.h" -#include "defines.h" #include "CloakLogic.h" -#include "utils.h" -#include "vpnconnection.h" +#include "core/servercontroller.h" #include - +#include "../../uilogic.h" using namespace amnezia; using namespace PageEnumNS; - CloakLogic::CloakLogic(UiLogic *uiLogic, QObject *parent): QObject(parent), - m_uiLogic(uiLogic) + m_uiLogic(uiLogic), + m_comboBoxProtoCloakCipherText{"chacha20-poly1305"}, + m_lineEditProtoCloakSiteText{"tile.openstreetmap.org"}, + m_lineEditProtoCloakPortText{}, + m_widgetProtoCloakEnabled{false}, + m_pushButtonProtoCloakSaveVisible{false}, + m_progressBarProtoCloakResetVisible{false}, + m_lineEditProtoCloakPortEnabled{false}, + m_pageProtoCloakEnabled{true}, + m_labelProtoCloakInfoVisible{true}, + m_labelProtoCloakInfoText{}, + m_progressBarProtoCloakResetValue{0}, + m_progressBarProtoCloakResetMaximium{100} { } + +void CloakLogic::updateCloakPage(const QJsonObject &ckConfig, DockerContainer container, bool haveAuthData) +{ + setWidgetProtoCloakEnabled(haveAuthData); + setPushButtonProtoCloakSaveVisible(haveAuthData); + setProgressBarProtoCloakResetVisible(haveAuthData); + + setComboBoxProtoCloakCipherText(ckConfig.value(config_key::cipher). + toString(protocols::cloak::defaultCipher)); + + setLineEditProtoCloakSiteText(ckConfig.value(config_key::site). + toString(protocols::cloak::defaultRedirSite)); + + setLineEditProtoCloakPortText(ckConfig.value(config_key::port). + toString(protocols::cloak::defaultPort)); + + setLineEditProtoCloakPortEnabled(container == DockerContainer::OpenVpnOverCloak); +} + + + +QJsonObject CloakLogic::getCloakConfigFromPage(QJsonObject oldConfig) +{ + oldConfig.insert(config_key::cipher, getComboBoxProtoCloakCipherText()); + oldConfig.insert(config_key::site, getLineEditProtoCloakSiteText()); + oldConfig.insert(config_key::port, getLineEditProtoCloakPortText()); + + return oldConfig; +} + +QString CloakLogic::getComboBoxProtoCloakCipherText() const +{ + return m_comboBoxProtoCloakCipherText; +} + +void CloakLogic::setComboBoxProtoCloakCipherText(const QString &comboBoxProtoCloakCipherText) +{ + if (m_comboBoxProtoCloakCipherText != comboBoxProtoCloakCipherText) { + m_comboBoxProtoCloakCipherText = comboBoxProtoCloakCipherText; + emit comboBoxProtoCloakCipherTextChanged(); + } +} + +QString CloakLogic::getLineEditProtoCloakPortText() const +{ + return m_lineEditProtoCloakPortText; +} + +void CloakLogic::setLineEditProtoCloakPortText(const QString &lineEditProtoCloakPortText) +{ + if (m_lineEditProtoCloakPortText != lineEditProtoCloakPortText) { + m_lineEditProtoCloakPortText = lineEditProtoCloakPortText; + emit lineEditProtoCloakPortTextChanged(); + } +} + +QString CloakLogic::getLineEditProtoCloakSiteText() const +{ + return m_lineEditProtoCloakSiteText; +} + +void CloakLogic::setLineEditProtoCloakSiteText(const QString &lineEditProtoCloakSiteText) +{ + if (m_lineEditProtoCloakSiteText != lineEditProtoCloakSiteText) { + m_lineEditProtoCloakSiteText = lineEditProtoCloakSiteText; + emit lineEditProtoCloakSiteTextChanged(); + } +} + +bool CloakLogic::getWidgetProtoCloakEnabled() const +{ + return m_widgetProtoCloakEnabled; +} + +void CloakLogic::setWidgetProtoCloakEnabled(bool widgetProtoCloakEnabled) +{ + if (m_widgetProtoCloakEnabled != widgetProtoCloakEnabled) { + m_widgetProtoCloakEnabled = widgetProtoCloakEnabled; + emit widgetProtoCloakEnabledChanged(); + } +} + +bool CloakLogic::getPushButtonProtoCloakSaveVisible() const +{ + return m_pushButtonProtoCloakSaveVisible; +} + +void CloakLogic::setPushButtonProtoCloakSaveVisible(bool pushButtonProtoCloakSaveVisible) +{ + if (m_pushButtonProtoCloakSaveVisible != pushButtonProtoCloakSaveVisible) { + m_pushButtonProtoCloakSaveVisible = pushButtonProtoCloakSaveVisible; + emit pushButtonProtoCloakSaveVisibleChanged(); + } +} + +bool CloakLogic::getProgressBarProtoCloakResetVisible() const +{ + return m_progressBarProtoCloakResetVisible; +} + +void CloakLogic::setProgressBarProtoCloakResetVisible(bool progressBarProtoCloakResetVisible) +{ + if (m_progressBarProtoCloakResetVisible != progressBarProtoCloakResetVisible) { + m_progressBarProtoCloakResetVisible = progressBarProtoCloakResetVisible; + emit progressBarProtoCloakResetVisibleChanged(); + } +} + +bool CloakLogic::getLineEditProtoCloakPortEnabled() const +{ + return m_lineEditProtoCloakPortEnabled; +} + +void CloakLogic::setLineEditProtoCloakPortEnabled(bool lineEditProtoCloakPortEnabled) +{ + if (m_lineEditProtoCloakPortEnabled != lineEditProtoCloakPortEnabled) { + m_lineEditProtoCloakPortEnabled = lineEditProtoCloakPortEnabled; + emit lineEditProtoCloakPortEnabledChanged(); + } +} + +bool CloakLogic::getPageProtoCloakEnabled() const +{ + return m_pageProtoCloakEnabled; +} + +void CloakLogic::setPageProtoCloakEnabled(bool pageProtoCloakEnabled) +{ + if (m_pageProtoCloakEnabled != pageProtoCloakEnabled) { + m_pageProtoCloakEnabled = pageProtoCloakEnabled; + emit pageProtoCloakEnabledChanged(); + } +} + +bool CloakLogic::getLabelProtoCloakInfoVisible() const +{ + return m_labelProtoCloakInfoVisible; +} + +void CloakLogic::setLabelProtoCloakInfoVisible(bool labelProtoCloakInfoVisible) +{ + if (m_labelProtoCloakInfoVisible != labelProtoCloakInfoVisible) { + m_labelProtoCloakInfoVisible = labelProtoCloakInfoVisible; + emit labelProtoCloakInfoVisibleChanged(); + } +} + +QString CloakLogic::getLabelProtoCloakInfoText() const +{ + return m_labelProtoCloakInfoText; +} + +void CloakLogic::setLabelProtoCloakInfoText(const QString &labelProtoCloakInfoText) +{ + if (m_labelProtoCloakInfoText != labelProtoCloakInfoText) { + m_labelProtoCloakInfoText = labelProtoCloakInfoText; + emit labelProtoCloakInfoTextChanged(); + } +} + +int CloakLogic::getProgressBarProtoCloakResetValue() const +{ + return m_progressBarProtoCloakResetValue; +} + +void CloakLogic::setProgressBarProtoCloakResetValue(int progressBarProtoCloakResetValue) +{ + if (m_progressBarProtoCloakResetValue != progressBarProtoCloakResetValue) { + m_progressBarProtoCloakResetValue = progressBarProtoCloakResetValue; + emit progressBarProtoCloakResetValueChanged(); + } +} + +int CloakLogic::getProgressBarProtoCloakResetMaximium() const +{ + return m_progressBarProtoCloakResetMaximium; +} + +void CloakLogic::setProgressBarProtoCloakResetMaximium(int progressBarProtoCloakResetMaximium) +{ + if (m_progressBarProtoCloakResetMaximium != progressBarProtoCloakResetMaximium) { + m_progressBarProtoCloakResetMaximium = progressBarProtoCloakResetMaximium; + emit progressBarProtoCloakResetMaximiumChanged(); + } +} + + +void CloakLogic::onPushButtonProtoCloakSaveClicked() +{ + QJsonObject protocolConfig = m_settings.protocolConfig(m_uiLogic->selectedServerIndex, m_uiLogic->selectedDockerContainer, Protocol::Cloak); + protocolConfig = getCloakConfigFromPage(protocolConfig); + + QJsonObject containerConfig = m_settings.containerConfig(m_uiLogic->selectedServerIndex, m_uiLogic->selectedDockerContainer); + QJsonObject newContainerConfig = containerConfig; + newContainerConfig.insert(config_key::cloak, protocolConfig); + + UiLogic::PageFunc page_proto_cloak; + page_proto_cloak.setEnabledFunc = [this] (bool enabled) -> void { + setPageProtoCloakEnabled(enabled); + }; + UiLogic::ButtonFunc pushButton_proto_cloak_save; + pushButton_proto_cloak_save.setVisibleFunc = [this] (bool visible) ->void { + setPushButtonProtoCloakSaveVisible(visible); + }; + UiLogic::LabelFunc label_proto_cloak_info; + label_proto_cloak_info.setVisibleFunc = [this] (bool visible) ->void { + setLabelProtoCloakInfoVisible(visible); + }; + label_proto_cloak_info.setTextFunc = [this] (const QString& text) ->void { + setLabelProtoCloakInfoText(text); + }; + UiLogic::ProgressFunc progressBar_proto_cloak_reset; + progressBar_proto_cloak_reset.setVisibleFunc = [this] (bool visible) ->void { + setProgressBarProtoCloakResetVisible(visible); + }; + progressBar_proto_cloak_reset.setValueFunc = [this] (int value) ->void { + setProgressBarProtoCloakResetValue(value); + }; + progressBar_proto_cloak_reset.getValueFunc = [this] (void) -> int { + return getProgressBarProtoCloakResetValue(); + }; + progressBar_proto_cloak_reset.getMaximiumFunc = [this] (void) -> int { + return getProgressBarProtoCloakResetMaximium(); + }; + + ErrorCode e = m_uiLogic->doInstallAction([this, containerConfig, newContainerConfig](){ + return ServerController::updateContainer(m_settings.serverCredentials(m_uiLogic->selectedServerIndex), m_uiLogic->selectedDockerContainer, containerConfig, newContainerConfig); + }, + page_proto_cloak, progressBar_proto_cloak_reset, + pushButton_proto_cloak_save, label_proto_cloak_info); + + if (!e) { + m_settings.setContainerConfig(m_uiLogic->selectedServerIndex, m_uiLogic->selectedDockerContainer, newContainerConfig); + m_settings.clearLastConnectionConfig(m_uiLogic->selectedServerIndex, m_uiLogic->selectedDockerContainer); + } + + qDebug() << "Protocol saved with code:" << e << "for" << m_uiLogic->selectedServerIndex << m_uiLogic->selectedDockerContainer; +} diff --git a/client/ui/pages_logic/protocols/CloakLogic.h b/client/ui/pages_logic/protocols/CloakLogic.h index 8c7e6c76..53e7c7cf 100644 --- a/client/ui/pages_logic/protocols/CloakLogic.h +++ b/client/ui/pages_logic/protocols/CloakLogic.h @@ -10,12 +10,66 @@ class CloakLogic : public QObject { Q_OBJECT +public: + Q_PROPERTY(QString comboBoxProtoCloakCipherText READ getComboBoxProtoCloakCipherText WRITE setComboBoxProtoCloakCipherText NOTIFY comboBoxProtoCloakCipherTextChanged) + Q_PROPERTY(QString lineEditProtoCloakSiteText READ getLineEditProtoCloakSiteText WRITE setLineEditProtoCloakSiteText NOTIFY lineEditProtoCloakSiteTextChanged) + Q_PROPERTY(QString lineEditProtoCloakPortText READ getLineEditProtoCloakPortText WRITE setLineEditProtoCloakPortText NOTIFY lineEditProtoCloakPortTextChanged) + Q_PROPERTY(bool widgetProtoCloakEnabled READ getWidgetProtoCloakEnabled WRITE setWidgetProtoCloakEnabled NOTIFY widgetProtoCloakEnabledChanged) + Q_PROPERTY(bool pushButtonProtoCloakSaveVisible READ getPushButtonProtoCloakSaveVisible WRITE setPushButtonProtoCloakSaveVisible NOTIFY pushButtonProtoCloakSaveVisibleChanged) + Q_PROPERTY(bool progressBarProtoCloakResetVisible READ getProgressBarProtoCloakResetVisible WRITE setProgressBarProtoCloakResetVisible NOTIFY progressBarProtoCloakResetVisibleChanged) + Q_PROPERTY(bool lineEditProtoCloakPortEnabled READ getLineEditProtoCloakPortEnabled WRITE setLineEditProtoCloakPortEnabled NOTIFY lineEditProtoCloakPortEnabledChanged) + Q_PROPERTY(bool pageProtoCloakEnabled READ getPageProtoCloakEnabled WRITE setPageProtoCloakEnabled NOTIFY pageProtoCloakEnabledChanged) + Q_PROPERTY(bool labelProtoCloakInfoVisible READ getLabelProtoCloakInfoVisible WRITE setLabelProtoCloakInfoVisible NOTIFY labelProtoCloakInfoVisibleChanged) + Q_PROPERTY(QString labelProtoCloakInfoText READ getLabelProtoCloakInfoText WRITE setLabelProtoCloakInfoText NOTIFY labelProtoCloakInfoTextChanged) + Q_PROPERTY(int progressBarProtoCloakResetValue READ getProgressBarProtoCloakResetValue WRITE setProgressBarProtoCloakResetValue NOTIFY progressBarProtoCloakResetValueChanged) + Q_PROPERTY(int progressBarProtoCloakResetMaximium READ getProgressBarProtoCloakResetMaximium WRITE setProgressBarProtoCloakResetMaximium NOTIFY progressBarProtoCloakResetMaximiumChanged) + + Q_INVOKABLE void onPushButtonProtoCloakSaveClicked(); public: explicit CloakLogic(UiLogic *uiLogic, QObject *parent = nullptr); ~CloakLogic() = default; -signals: + void updateCloakPage(const QJsonObject &ckConfig, DockerContainer container, bool haveAuthData); + QJsonObject getCloakConfigFromPage(QJsonObject oldConfig); + QString getComboBoxProtoCloakCipherText() const; + void setComboBoxProtoCloakCipherText(const QString &comboBoxProtoCloakCipherText); + QString getLineEditProtoCloakSiteText() const; + void setLineEditProtoCloakSiteText(const QString &lineEditProtoCloakSiteText); + QString getLineEditProtoCloakPortText() const; + void setLineEditProtoCloakPortText(const QString &lineEditProtoCloakPortText); + bool getWidgetProtoCloakEnabled() const; + void setWidgetProtoCloakEnabled(bool widgetProtoCloakEnabled); + bool getPushButtonProtoCloakSaveVisible() const; + void setPushButtonProtoCloakSaveVisible(bool pushButtonProtoCloakSaveVisible); + bool getProgressBarProtoCloakResetVisible() const; + void setProgressBarProtoCloakResetVisible(bool progressBarProtoCloakResetVisible); + bool getLineEditProtoCloakPortEnabled() const; + void setLineEditProtoCloakPortEnabled(bool lineEditProtoCloakPortEnabled); + bool getPageProtoCloakEnabled() const; + void setPageProtoCloakEnabled(bool pageProtoCloakEnabled); + bool getLabelProtoCloakInfoVisible() const; + void setLabelProtoCloakInfoVisible(bool labelProtoCloakInfoVisible); + QString getLabelProtoCloakInfoText() const; + void setLabelProtoCloakInfoText(const QString &labelProtoCloakInfoText); + int getProgressBarProtoCloakResetValue() const; + void setProgressBarProtoCloakResetValue(int progressBarProtoCloakResetValue); + int getProgressBarProtoCloakResetMaximium() const; + void setProgressBarProtoCloakResetMaximium(int progressBarProtoCloakResetMaximium); + +signals: + void comboBoxProtoCloakCipherTextChanged(); + void lineEditProtoCloakSiteTextChanged(); + void lineEditProtoCloakPortTextChanged(); + void widgetProtoCloakEnabledChanged(); + void pushButtonProtoCloakSaveVisibleChanged(); + void progressBarProtoCloakResetVisibleChanged(); + void lineEditProtoCloakPortEnabledChanged(); + void pageProtoCloakEnabledChanged(); + void labelProtoCloakInfoVisibleChanged(); + void labelProtoCloakInfoTextChanged(); + void progressBarProtoCloakResetValueChanged(); + void progressBarProtoCloakResetMaximiumChanged(); private: @@ -28,7 +82,18 @@ private: Settings m_settings; UiLogic *m_uiLogic; - + QString m_comboBoxProtoCloakCipherText; + QString m_lineEditProtoCloakSiteText; + QString m_lineEditProtoCloakPortText; + bool m_widgetProtoCloakEnabled; + bool m_pushButtonProtoCloakSaveVisible; + bool m_progressBarProtoCloakResetVisible; + bool m_lineEditProtoCloakPortEnabled; + bool m_pageProtoCloakEnabled; + bool m_labelProtoCloakInfoVisible; + QString m_labelProtoCloakInfoText; + int m_progressBarProtoCloakResetValue; + int m_progressBarProtoCloakResetMaximium; }; #endif // CLOAK_LOGIC_H diff --git a/client/ui/pages_logic/protocols/OpenVpnLogic.cpp b/client/ui/pages_logic/protocols/OpenVpnLogic.cpp index 4073671f..d8352ec8 100644 --- a/client/ui/pages_logic/protocols/OpenVpnLogic.cpp +++ b/client/ui/pages_logic/protocols/OpenVpnLogic.cpp @@ -1,41 +1,5 @@ -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include - -//#include "configurators/cloak_configurator.h" -//#include "configurators/vpn_configurator.h" -//#include "configurators/openvpn_configurator.h" -//#include "configurators/shadowsocks_configurator.h" -//#include "configurators/ssh_configurator.h" - -#include "core/servercontroller.h" -//#include "core/server_defs.h" -//#include "core/errorstrings.h" - -//#include "protocols/protocols_defs.h" -//#include "protocols/shadowsocksvpnprotocol.h" - -#include "debug.h" -#include "defines.h" #include "OpenVpnLogic.h" -#include "utils.h" -#include "vpnconnection.h" +#include "core/servercontroller.h" #include #include "../../uilogic.h" diff --git a/client/ui/pages_logic/protocols/OpenVpnLogic.h b/client/ui/pages_logic/protocols/OpenVpnLogic.h index 38c42ff0..21351d81 100644 --- a/client/ui/pages_logic/protocols/OpenVpnLogic.h +++ b/client/ui/pages_logic/protocols/OpenVpnLogic.h @@ -36,6 +36,9 @@ public: Q_PROPERTY(int progressBarProtoOpenvpnResetValue READ getProgressBarProtoOpenvpnResetValue WRITE setProgressBarProtoOpenvpnResetValue NOTIFY progressBarProtoOpenvpnResetValueChanged) Q_PROPERTY(int progressBarProtoOpenvpnResetMaximium READ getProgressBarProtoOpenvpnResetMaximium WRITE setProgressBarProtoOpenvpnResetMaximium NOTIFY progressBarProtoOpenvpnResetMaximiumChanged) + Q_INVOKABLE void onCheckBoxProtoOpenvpnAutoEncryptionClicked(); + Q_INVOKABLE void onPushButtonProtoOpenvpnSaveClicked(); + public: explicit OpenVpnLogic(UiLogic *uiLogic, QObject *parent = nullptr); ~OpenVpnLogic() = default; @@ -91,9 +94,6 @@ public: int getProgressBarProtoOpenvpnResetMaximium() const; void setProgressBarProtoOpenvpnResetMaximium(int progressBarProtoOpenvpnResetMaximium); - Q_INVOKABLE void onCheckBoxProtoOpenvpnAutoEncryptionClicked(); - Q_INVOKABLE void onPushButtonProtoOpenvpnSaveClicked(); - signals: void lineEditProtoOpenvpnSubnetTextChanged(); void radioButtonProtoOpenvpnUdpCheckedChanged(); diff --git a/client/ui/pages_logic/protocols/ShadowSocksLogic.cpp b/client/ui/pages_logic/protocols/ShadowSocksLogic.cpp index 96266b05..ae789b59 100644 --- a/client/ui/pages_logic/protocols/ShadowSocksLogic.cpp +++ b/client/ui/pages_logic/protocols/ShadowSocksLogic.cpp @@ -1,50 +1,241 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//#include "configurators/cloak_configurator.h" -//#include "configurators/vpn_configurator.h" -//#include "configurators/openvpn_configurator.h" -//#include "configurators/shadowsocks_configurator.h" -//#include "configurators/ssh_configurator.h" - -//#include "core/servercontroller.h" -//#include "core/server_defs.h" -//#include "core/errorstrings.h" - -//#include "protocols/protocols_defs.h" -//#include "protocols/shadowsocksvpnprotocol.h" - -#include "debug.h" -#include "defines.h" #include "ShadowSocksLogic.h" -#include "utils.h" -#include "vpnconnection.h" +#include "core/servercontroller.h" #include +#include "../../uilogic.h" using namespace amnezia; using namespace PageEnumNS; - ShadowSocksLogic::ShadowSocksLogic(UiLogic *uiLogic, QObject *parent): QObject(parent), - m_uiLogic(uiLogic) + m_uiLogic(uiLogic), + m_widgetProtoSsEnabled{false}, + m_comboBoxProtoShadowsocksCipherText{"chacha20-poly1305"}, + m_lineEditProtoShadowsocksPortText{}, + m_pushButtonProtoShadowsocksSaveVisible{false}, + m_progressBarProtoShadowsocksResetVisible{false}, + m_lineEditProtoShadowsocksPortEnabled{false}, + m_pageProtoShadowsocksEnabled{true}, + m_labelProtoShadowsocksInfoVisible{true}, + m_labelProtoShadowsocksInfoText{}, + m_progressBarProtoShadowsocksResetValue{0}, + m_progressBarProtoShadowsocksResetMaximium{100} { } + +void ShadowSocksLogic::updateShadowSocksPage(const QJsonObject &ssConfig, DockerContainer container, bool haveAuthData) +{ + setWidgetProtoSsEnabled(haveAuthData); + setPushButtonProtoShadowsocksSaveVisible(haveAuthData); + setProgressBarProtoShadowsocksResetVisible(haveAuthData); + + setComboBoxProtoShadowsocksCipherText(ssConfig.value(config_key::cipher). + toString(protocols::shadowsocks::defaultCipher)); + + setLineEditProtoShadowsocksPortText(ssConfig.value(config_key::port). + toString(protocols::shadowsocks::defaultPort)); + + setLineEditProtoShadowsocksPortEnabled(container == DockerContainer::OpenVpnOverShadowSocks); +} + +QJsonObject ShadowSocksLogic::getShadowSocksConfigFromPage(QJsonObject oldConfig) +{ + oldConfig.insert(config_key::cipher, getComboBoxProtoShadowsocksCipherText()); + oldConfig.insert(config_key::port, getLineEditProtoShadowsocksPortText()); + + return oldConfig; +} + +QString ShadowSocksLogic::getComboBoxProtoShadowsocksCipherText() const +{ + return m_comboBoxProtoShadowsocksCipherText; +} + +void ShadowSocksLogic::setComboBoxProtoShadowsocksCipherText(const QString &comboBoxProtoShadowsocksCipherText) +{ + if (m_comboBoxProtoShadowsocksCipherText != comboBoxProtoShadowsocksCipherText) { + m_comboBoxProtoShadowsocksCipherText = comboBoxProtoShadowsocksCipherText; + emit comboBoxProtoShadowsocksCipherTextChanged(); + } +} + +QString ShadowSocksLogic::getLineEditProtoShadowsocksPortText() const +{ + return m_lineEditProtoShadowsocksPortText; +} + +void ShadowSocksLogic::setLineEditProtoShadowsocksPortText(const QString &lineEditProtoShadowsocksPortText) +{ + if (m_lineEditProtoShadowsocksPortText != lineEditProtoShadowsocksPortText) { + m_lineEditProtoShadowsocksPortText = lineEditProtoShadowsocksPortText; + emit lineEditProtoShadowsocksPortTextChanged(); + } +} + +bool ShadowSocksLogic::getPushButtonProtoShadowsocksSaveVisible() const +{ + return m_pushButtonProtoShadowsocksSaveVisible; +} + +void ShadowSocksLogic::setPushButtonProtoShadowsocksSaveVisible(bool pushButtonProtoShadowsocksSaveVisible) +{ + if (m_pushButtonProtoShadowsocksSaveVisible != pushButtonProtoShadowsocksSaveVisible) { + m_pushButtonProtoShadowsocksSaveVisible = pushButtonProtoShadowsocksSaveVisible; + emit pushButtonProtoShadowsocksSaveVisibleChanged(); + } +} + +bool ShadowSocksLogic::getProgressBarProtoShadowsocksResetVisible() const +{ + return m_progressBarProtoShadowsocksResetVisible; +} + +void ShadowSocksLogic::setProgressBarProtoShadowsocksResetVisible(bool progressBarProtoShadowsocksResetVisible) +{ + if (m_progressBarProtoShadowsocksResetVisible != progressBarProtoShadowsocksResetVisible) { + m_progressBarProtoShadowsocksResetVisible = progressBarProtoShadowsocksResetVisible; + emit progressBarProtoShadowsocksResetVisibleChanged(); + } +} + +bool ShadowSocksLogic::getLineEditProtoShadowsocksPortEnabled() const +{ + return m_lineEditProtoShadowsocksPortEnabled; +} + +void ShadowSocksLogic::setLineEditProtoShadowsocksPortEnabled(bool lineEditProtoShadowsocksPortEnabled) +{ + if (m_lineEditProtoShadowsocksPortEnabled != lineEditProtoShadowsocksPortEnabled) { + m_lineEditProtoShadowsocksPortEnabled = lineEditProtoShadowsocksPortEnabled; + emit lineEditProtoShadowsocksPortEnabledChanged(); + } +} + +bool ShadowSocksLogic::getPageProtoShadowsocksEnabled() const +{ + return m_pageProtoShadowsocksEnabled; +} + +void ShadowSocksLogic::setPageProtoShadowsocksEnabled(bool pageProtoShadowsocksEnabled) +{ + if (m_pageProtoShadowsocksEnabled != pageProtoShadowsocksEnabled) { + m_pageProtoShadowsocksEnabled = pageProtoShadowsocksEnabled; + emit pageProtoShadowsocksEnabledChanged(); + } +} + +bool ShadowSocksLogic::getLabelProtoShadowsocksInfoVisible() const +{ + return m_labelProtoShadowsocksInfoVisible; +} + +void ShadowSocksLogic::setLabelProtoShadowsocksInfoVisible(bool labelProtoShadowsocksInfoVisible) +{ + if (m_labelProtoShadowsocksInfoVisible != labelProtoShadowsocksInfoVisible) { + m_labelProtoShadowsocksInfoVisible = labelProtoShadowsocksInfoVisible; + emit labelProtoShadowsocksInfoVisibleChanged(); + } +} + +QString ShadowSocksLogic::getLabelProtoShadowsocksInfoText() const +{ + return m_labelProtoShadowsocksInfoText; +} + +void ShadowSocksLogic::setLabelProtoShadowsocksInfoText(const QString &labelProtoShadowsocksInfoText) +{ + if (m_labelProtoShadowsocksInfoText != labelProtoShadowsocksInfoText) { + m_labelProtoShadowsocksInfoText = labelProtoShadowsocksInfoText; + emit labelProtoShadowsocksInfoTextChanged(); + } +} + +int ShadowSocksLogic::getProgressBarProtoShadowsocksResetValue() const +{ + return m_progressBarProtoShadowsocksResetValue; +} + +void ShadowSocksLogic::setProgressBarProtoShadowsocksResetValue(int progressBarProtoShadowsocksResetValue) +{ + if (m_progressBarProtoShadowsocksResetValue != progressBarProtoShadowsocksResetValue) { + m_progressBarProtoShadowsocksResetValue = progressBarProtoShadowsocksResetValue; + emit progressBarProtoShadowsocksResetValueChanged(); + } +} + +int ShadowSocksLogic::getProgressBarProtoShadowsocksResetMaximium() const +{ + return m_progressBarProtoShadowsocksResetMaximium; +} + +void ShadowSocksLogic::setProgressBarProtoShadowsocksResetMaximium(int progressBarProtoShadowsocksResetMaximium) +{ + if (m_progressBarProtoShadowsocksResetMaximium != progressBarProtoShadowsocksResetMaximium) { + m_progressBarProtoShadowsocksResetMaximium = progressBarProtoShadowsocksResetMaximium; + emit progressBarProtoShadowsocksResetMaximiumChanged(); + } +} + +bool ShadowSocksLogic::getWidgetProtoSsEnabled() const +{ + return m_widgetProtoSsEnabled; +} + +void ShadowSocksLogic::setWidgetProtoSsEnabled(bool widgetProtoSsEnabled) +{ + if (m_widgetProtoSsEnabled != widgetProtoSsEnabled) { + m_widgetProtoSsEnabled = widgetProtoSsEnabled; + emit widgetProtoSsEnabledChanged(); + } +} + +void ShadowSocksLogic::onPushButtonProtoShadowsocksSaveClicked() +{ + QJsonObject protocolConfig = m_settings.protocolConfig(m_uiLogic->selectedServerIndex, m_uiLogic->selectedDockerContainer, Protocol::ShadowSocks); + protocolConfig = getShadowSocksConfigFromPage(protocolConfig); + + QJsonObject containerConfig = m_settings.containerConfig(m_uiLogic->selectedServerIndex, m_uiLogic->selectedDockerContainer); + QJsonObject newContainerConfig = containerConfig; + newContainerConfig.insert(config_key::shadowsocks, protocolConfig); + UiLogic::PageFunc page_proto_shadowsocks; + page_proto_shadowsocks.setEnabledFunc = [this] (bool enabled) -> void { + setPageProtoShadowsocksEnabled(enabled); + }; + UiLogic::ButtonFunc pushButton_proto_shadowsocks_save; + pushButton_proto_shadowsocks_save.setVisibleFunc = [this] (bool visible) ->void { + setPushButtonProtoShadowsocksSaveVisible(visible); + }; + UiLogic::LabelFunc label_proto_shadowsocks_info; + label_proto_shadowsocks_info.setVisibleFunc = [this] (bool visible) ->void { + setLabelProtoShadowsocksInfoVisible(visible); + }; + label_proto_shadowsocks_info.setTextFunc = [this] (const QString& text) ->void { + setLabelProtoShadowsocksInfoText(text); + }; + UiLogic::ProgressFunc progressBar_proto_shadowsocks_reset; + progressBar_proto_shadowsocks_reset.setVisibleFunc = [this] (bool visible) ->void { + setProgressBarProtoShadowsocksResetVisible(visible); + }; + progressBar_proto_shadowsocks_reset.setValueFunc = [this] (int value) ->void { + setProgressBarProtoShadowsocksResetValue(value); + }; + progressBar_proto_shadowsocks_reset.getValueFunc = [this] (void) -> int { + return getProgressBarProtoShadowsocksResetValue(); + }; + progressBar_proto_shadowsocks_reset.getMaximiumFunc = [this] (void) -> int { + return getProgressBarProtoShadowsocksResetMaximium(); + }; + + ErrorCode e = m_uiLogic->doInstallAction([this, containerConfig, newContainerConfig](){ + return ServerController::updateContainer(m_settings.serverCredentials(m_uiLogic->selectedServerIndex), m_uiLogic->selectedDockerContainer, containerConfig, newContainerConfig); + }, + page_proto_shadowsocks, progressBar_proto_shadowsocks_reset, + pushButton_proto_shadowsocks_save, label_proto_shadowsocks_info); + + if (!e) { + m_settings.setContainerConfig(m_uiLogic->selectedServerIndex, m_uiLogic->selectedDockerContainer, newContainerConfig); + m_settings.clearLastConnectionConfig(m_uiLogic->selectedServerIndex, m_uiLogic->selectedDockerContainer); + } + qDebug() << "Protocol saved with code:" << e << "for" << m_uiLogic->selectedServerIndex << m_uiLogic->selectedDockerContainer; +} diff --git a/client/ui/pages_logic/protocols/ShadowSocksLogic.h b/client/ui/pages_logic/protocols/ShadowSocksLogic.h index 9edb48bb..daf3ada6 100644 --- a/client/ui/pages_logic/protocols/ShadowSocksLogic.h +++ b/client/ui/pages_logic/protocols/ShadowSocksLogic.h @@ -10,12 +10,65 @@ class ShadowSocksLogic : public QObject { Q_OBJECT +public: + Q_PROPERTY(bool widgetProtoSsEnabled READ getWidgetProtoSsEnabled WRITE setWidgetProtoSsEnabled NOTIFY widgetProtoSsEnabledChanged) + Q_PROPERTY(QString comboBoxProtoShadowsocksCipherText READ getComboBoxProtoShadowsocksCipherText WRITE setComboBoxProtoShadowsocksCipherText NOTIFY comboBoxProtoShadowsocksCipherTextChanged) + Q_PROPERTY(QString lineEditProtoShadowsocksPortText READ getLineEditProtoShadowsocksPortText WRITE setLineEditProtoShadowsocksPortText NOTIFY lineEditProtoShadowsocksPortTextChanged) + Q_PROPERTY(bool pushButtonProtoShadowsocksSaveVisible READ getPushButtonProtoShadowsocksSaveVisible WRITE setPushButtonProtoShadowsocksSaveVisible NOTIFY pushButtonProtoShadowsocksSaveVisibleChanged) + Q_PROPERTY(bool progressBarProtoShadowsocksResetVisible READ getProgressBarProtoShadowsocksResetVisible WRITE setProgressBarProtoShadowsocksResetVisible NOTIFY progressBarProtoShadowsocksResetVisibleChanged) + Q_PROPERTY(bool lineEditProtoShadowsocksPortEnabled READ getLineEditProtoShadowsocksPortEnabled WRITE setLineEditProtoShadowsocksPortEnabled NOTIFY lineEditProtoShadowsocksPortEnabledChanged) + Q_PROPERTY(bool pageProtoShadowsocksEnabled READ getPageProtoShadowsocksEnabled WRITE setPageProtoShadowsocksEnabled NOTIFY pageProtoShadowsocksEnabledChanged) + Q_PROPERTY(bool labelProtoShadowsocksInfoVisible READ getLabelProtoShadowsocksInfoVisible WRITE setLabelProtoShadowsocksInfoVisible NOTIFY labelProtoShadowsocksInfoVisibleChanged) + Q_PROPERTY(QString labelProtoShadowsocksInfoText READ getLabelProtoShadowsocksInfoText WRITE setLabelProtoShadowsocksInfoText NOTIFY labelProtoShadowsocksInfoTextChanged) + Q_PROPERTY(int progressBarProtoShadowsocksResetValue READ getProgressBarProtoShadowsocksResetValue WRITE setProgressBarProtoShadowsocksResetValue NOTIFY progressBarProtoShadowsocksResetValueChanged) + Q_PROPERTY(int progressBarProtoShadowsocksResetMaximium READ getProgressBarProtoShadowsocksResetMaximium WRITE setProgressBarProtoShadowsocksResetMaximium NOTIFY progressBarProtoShadowsocksResetMaximiumChanged) + + Q_INVOKABLE void onPushButtonProtoShadowsocksSaveClicked(); + public: explicit ShadowSocksLogic(UiLogic *uiLogic, QObject *parent = nullptr); ~ShadowSocksLogic() = default; -signals: + void updateShadowSocksPage(const QJsonObject &ssConfig, DockerContainer container, bool haveAuthData); + QJsonObject getShadowSocksConfigFromPage(QJsonObject oldConfig); + bool getWidgetProtoSsEnabled() const; + void setWidgetProtoSsEnabled(bool widgetProtoSsEnabled); + QString getComboBoxProtoShadowsocksCipherText() const; + void setComboBoxProtoShadowsocksCipherText(const QString &comboBoxProtoShadowsocksCipherText); + QString getLineEditProtoShadowsocksPortText() const; + void setLineEditProtoShadowsocksPortText(const QString &lineEditProtoShadowsocksPortText); + + bool getPushButtonProtoShadowsocksSaveVisible() const; + void setPushButtonProtoShadowsocksSaveVisible(bool pushButtonProtoShadowsocksSaveVisible); + bool getProgressBarProtoShadowsocksResetVisible() const; + void setProgressBarProtoShadowsocksResetVisible(bool progressBarProtoShadowsocksResetVisible); + bool getLineEditProtoShadowsocksPortEnabled() const; + void setLineEditProtoShadowsocksPortEnabled(bool lineEditProtoShadowsocksPortEnabled); + + bool getPageProtoShadowsocksEnabled() const; + void setPageProtoShadowsocksEnabled(bool pageProtoShadowsocksEnabled); + bool getLabelProtoShadowsocksInfoVisible() const; + void setLabelProtoShadowsocksInfoVisible(bool labelProtoShadowsocksInfoVisible); + QString getLabelProtoShadowsocksInfoText() const; + void setLabelProtoShadowsocksInfoText(const QString &labelProtoShadowsocksInfoText); + int getProgressBarProtoShadowsocksResetValue() const; + void setProgressBarProtoShadowsocksResetValue(int progressBarProtoShadowsocksResetValue); + int getProgressBarProtoShadowsocksResetMaximium() const; + void setProgressBarProtoShadowsocksResetMaximium(int progressBarProtoShadowsocksResetMaximium); + +signals: + void widgetProtoSsEnabledChanged(); + void comboBoxProtoShadowsocksCipherTextChanged(); + void lineEditProtoShadowsocksPortTextChanged(); + void pushButtonProtoShadowsocksSaveVisibleChanged(); + void progressBarProtoShadowsocksResetVisibleChanged(); + void lineEditProtoShadowsocksPortEnabledChanged(); + void pageProtoShadowsocksEnabledChanged(); + void labelProtoShadowsocksInfoVisibleChanged(); + void labelProtoShadowsocksInfoTextChanged(); + void progressBarProtoShadowsocksResetValueChanged(); + void progressBarProtoShadowsocksResetMaximiumChanged(); private: @@ -28,7 +81,17 @@ private: Settings m_settings; UiLogic *m_uiLogic; - + bool m_widgetProtoSsEnabled; + QString m_comboBoxProtoShadowsocksCipherText; + QString m_lineEditProtoShadowsocksPortText; + bool m_pushButtonProtoShadowsocksSaveVisible; + bool m_progressBarProtoShadowsocksResetVisible; + bool m_lineEditProtoShadowsocksPortEnabled; + bool m_pageProtoShadowsocksEnabled; + bool m_labelProtoShadowsocksInfoVisible; + QString m_labelProtoShadowsocksInfoText; + int m_progressBarProtoShadowsocksResetValue; + int m_progressBarProtoShadowsocksResetMaximium; }; #endif // SHADOWSOCKS_LOGIC_H diff --git a/client/ui/qml/Pages/PageServerProtocols.qml b/client/ui/qml/Pages/PageServerProtocols.qml index 0d764165..6dc9b3be 100644 --- a/client/ui/qml/Pages/PageServerProtocols.qml +++ b/client/ui/qml/Pages/PageServerProtocols.qml @@ -173,7 +173,7 @@ Item { text: qsTr("ShadowSocks settings") icon.source: "qrc:/images/settings.png" onClicked: { - UiLogic.pushButtonProtoCloakOpenvpnContSsConfigClicked() + UiLogic.onPushButtonProtoCloakOpenvpnContSsConfigClicked() } } SettingButtonType { diff --git a/client/ui/qml/Pages/Protocols/PageProtoCloak.qml b/client/ui/qml/Pages/Protocols/PageProtoCloak.qml index 1038bd40..632a3e5a 100644 --- a/client/ui/qml/Pages/Protocols/PageProtoCloak.qml +++ b/client/ui/qml/Pages/Protocols/PageProtoCloak.qml @@ -6,7 +6,7 @@ import "../../Config" Item { id: root - enabled: UiLogic.pageProtoCloakEnabled + enabled: CloakLogic.pageProtoCloakEnabled ImageButtonType { id: back x: 10 @@ -23,7 +23,7 @@ Item { y: 40 width: 380 height: 600 - enabled: UiLogic.widgetProtoCloakEnabled + enabled: CloakLogic.widgetProtoCloakEnabled ComboBoxType { x: 190 y: 60 @@ -37,14 +37,14 @@ Item { ] currentIndex: { for (let i = 0; i < model.length; ++i) { - if (UiLogic.comboBoxProtoCloakCipherText === model[i]) { + if (CloakLogic.comboBoxProtoCloakCipherText === model[i]) { return i } } return -1 } onCurrentTextChanged: { - UiLogic.comboBoxProtoCloakCipherText = currentText + CloakLogic.comboBoxProtoCloakCipherText = currentText } } LabelType { @@ -88,8 +88,8 @@ Item { y: 550 width: 321 height: 41 - visible: UiLogic.labelProtoCloakInfoVisible - text: UiLogic.labelProtoCloakInfoText + visible: CloakLogic.labelProtoCloakInfoVisible + text: CloakLogic.labelProtoCloakInfoText } TextFieldType { id: lineEdit_proto_cloak_port @@ -97,11 +97,11 @@ Item { y: 160 width: 151 height: 31 - text: UiLogic.lineEditProtoCloakPortText + text: CloakLogic.lineEditProtoCloakPortText onEditingFinished: { - UiLogic.lineEditProtoCloakPortText = text + CloakLogic.lineEditProtoCloakPortText = text } - enabled: UiLogic.lineEditProtoCloakPortEnabled + enabled: CloakLogic.lineEditProtoCloakPortEnabled } TextFieldType { id: lineEdit_proto_cloak_site @@ -109,9 +109,9 @@ Item { y: 110 width: 151 height: 31 - text: UiLogic.lineEditProtoCloakSiteText + text: CloakLogic.lineEditProtoCloakSiteText onEditingFinished: { - UiLogic.lineEditProtoCloakSiteText = text + CloakLogic.lineEditProtoCloakSiteText = text } } ProgressBar { @@ -121,8 +121,8 @@ Item { width: 321 height: 40 from: 0 - to: UiLogic.progressBarProtoCloakResetMaximium - value: UiLogic.progressBarProtoCloakResetValue + to: CloakLogic.progressBarProtoCloakResetMaximium + value: CloakLogic.progressBarProtoCloakResetValue background: Rectangle { implicitWidth: parent.width implicitHeight: parent.height @@ -140,7 +140,7 @@ Item { color: Qt.rgba(255, 255, 255, 0.15); } } - visible: UiLogic.progressBarProtoCloakResetVisible + visible: CloakLogic.progressBarProtoCloakResetVisible } BlueButtonType { anchors.horizontalCenter: parent.horizontalCenter @@ -148,9 +148,9 @@ Item { width: 321 height: 40 text: qsTr("Save and restart VPN") - visible: UiLogic.pushButtonProtoCloakSaveVisible + visible: CloakLogic.pushButtonProtoCloakSaveVisible onClicked: { - UiLogic.onPushButtonProtoCloakSaveClicked() + CloakLogic.onPushButtonProtoCloakSaveClicked() } } } diff --git a/client/ui/qml/Pages/Protocols/PageProtoShadowSock.qml b/client/ui/qml/Pages/Protocols/PageProtoShadowSocks.qml similarity index 75% rename from client/ui/qml/Pages/Protocols/PageProtoShadowSock.qml rename to client/ui/qml/Pages/Protocols/PageProtoShadowSocks.qml index b5d0d966..c7b28497 100644 --- a/client/ui/qml/Pages/Protocols/PageProtoShadowSock.qml +++ b/client/ui/qml/Pages/Protocols/PageProtoShadowSocks.qml @@ -6,7 +6,7 @@ import "../../Config" Item { id: root - enabled: UiLogic.pageProtoShadowsocksEnabled + enabled: ShadowSocksLogic.pageProtoShadowsocksEnabled ImageButtonType { id: back x: 10 @@ -23,7 +23,7 @@ Item { y: 40 width: 380 height: 600 - enabled: UiLogic.widgetProtoSsEnabled + enabled: ShadowSocksLogic.widgetProtoSsEnabled ComboBoxType { x: 190 y: 60 @@ -36,14 +36,14 @@ Item { ] currentIndex: { for (let i = 0; i < model.length; ++i) { - if (UiLogic.comboBoxProtoShadowsocksCipherText === model[i]) { + if (ShadowSocksLogic.comboBoxProtoShadowsocksCipherText === model[i]) { return i } } return -1 } onCurrentTextChanged: { - UiLogic.comboBoxProtoShadowsocksCipherText = currentText + ShadowSocksLogic.comboBoxProtoShadowsocksCipherText = currentText } } LabelType { @@ -79,8 +79,8 @@ Item { y: 550 width: 321 height: 41 - visible: UiLogic.labelProtoShadowsocksInfoVisible - text: UiLogic.labelProtoShadowsocksInfoText + visible: ShadowSocksLogic.labelProtoShadowsocksInfoVisible + text: ShadowSocksLogic.labelProtoShadowsocksInfoText } TextFieldType { id: lineEdit_proto_shadowsocks_port @@ -88,11 +88,11 @@ Item { y: 110 width: 151 height: 31 - text: UiLogic.lineEditProtoShadowsocksPortText + text: ShadowSocksLogic.lineEditProtoShadowsocksPortText onEditingFinished: { - UiLogic.lineEditProtoShadowsocksPortText = text + ShadowSocksLogic.lineEditProtoShadowsocksPortText = text } - enabled: UiLogic.lineEditProtoShadowsocksPortEnabled + enabled: ShadowSocksLogic.lineEditProtoShadowsocksPortEnabled } ProgressBar { id: progressBar_proto_shadowsocks_reset @@ -101,9 +101,9 @@ Item { width: 321 height: 40 from: 0 - to: UiLogic.progressBarProtoShadowsocksResetMaximium - value: UiLogic.progressBarProtoShadowsocksResetValue - visible: UiLogic.progressBarProtoShadowsocksResetVisible + to: ShadowSocksLogic.progressBarProtoShadowsocksResetMaximium + value: ShadowSocksLogic.progressBarProtoShadowsocksResetValue + visible: ShadowSocksLogic.progressBarProtoShadowsocksResetVisible background: Rectangle { implicitWidth: parent.width implicitHeight: parent.height @@ -128,9 +128,9 @@ Item { width: 321 height: 40 text: qsTr("Save and restart VPN") - visible: UiLogic.pushButtonProtoShadowsocksSaveVisible + visible: ShadowSocksLogic.pushButtonProtoShadowsocksSaveVisible onClicked: { - UiLogic.onPushButtonProtoShadowsocksSaveClicked() + ShadowSocksLogic.onPushButtonProtoShadowsocksSaveClicked() } } } diff --git a/client/ui/qml/main.qml b/client/ui/qml/main.qml index d013ab67..69783b9d 100644 --- a/client/ui/qml/main.qml +++ b/client/ui/qml/main.qml @@ -130,7 +130,7 @@ Window { if (item instanceof PageProtoOpenVPN) { return PageEnum.OpenVpnSettings } - if (item instanceof PageProtoShadowSock) { + if (item instanceof PageProtoShadowSocks) { return PageEnum.ShadowSocksSettings } if (item instanceof PageProtoCloak) { @@ -332,7 +332,7 @@ Window { } Component { id: page_proto_shadowsocks - PageProtoShadowSock {} + PageProtoShadowSocks {} } Component { id: page_proto_cloak diff --git a/client/ui/uilogic.cpp b/client/ui/uilogic.cpp index 33c49cad..4cd4a9f8 100644 --- a/client/ui/uilogic.cpp +++ b/client/ui/uilogic.cpp @@ -96,23 +96,12 @@ UiLogic::UiLogic(QObject *parent) : m_checkBoxNewServerCloakChecked{true}, m_checkBoxNewServerSsChecked{false}, m_checkBoxNewServerOpenvpnChecked{false}, - m_comboBoxProtoCloakCipherText{"chacha20-poly1305"}, - m_lineEditProtoCloakSiteText{"tile.openstreetmap.org"}, - m_lineEditProtoCloakPortText{}, - m_comboBoxProtoShadowsocksCipherText{"chacha20-poly1305"}, - m_lineEditProtoShadowsocksPortText{}, + + m_pushButtonConnectChecked{false}, - m_widgetProtoCloakEnabled{false}, - m_pushButtonProtoCloakSaveVisible{false}, - m_progressBarProtoCloakResetVisible{false}, - m_lineEditProtoCloakPortEnabled{false}, - m_widgetProtoSsEnabled{false}, - m_pushButtonProtoShadowsocksSaveVisible{false}, - m_progressBarProtoShadowsocksResetVisible{false}, - m_lineEditProtoShadowsocksPortEnabled{false}, m_pushButtonProtoOpenvpnContInstallChecked{false}, m_pushButtonProtoSsOpenvpnContInstallChecked{false}, @@ -156,16 +145,7 @@ UiLogic::UiLogic(QObject *parent) : m_progressBarProtocolsContainerReinstallValue{0}, m_progressBarProtocolsContainerReinstallMaximium{100}, - m_pageProtoShadowsocksEnabled{true}, - m_labelProtoShadowsocksInfoVisible{true}, - m_labelProtoShadowsocksInfoText{}, - m_progressBarProtoShadowsocksResetValue{0}, - m_progressBarProtoShadowsocksResetMaximium{100}, - m_pageProtoCloakEnabled{true}, - m_labelProtoCloakInfoVisible{true}, - m_labelProtoCloakInfoText{}, - m_progressBarProtoCloakResetValue{0}, - m_progressBarProtoCloakResetMaximium{100}, + m_vpnConnection(nullptr) { m_vpnConnection = new VpnConnection(this); @@ -503,44 +483,7 @@ void UiLogic::setRadioButtonVpnModeExceptSitesChecked(bool radioButtonVpnModeExc -QString UiLogic::getComboBoxProtoCloakCipherText() const -{ - return m_comboBoxProtoCloakCipherText; -} -void UiLogic::setComboBoxProtoCloakCipherText(const QString &comboBoxProtoCloakCipherText) -{ - if (m_comboBoxProtoCloakCipherText != comboBoxProtoCloakCipherText) { - m_comboBoxProtoCloakCipherText = comboBoxProtoCloakCipherText; - emit comboBoxProtoCloakCipherTextChanged(); - } -} - -QString UiLogic::getLineEditProtoCloakPortText() const -{ - return m_lineEditProtoCloakPortText; -} - -void UiLogic::setLineEditProtoCloakPortText(const QString &lineEditProtoCloakPortText) -{ - if (m_lineEditProtoCloakPortText != lineEditProtoCloakPortText) { - m_lineEditProtoCloakPortText = lineEditProtoCloakPortText; - emit lineEditProtoCloakPortTextChanged(); - } -} - -QString UiLogic::getLineEditProtoCloakSiteText() const -{ - return m_lineEditProtoCloakSiteText; -} - -void UiLogic::setLineEditProtoCloakSiteText(const QString &lineEditProtoCloakSiteText) -{ - if (m_lineEditProtoCloakSiteText != lineEditProtoCloakSiteText) { - m_lineEditProtoCloakSiteText = lineEditProtoCloakSiteText; - emit lineEditProtoCloakSiteTextChanged(); - } -} int UiLogic::getCurrentPageValue() const { @@ -633,31 +576,7 @@ void UiLogic::setCheckBoxNewServerOpenvpnChecked(bool checkBoxNewServerOpenvpnCh } } -QString UiLogic::getComboBoxProtoShadowsocksCipherText() const -{ - return m_comboBoxProtoShadowsocksCipherText; -} -void UiLogic::setComboBoxProtoShadowsocksCipherText(const QString &comboBoxProtoShadowsocksCipherText) -{ - if (m_comboBoxProtoShadowsocksCipherText != comboBoxProtoShadowsocksCipherText) { - m_comboBoxProtoShadowsocksCipherText = comboBoxProtoShadowsocksCipherText; - emit comboBoxProtoShadowsocksCipherTextChanged(); - } -} - -QString UiLogic::getLineEditProtoShadowsocksPortText() const -{ - return m_lineEditProtoShadowsocksPortText; -} - -void UiLogic::setLineEditProtoShadowsocksPortText(const QString &lineEditProtoShadowsocksPortText) -{ - if (m_lineEditProtoShadowsocksPortText != lineEditProtoShadowsocksPortText) { - m_lineEditProtoShadowsocksPortText = lineEditProtoShadowsocksPortText; - emit lineEditProtoShadowsocksPortTextChanged(); - } -} @@ -691,108 +610,10 @@ void UiLogic::setPushButtonVpnAddSiteEnabled(bool pushButtonVpnAddSiteEnabled) } } -bool UiLogic::getWidgetProtoCloakEnabled() const -{ - return m_widgetProtoCloakEnabled; -} -void UiLogic::setWidgetProtoCloakEnabled(bool widgetProtoCloakEnabled) -{ - if (m_widgetProtoCloakEnabled != widgetProtoCloakEnabled) { - m_widgetProtoCloakEnabled = widgetProtoCloakEnabled; - emit widgetProtoCloakEnabledChanged(); - } -} -bool UiLogic::getPushButtonProtoCloakSaveVisible() const -{ - return m_pushButtonProtoCloakSaveVisible; -} -void UiLogic::setPushButtonProtoCloakSaveVisible(bool pushButtonProtoCloakSaveVisible) -{ - if (m_pushButtonProtoCloakSaveVisible != pushButtonProtoCloakSaveVisible) { - m_pushButtonProtoCloakSaveVisible = pushButtonProtoCloakSaveVisible; - emit pushButtonProtoCloakSaveVisibleChanged(); - } -} -bool UiLogic::getProgressBarProtoCloakResetVisible() const -{ - return m_progressBarProtoCloakResetVisible; -} - -void UiLogic::setProgressBarProtoCloakResetVisible(bool progressBarProtoCloakResetVisible) -{ - if (m_progressBarProtoCloakResetVisible != progressBarProtoCloakResetVisible) { - m_progressBarProtoCloakResetVisible = progressBarProtoCloakResetVisible; - emit progressBarProtoCloakResetVisibleChanged(); - } -} - -bool UiLogic::getLineEditProtoCloakPortEnabled() const -{ - return m_lineEditProtoCloakPortEnabled; -} - -void UiLogic::setLineEditProtoCloakPortEnabled(bool lineEditProtoCloakPortEnabled) -{ - if (m_lineEditProtoCloakPortEnabled != lineEditProtoCloakPortEnabled) { - m_lineEditProtoCloakPortEnabled = lineEditProtoCloakPortEnabled; - emit lineEditProtoCloakPortEnabledChanged(); - } -} -bool UiLogic::getWidgetProtoSsEnabled() const -{ - return m_widgetProtoSsEnabled; -} - -void UiLogic::setWidgetProtoSsEnabled(bool widgetProtoSsEnabled) -{ - if (m_widgetProtoSsEnabled != widgetProtoSsEnabled) { - m_widgetProtoSsEnabled = widgetProtoSsEnabled; - emit widgetProtoSsEnabledChanged(); - } -} - -bool UiLogic::getPushButtonProtoShadowsocksSaveVisible() const -{ - return m_pushButtonProtoShadowsocksSaveVisible; -} - -void UiLogic::setPushButtonProtoShadowsocksSaveVisible(bool pushButtonProtoShadowsocksSaveVisible) -{ - if (m_pushButtonProtoShadowsocksSaveVisible != pushButtonProtoShadowsocksSaveVisible) { - m_pushButtonProtoShadowsocksSaveVisible = pushButtonProtoShadowsocksSaveVisible; - emit pushButtonProtoShadowsocksSaveVisibleChanged(); - } -} - -bool UiLogic::getProgressBarProtoShadowsocksResetVisible() const -{ - return m_progressBarProtoShadowsocksResetVisible; -} - -void UiLogic::setProgressBarProtoShadowsocksResetVisible(bool progressBarProtoShadowsocksResetVisible) -{ - if (m_progressBarProtoShadowsocksResetVisible != progressBarProtoShadowsocksResetVisible) { - m_progressBarProtoShadowsocksResetVisible = progressBarProtoShadowsocksResetVisible; - emit progressBarProtoShadowsocksResetVisibleChanged(); - } -} - -bool UiLogic::getLineEditProtoShadowsocksPortEnabled() const -{ - return m_lineEditProtoShadowsocksPortEnabled; -} - -void UiLogic::setLineEditProtoShadowsocksPortEnabled(bool lineEditProtoShadowsocksPortEnabled) -{ - if (m_lineEditProtoShadowsocksPortEnabled != lineEditProtoShadowsocksPortEnabled) { - m_lineEditProtoShadowsocksPortEnabled = lineEditProtoShadowsocksPortEnabled; - emit lineEditProtoShadowsocksPortEnabledChanged(); - } -} @@ -1336,135 +1157,9 @@ void UiLogic::setProgressBarProtocolsContainerReinstallMaximium(int progressBarP } -bool UiLogic::getPageProtoShadowsocksEnabled() const -{ - return m_pageProtoShadowsocksEnabled; -} -void UiLogic::setPageProtoShadowsocksEnabled(bool pageProtoShadowsocksEnabled) -{ - if (m_pageProtoShadowsocksEnabled != pageProtoShadowsocksEnabled) { - m_pageProtoShadowsocksEnabled = pageProtoShadowsocksEnabled; - emit pageProtoShadowsocksEnabledChanged(); - } -} -bool UiLogic::getLabelProtoShadowsocksInfoVisible() const -{ - return m_labelProtoShadowsocksInfoVisible; -} -void UiLogic::setLabelProtoShadowsocksInfoVisible(bool labelProtoShadowsocksInfoVisible) -{ - if (m_labelProtoShadowsocksInfoVisible != labelProtoShadowsocksInfoVisible) { - m_labelProtoShadowsocksInfoVisible = labelProtoShadowsocksInfoVisible; - emit labelProtoShadowsocksInfoVisibleChanged(); - } -} - -QString UiLogic::getLabelProtoShadowsocksInfoText() const -{ - return m_labelProtoShadowsocksInfoText; -} - -void UiLogic::setLabelProtoShadowsocksInfoText(const QString &labelProtoShadowsocksInfoText) -{ - if (m_labelProtoShadowsocksInfoText != labelProtoShadowsocksInfoText) { - m_labelProtoShadowsocksInfoText = labelProtoShadowsocksInfoText; - emit labelProtoShadowsocksInfoTextChanged(); - } -} - -int UiLogic::getProgressBarProtoShadowsocksResetValue() const -{ - return m_progressBarProtoShadowsocksResetValue; -} - -void UiLogic::setProgressBarProtoShadowsocksResetValue(int progressBarProtoShadowsocksResetValue) -{ - if (m_progressBarProtoShadowsocksResetValue != progressBarProtoShadowsocksResetValue) { - m_progressBarProtoShadowsocksResetValue = progressBarProtoShadowsocksResetValue; - emit progressBarProtoShadowsocksResetValueChanged(); - } -} - -int UiLogic::getProgressBarProtoShadowsocksResetMaximium() const -{ - return m_progressBarProtoShadowsocksResetMaximium; -} - -void UiLogic::setProgressBarProtoShadowsocksResetMaximium(int progressBarProtoShadowsocksResetMaximium) -{ - if (m_progressBarProtoShadowsocksResetMaximium != progressBarProtoShadowsocksResetMaximium) { - m_progressBarProtoShadowsocksResetMaximium = progressBarProtoShadowsocksResetMaximium; - emit progressBarProtoShadowsocksResetMaximiumChanged(); - } -} - -bool UiLogic::getPageProtoCloakEnabled() const -{ - return m_pageProtoCloakEnabled; -} - -void UiLogic::setPageProtoCloakEnabled(bool pageProtoCloakEnabled) -{ - if (m_pageProtoCloakEnabled != pageProtoCloakEnabled) { - m_pageProtoCloakEnabled = pageProtoCloakEnabled; - emit pageProtoCloakEnabledChanged(); - } -} - -bool UiLogic::getLabelProtoCloakInfoVisible() const -{ - return m_labelProtoCloakInfoVisible; -} - -void UiLogic::setLabelProtoCloakInfoVisible(bool labelProtoCloakInfoVisible) -{ - if (m_labelProtoCloakInfoVisible != labelProtoCloakInfoVisible) { - m_labelProtoCloakInfoVisible = labelProtoCloakInfoVisible; - emit labelProtoCloakInfoVisibleChanged(); - } -} - -QString UiLogic::getLabelProtoCloakInfoText() const -{ - return m_labelProtoCloakInfoText; -} - -void UiLogic::setLabelProtoCloakInfoText(const QString &labelProtoCloakInfoText) -{ - if (m_labelProtoCloakInfoText != labelProtoCloakInfoText) { - m_labelProtoCloakInfoText = labelProtoCloakInfoText; - emit labelProtoCloakInfoTextChanged(); - } -} - -int UiLogic::getProgressBarProtoCloakResetValue() const -{ - return m_progressBarProtoCloakResetValue; -} - -void UiLogic::setProgressBarProtoCloakResetValue(int progressBarProtoCloakResetValue) -{ - if (m_progressBarProtoCloakResetValue != progressBarProtoCloakResetValue) { - m_progressBarProtoCloakResetValue = progressBarProtoCloakResetValue; - emit progressBarProtoCloakResetValueChanged(); - } -} - -int UiLogic::getProgressBarProtoCloakResetMaximium() const -{ - return m_progressBarProtoCloakResetMaximium; -} - -void UiLogic::setProgressBarProtoCloakResetMaximium(int progressBarProtoCloakResetMaximium) -{ - if (m_progressBarProtoCloakResetMaximium != progressBarProtoCloakResetMaximium) { - m_progressBarProtoCloakResetMaximium = progressBarProtoCloakResetMaximium; - emit progressBarProtoCloakResetMaximiumChanged(); - } -} @@ -2222,136 +1917,14 @@ void UiLogic::onPushButtonProtoSsOpenvpnContOpenvpnConfigClicked() void UiLogic::onPushButtonProtoSsOpenvpnContSsConfigClicked() { selectedDockerContainer = DockerContainer::OpenVpnOverShadowSocks; - updateShadowSocksPage(m_settings.protocolConfig(selectedServerIndex, selectedDockerContainer, Protocol::ShadowSocks), + shadowSocksLogic()->updateShadowSocksPage(m_settings.protocolConfig(selectedServerIndex, selectedDockerContainer, Protocol::ShadowSocks), selectedDockerContainer, m_settings.haveAuthData(selectedServerIndex)); goToPage(Page::ShadowSocksSettings); } -void UiLogic::onPushButtonProtoCloakOpenvpnContOpenvpnConfigClicked() -{ - selectedDockerContainer = DockerContainer::OpenVpnOverCloak; - m_openVpnLogic->updateOpenVpnPage(m_settings.protocolConfig(selectedServerIndex, selectedDockerContainer, Protocol::OpenVpn), - selectedDockerContainer, m_settings.haveAuthData(selectedServerIndex)); - goToPage(Page::OpenVpnSettings); -} -void UiLogic::onPushButtonProtoCloakOpenvpnContSsConfigClicked() -{ - selectedDockerContainer = DockerContainer::OpenVpnOverCloak; - updateShadowSocksPage(m_settings.protocolConfig(selectedServerIndex, selectedDockerContainer, Protocol::ShadowSocks), - selectedDockerContainer, m_settings.haveAuthData(selectedServerIndex)); - goToPage(Page::ShadowSocksSettings); -} -void UiLogic::onPushButtonProtoCloakOpenvpnContCloakConfigClicked() -{ - selectedDockerContainer = DockerContainer::OpenVpnOverCloak; - updateCloakPage(m_settings.protocolConfig(selectedServerIndex, selectedDockerContainer, Protocol::Cloak), - selectedDockerContainer, m_settings.haveAuthData(selectedServerIndex)); - goToPage(Page::CloakSettings); -} -void UiLogic::onPushButtonProtoShadowsocksSaveClicked() -{ - QJsonObject protocolConfig = m_settings.protocolConfig(selectedServerIndex, selectedDockerContainer, Protocol::ShadowSocks); - protocolConfig = getShadowSocksConfigFromPage(protocolConfig); - - QJsonObject containerConfig = m_settings.containerConfig(selectedServerIndex, selectedDockerContainer); - QJsonObject newContainerConfig = containerConfig; - newContainerConfig.insert(config_key::shadowsocks, protocolConfig); - PageFunc page_proto_shadowsocks; - page_proto_shadowsocks.setEnabledFunc = [this] (bool enabled) -> void { - setPageProtoShadowsocksEnabled(enabled); - }; - ButtonFunc pushButton_proto_shadowsocks_save; - pushButton_proto_shadowsocks_save.setVisibleFunc = [this] (bool visible) ->void { - setPushButtonProtoShadowsocksSaveVisible(visible); - }; - LabelFunc label_proto_shadowsocks_info; - label_proto_shadowsocks_info.setVisibleFunc = [this] (bool visible) ->void { - setLabelProtoShadowsocksInfoVisible(visible); - }; - label_proto_shadowsocks_info.setTextFunc = [this] (const QString& text) ->void { - setLabelProtoShadowsocksInfoText(text); - }; - ProgressFunc progressBar_proto_shadowsocks_reset; - progressBar_proto_shadowsocks_reset.setVisibleFunc = [this] (bool visible) ->void { - setProgressBarProtoShadowsocksResetVisible(visible); - }; - progressBar_proto_shadowsocks_reset.setValueFunc = [this] (int value) ->void { - setProgressBarProtoShadowsocksResetValue(value); - }; - progressBar_proto_shadowsocks_reset.getValueFunc = [this] (void) -> int { - return getProgressBarProtoShadowsocksResetValue(); - }; - progressBar_proto_shadowsocks_reset.getMaximiumFunc = [this] (void) -> int { - return getProgressBarProtoShadowsocksResetMaximium(); - }; - - ErrorCode e = doInstallAction([this, containerConfig, newContainerConfig](){ - return ServerController::updateContainer(m_settings.serverCredentials(selectedServerIndex), selectedDockerContainer, containerConfig, newContainerConfig); - }, - page_proto_shadowsocks, progressBar_proto_shadowsocks_reset, - pushButton_proto_shadowsocks_save, label_proto_shadowsocks_info); - - if (!e) { - m_settings.setContainerConfig(selectedServerIndex, selectedDockerContainer, newContainerConfig); - m_settings.clearLastConnectionConfig(selectedServerIndex, selectedDockerContainer); - } - qDebug() << "Protocol saved with code:" << e << "for" << selectedServerIndex << selectedDockerContainer; -} - -void UiLogic::onPushButtonProtoCloakSaveClicked() -{ - QJsonObject protocolConfig = m_settings.protocolConfig(selectedServerIndex, selectedDockerContainer, Protocol::Cloak); - protocolConfig = getCloakConfigFromPage(protocolConfig); - - QJsonObject containerConfig = m_settings.containerConfig(selectedServerIndex, selectedDockerContainer); - QJsonObject newContainerConfig = containerConfig; - newContainerConfig.insert(config_key::cloak, protocolConfig); - - PageFunc page_proto_cloak; - page_proto_cloak.setEnabledFunc = [this] (bool enabled) -> void { - setPageProtoCloakEnabled(enabled); - }; - ButtonFunc pushButton_proto_cloak_save; - pushButton_proto_cloak_save.setVisibleFunc = [this] (bool visible) ->void { - setPushButtonProtoCloakSaveVisible(visible); - }; - LabelFunc label_proto_cloak_info; - label_proto_cloak_info.setVisibleFunc = [this] (bool visible) ->void { - setLabelProtoCloakInfoVisible(visible); - }; - label_proto_cloak_info.setTextFunc = [this] (const QString& text) ->void { - setLabelProtoCloakInfoText(text); - }; - ProgressFunc progressBar_proto_cloak_reset; - progressBar_proto_cloak_reset.setVisibleFunc = [this] (bool visible) ->void { - setProgressBarProtoCloakResetVisible(visible); - }; - progressBar_proto_cloak_reset.setValueFunc = [this] (int value) ->void { - setProgressBarProtoCloakResetValue(value); - }; - progressBar_proto_cloak_reset.getValueFunc = [this] (void) -> int { - return getProgressBarProtoCloakResetValue(); - }; - progressBar_proto_cloak_reset.getMaximiumFunc = [this] (void) -> int { - return getProgressBarProtoCloakResetMaximium(); - }; - - ErrorCode e = doInstallAction([this, containerConfig, newContainerConfig](){ - return ServerController::updateContainer(m_settings.serverCredentials(selectedServerIndex), selectedDockerContainer, containerConfig, newContainerConfig); - }, - page_proto_cloak, progressBar_proto_cloak_reset, - pushButton_proto_cloak_save, label_proto_cloak_info); - - if (!e) { - m_settings.setContainerConfig(selectedServerIndex, selectedDockerContainer, newContainerConfig); - m_settings.clearLastConnectionConfig(selectedServerIndex, selectedDockerContainer); - } - - qDebug() << "Protocol saved with code:" << e << "for" << selectedServerIndex << selectedDockerContainer; -} void UiLogic::updateVpnPage() @@ -2465,54 +2038,26 @@ void UiLogic::updateProtocolsPage() } - -void UiLogic::updateShadowSocksPage(const QJsonObject &ssConfig, DockerContainer container, bool haveAuthData) +void UiLogic::onPushButtonProtoCloakOpenvpnContOpenvpnConfigClicked() { - setWidgetProtoSsEnabled(haveAuthData); - setPushButtonProtoShadowsocksSaveVisible(haveAuthData); - setProgressBarProtoShadowsocksResetVisible(haveAuthData); - - setComboBoxProtoShadowsocksCipherText(ssConfig.value(config_key::cipher). - toString(protocols::shadowsocks::defaultCipher)); - - setLineEditProtoShadowsocksPortText(ssConfig.value(config_key::port). - toString(protocols::shadowsocks::defaultPort)); - - setLineEditProtoShadowsocksPortEnabled(container == DockerContainer::OpenVpnOverShadowSocks); + selectedDockerContainer = DockerContainer::OpenVpnOverCloak; + m_openVpnLogic->updateOpenVpnPage(m_settings.protocolConfig(selectedServerIndex, selectedDockerContainer, Protocol::OpenVpn), + selectedDockerContainer, m_settings.haveAuthData(selectedServerIndex)); + goToPage(Page::OpenVpnSettings); } -void UiLogic::updateCloakPage(const QJsonObject &ckConfig, DockerContainer container, bool haveAuthData) +void UiLogic::onPushButtonProtoCloakOpenvpnContSsConfigClicked() { - setWidgetProtoCloakEnabled(haveAuthData); - setPushButtonProtoCloakSaveVisible(haveAuthData); - setProgressBarProtoCloakResetVisible(haveAuthData); - - setComboBoxProtoCloakCipherText(ckConfig.value(config_key::cipher). - toString(protocols::cloak::defaultCipher)); - - setLineEditProtoCloakSiteText(ckConfig.value(config_key::site). - toString(protocols::cloak::defaultRedirSite)); - - setLineEditProtoCloakPortText(ckConfig.value(config_key::port). - toString(protocols::cloak::defaultPort)); - - setLineEditProtoCloakPortEnabled(container == DockerContainer::OpenVpnOverCloak); + selectedDockerContainer = DockerContainer::OpenVpnOverCloak; + shadowSocksLogic()->updateShadowSocksPage(m_settings.protocolConfig(selectedServerIndex, selectedDockerContainer, Protocol::ShadowSocks), + selectedDockerContainer, m_settings.haveAuthData(selectedServerIndex)); + goToPage(Page::ShadowSocksSettings); } - -QJsonObject UiLogic::getShadowSocksConfigFromPage(QJsonObject oldConfig) +void UiLogic::onPushButtonProtoCloakOpenvpnContCloakConfigClicked() { - oldConfig.insert(config_key::cipher, getComboBoxProtoShadowsocksCipherText()); - oldConfig.insert(config_key::port, getLineEditProtoShadowsocksPortText()); - - return oldConfig; -} - -QJsonObject UiLogic::getCloakConfigFromPage(QJsonObject oldConfig) -{ - oldConfig.insert(config_key::cipher, getComboBoxProtoCloakCipherText()); - oldConfig.insert(config_key::site, getLineEditProtoCloakSiteText()); - oldConfig.insert(config_key::port, getLineEditProtoCloakPortText()); - - return oldConfig; + selectedDockerContainer = DockerContainer::OpenVpnOverCloak; + cloakLogic()->updateCloakPage(m_settings.protocolConfig(selectedServerIndex, selectedDockerContainer, Protocol::Cloak), + selectedDockerContainer, m_settings.haveAuthData(selectedServerIndex)); + goToPage(Page::CloakSettings); } diff --git a/client/ui/uilogic.h b/client/ui/uilogic.h index 520ad8d2..d53ed63d 100644 --- a/client/ui/uilogic.h +++ b/client/ui/uilogic.h @@ -56,21 +56,8 @@ class UiLogic : public QObject Q_PROPERTY(bool checkBoxNewServerCloakChecked READ getCheckBoxNewServerCloakChecked WRITE setCheckBoxNewServerCloakChecked NOTIFY checkBoxNewServerCloakCheckedChanged) Q_PROPERTY(bool checkBoxNewServerSsChecked READ getCheckBoxNewServerSsChecked WRITE setCheckBoxNewServerSsChecked NOTIFY checkBoxNewServerSsCheckedChanged) Q_PROPERTY(bool checkBoxNewServerOpenvpnChecked READ getCheckBoxNewServerOpenvpnChecked WRITE setCheckBoxNewServerOpenvpnChecked NOTIFY checkBoxNewServerOpenvpnCheckedChanged) - Q_PROPERTY(QString comboBoxProtoCloakCipherText READ getComboBoxProtoCloakCipherText WRITE setComboBoxProtoCloakCipherText NOTIFY comboBoxProtoCloakCipherTextChanged) - Q_PROPERTY(QString lineEditProtoCloakSiteText READ getLineEditProtoCloakSiteText WRITE setLineEditProtoCloakSiteText NOTIFY lineEditProtoCloakSiteTextChanged) - Q_PROPERTY(QString lineEditProtoCloakPortText READ getLineEditProtoCloakPortText WRITE setLineEditProtoCloakPortText NOTIFY lineEditProtoCloakPortTextChanged) - Q_PROPERTY(QString comboBoxProtoShadowsocksCipherText READ getComboBoxProtoShadowsocksCipherText WRITE setComboBoxProtoShadowsocksCipherText NOTIFY comboBoxProtoShadowsocksCipherTextChanged) - Q_PROPERTY(QString lineEditProtoShadowsocksPortText READ getLineEditProtoShadowsocksPortText WRITE setLineEditProtoShadowsocksPortText NOTIFY lineEditProtoShadowsocksPortTextChanged) Q_PROPERTY(bool pushButtonConnectChecked READ getPushButtonConnectChecked WRITE setPushButtonConnectChecked NOTIFY pushButtonConnectCheckedChanged) - Q_PROPERTY(bool widgetProtoCloakEnabled READ getWidgetProtoCloakEnabled WRITE setWidgetProtoCloakEnabled NOTIFY widgetProtoCloakEnabledChanged) - Q_PROPERTY(bool pushButtonProtoCloakSaveVisible READ getPushButtonProtoCloakSaveVisible WRITE setPushButtonProtoCloakSaveVisible NOTIFY pushButtonProtoCloakSaveVisibleChanged) - Q_PROPERTY(bool progressBarProtoCloakResetVisible READ getProgressBarProtoCloakResetVisible WRITE setProgressBarProtoCloakResetVisible NOTIFY progressBarProtoCloakResetVisibleChanged) - Q_PROPERTY(bool lineEditProtoCloakPortEnabled READ getLineEditProtoCloakPortEnabled WRITE setLineEditProtoCloakPortEnabled NOTIFY lineEditProtoCloakPortEnabledChanged) - Q_PROPERTY(bool widgetProtoSsEnabled READ getWidgetProtoSsEnabled WRITE setWidgetProtoSsEnabled NOTIFY widgetProtoSsEnabledChanged) - Q_PROPERTY(bool pushButtonProtoShadowsocksSaveVisible READ getPushButtonProtoShadowsocksSaveVisible WRITE setPushButtonProtoShadowsocksSaveVisible NOTIFY pushButtonProtoShadowsocksSaveVisibleChanged) - Q_PROPERTY(bool progressBarProtoShadowsocksResetVisible READ getProgressBarProtoShadowsocksResetVisible WRITE setProgressBarProtoShadowsocksResetVisible NOTIFY progressBarProtoShadowsocksResetVisibleChanged) - Q_PROPERTY(bool lineEditProtoShadowsocksPortEnabled READ getLineEditProtoShadowsocksPortEnabled WRITE setLineEditProtoShadowsocksPortEnabled NOTIFY lineEditProtoShadowsocksPortEnabledChanged) Q_PROPERTY(bool pushButtonProtoOpenvpnContInstallChecked READ getPushButtonProtoOpenvpnContInstallChecked WRITE setPushButtonProtoOpenvpnContInstallChecked NOTIFY pushButtonProtoOpenvpnContInstallCheckedChanged) Q_PROPERTY(bool pushButtonProtoSsOpenvpnContInstallChecked READ getPushButtonProtoSsOpenvpnContInstallChecked WRITE setPushButtonProtoSsOpenvpnContInstallChecked NOTIFY pushButtonProtoSsOpenvpnContInstallCheckedChanged) Q_PROPERTY(bool pushButtonProtoCloakOpenvpnContInstallChecked READ getPushButtonProtoCloakOpenvpnContInstallChecked WRITE setPushButtonProtoCloakOpenvpnContInstallChecked NOTIFY pushButtonProtoCloakOpenvpnContInstallCheckedChanged) @@ -112,16 +99,6 @@ class UiLogic : public QObject Q_PROPERTY(bool pageServerProtocolsEnabled READ getPageServerProtocolsEnabled WRITE setPageServerProtocolsEnabled NOTIFY pageServerProtocolsEnabledChanged) Q_PROPERTY(int progressBarProtocolsContainerReinstallValue READ getProgressBarProtocolsContainerReinstallValue WRITE setProgressBarProtocolsContainerReinstallValue NOTIFY progressBarProtocolsContainerReinstallValueChanged) Q_PROPERTY(int progressBarProtocolsContainerReinstallMaximium READ getProgressBarProtocolsContainerReinstallMaximium WRITE setProgressBarProtocolsContainerReinstallMaximium NOTIFY progressBarProtocolsContainerReinstallMaximiumChanged) - Q_PROPERTY(bool pageProtoShadowsocksEnabled READ getPageProtoShadowsocksEnabled WRITE setPageProtoShadowsocksEnabled NOTIFY pageProtoShadowsocksEnabledChanged) - Q_PROPERTY(bool labelProtoShadowsocksInfoVisible READ getLabelProtoShadowsocksInfoVisible WRITE setLabelProtoShadowsocksInfoVisible NOTIFY labelProtoShadowsocksInfoVisibleChanged) - Q_PROPERTY(QString labelProtoShadowsocksInfoText READ getLabelProtoShadowsocksInfoText WRITE setLabelProtoShadowsocksInfoText NOTIFY labelProtoShadowsocksInfoTextChanged) - Q_PROPERTY(int progressBarProtoShadowsocksResetValue READ getProgressBarProtoShadowsocksResetValue WRITE setProgressBarProtoShadowsocksResetValue NOTIFY progressBarProtoShadowsocksResetValueChanged) - Q_PROPERTY(int progressBarProtoShadowsocksResetMaximium READ getProgressBarProtoShadowsocksResetMaximium WRITE setProgressBarProtoShadowsocksResetMaximium NOTIFY progressBarProtoShadowsocksResetMaximiumChanged) - Q_PROPERTY(bool pageProtoCloakEnabled READ getPageProtoCloakEnabled WRITE setPageProtoCloakEnabled NOTIFY pageProtoCloakEnabledChanged) - Q_PROPERTY(bool labelProtoCloakInfoVisible READ getLabelProtoCloakInfoVisible WRITE setLabelProtoCloakInfoVisible NOTIFY labelProtoCloakInfoVisibleChanged) - Q_PROPERTY(QString labelProtoCloakInfoText READ getLabelProtoCloakInfoText WRITE setLabelProtoCloakInfoText NOTIFY labelProtoCloakInfoTextChanged) - Q_PROPERTY(int progressBarProtoCloakResetValue READ getProgressBarProtoCloakResetValue WRITE setProgressBarProtoCloakResetValue NOTIFY progressBarProtoCloakResetValueChanged) - Q_PROPERTY(int progressBarProtoCloakResetMaximium READ getProgressBarProtoCloakResetMaximium WRITE setProgressBarProtoCloakResetMaximium NOTIFY progressBarProtoCloakResetMaximiumChanged) Q_PROPERTY(bool pushButtonVpnAddSiteEnabled READ getPushButtonVpnAddSiteEnabled WRITE setPushButtonVpnAddSiteEnabled NOTIFY pushButtonVpnAddSiteEnabledChanged) @@ -200,36 +177,11 @@ public: void setCheckBoxNewServerSsChecked(bool checkBoxNewServerSsChecked); bool getCheckBoxNewServerOpenvpnChecked() const; void setCheckBoxNewServerOpenvpnChecked(bool checkBoxNewServerOpenvpnChecked); - QString getComboBoxProtoCloakCipherText() const; - void setComboBoxProtoCloakCipherText(const QString &comboBoxProtoCloakCipherText); - QString getLineEditProtoCloakSiteText() const; - void setLineEditProtoCloakSiteText(const QString &lineEditProtoCloakSiteText); - QString getLineEditProtoCloakPortText() const; - void setLineEditProtoCloakPortText(const QString &lineEditProtoCloakPortText); - QString getComboBoxProtoShadowsocksCipherText() const; - void setComboBoxProtoShadowsocksCipherText(const QString &comboBoxProtoShadowsocksCipherText); - QString getLineEditProtoShadowsocksPortText() const; - void setLineEditProtoShadowsocksPortText(const QString &lineEditProtoShadowsocksPortText); + bool getPushButtonConnectChecked() const; void setPushButtonConnectChecked(bool pushButtonConnectChecked); - bool getWidgetProtoCloakEnabled() const; - void setWidgetProtoCloakEnabled(bool widgetProtoCloakEnabled); - bool getPushButtonProtoCloakSaveVisible() const; - void setPushButtonProtoCloakSaveVisible(bool pushButtonProtoCloakSaveVisible); - bool getProgressBarProtoCloakResetVisible() const; - void setProgressBarProtoCloakResetVisible(bool progressBarProtoCloakResetVisible); - bool getLineEditProtoCloakPortEnabled() const; - void setLineEditProtoCloakPortEnabled(bool lineEditProtoCloakPortEnabled); - bool getWidgetProtoSsEnabled() const; - void setWidgetProtoSsEnabled(bool widgetProtoSsEnabled); - bool getPushButtonProtoShadowsocksSaveVisible() const; - void setPushButtonProtoShadowsocksSaveVisible(bool pushButtonProtoShadowsocksSaveVisible); - bool getProgressBarProtoShadowsocksResetVisible() const; - void setProgressBarProtoShadowsocksResetVisible(bool progressBarProtoShadowsocksResetVisible); - bool getLineEditProtoShadowsocksPortEnabled() const; - void setLineEditProtoShadowsocksPortEnabled(bool lineEditProtoShadowsocksPortEnabled); bool getPushButtonProtoOpenvpnContInstallChecked() const; void setPushButtonProtoOpenvpnContInstallChecked(bool pushButtonProtoOpenvpnContInstallChecked); @@ -318,26 +270,7 @@ public: void setProgressBarProtocolsContainerReinstallValue(int progressBarProtocolsContainerReinstallValue); int getProgressBarProtocolsContainerReinstallMaximium() const; void setProgressBarProtocolsContainerReinstallMaximium(int progressBarProtocolsContainerReinstallMaximium); - bool getPageProtoShadowsocksEnabled() const; - void setPageProtoShadowsocksEnabled(bool pageProtoShadowsocksEnabled); - bool getLabelProtoShadowsocksInfoVisible() const; - void setLabelProtoShadowsocksInfoVisible(bool labelProtoShadowsocksInfoVisible); - QString getLabelProtoShadowsocksInfoText() const; - void setLabelProtoShadowsocksInfoText(const QString &labelProtoShadowsocksInfoText); - int getProgressBarProtoShadowsocksResetValue() const; - void setProgressBarProtoShadowsocksResetValue(int progressBarProtoShadowsocksResetValue); - int getProgressBarProtoShadowsocksResetMaximium() const; - void setProgressBarProtoShadowsocksResetMaximium(int progressBarProtoShadowsocksResetMaximium); - bool getPageProtoCloakEnabled() const; - void setPageProtoCloakEnabled(bool pageProtoCloakEnabled); - bool getLabelProtoCloakInfoVisible() const; - void setLabelProtoCloakInfoVisible(bool labelProtoCloakInfoVisible); - QString getLabelProtoCloakInfoText() const; - void setLabelProtoCloakInfoText(const QString &labelProtoCloakInfoText); - int getProgressBarProtoCloakResetValue() const; - void setProgressBarProtoCloakResetValue(int progressBarProtoCloakResetValue); - int getProgressBarProtoCloakResetMaximium() const; - void setProgressBarProtoCloakResetMaximium(int progressBarProtoCloakResetMaximium); + bool getRadioButtonVpnModeAllSitesChecked() const; void setRadioButtonVpnModeAllSitesChecked(bool radioButtonVpnModeAllSitesChecked); @@ -351,33 +284,23 @@ public: Q_INVOKABLE void updateNewServerProtocolsPage(); Q_INVOKABLE void updateVpnPage(); - - Q_INVOKABLE void onRadioButtonVpnModeAllSitesToggled(bool checked); Q_INVOKABLE void onRadioButtonVpnModeForwardSitesToggled(bool checked); Q_INVOKABLE void onRadioButtonVpnModeExceptSitesToggled(bool checked); Q_INVOKABLE void onPushButtonConnectClicked(bool checked); - - - - Q_INVOKABLE void onPushButtonProtoOpenvpnContOpenvpnConfigClicked(); Q_INVOKABLE void onPushButtonProtoSsOpenvpnContOpenvpnConfigClicked(); Q_INVOKABLE void onPushButtonProtoSsOpenvpnContSsConfigClicked(); + Q_INVOKABLE void onPushButtonProtoCloakOpenvpnContOpenvpnConfigClicked(); Q_INVOKABLE void onPushButtonProtoCloakOpenvpnContSsConfigClicked(); Q_INVOKABLE void onPushButtonProtoCloakOpenvpnContCloakConfigClicked(); - Q_INVOKABLE void onPushButtonProtoShadowsocksSaveClicked(); - Q_INVOKABLE void onPushButtonProtoCloakSaveClicked(); + Q_INVOKABLE void onCloseWindow(); - - - - Q_INVOKABLE void updateProtocolsPage(); signals: @@ -411,24 +334,13 @@ signals: void checkBoxNewServerCloakCheckedChanged(); void checkBoxNewServerSsCheckedChanged(); void checkBoxNewServerOpenvpnCheckedChanged(); - void comboBoxProtoCloakCipherTextChanged(); - void lineEditProtoCloakSiteTextChanged(); - void lineEditProtoCloakPortTextChanged(); - void comboBoxProtoShadowsocksCipherTextChanged(); - void lineEditProtoShadowsocksPortTextChanged(); + + void pushButtonConnectCheckedChanged(); - void widgetProtoCloakEnabledChanged(); - void pushButtonProtoCloakSaveVisibleChanged(); - void progressBarProtoCloakResetVisibleChanged(); - void lineEditProtoCloakPortEnabledChanged(); - void widgetProtoSsEnabledChanged(); - void pushButtonProtoShadowsocksSaveVisibleChanged(); - void progressBarProtoShadowsocksResetVisibleChanged(); - void lineEditProtoShadowsocksPortEnabledChanged(); void pushButtonProtoOpenvpnContInstallCheckedChanged(); void pushButtonProtoSsOpenvpnContInstallCheckedChanged(); @@ -474,16 +386,8 @@ signals: void progressBarProtocolsContainerReinstallValueChanged(); void progressBarProtocolsContainerReinstallMaximiumChanged(); - void pageProtoShadowsocksEnabledChanged(); - void labelProtoShadowsocksInfoVisibleChanged(); - void labelProtoShadowsocksInfoTextChanged(); - void progressBarProtoShadowsocksResetValueChanged(); - void progressBarProtoShadowsocksResetMaximiumChanged(); - void pageProtoCloakEnabledChanged(); - void labelProtoCloakInfoVisibleChanged(); - void labelProtoCloakInfoTextChanged(); - void progressBarProtoCloakResetValueChanged(); - void progressBarProtoCloakResetMaximiumChanged(); + + void goToPage(int page, bool reset = true, bool slide = true); void closePage(); @@ -538,24 +442,14 @@ private: bool m_checkBoxNewServerCloakChecked; bool m_checkBoxNewServerSsChecked; bool m_checkBoxNewServerOpenvpnChecked; - QString m_comboBoxProtoCloakCipherText; - QString m_lineEditProtoCloakSiteText; - QString m_lineEditProtoCloakPortText; - QString m_comboBoxProtoShadowsocksCipherText; - QString m_lineEditProtoShadowsocksPortText; + + bool m_pushButtonConnectChecked; - bool m_widgetProtoCloakEnabled; - bool m_pushButtonProtoCloakSaveVisible; - bool m_progressBarProtoCloakResetVisible; - bool m_lineEditProtoCloakPortEnabled; - bool m_widgetProtoSsEnabled; - bool m_pushButtonProtoShadowsocksSaveVisible; - bool m_progressBarProtoShadowsocksResetVisible; - bool m_lineEditProtoShadowsocksPortEnabled; + bool m_pushButtonProtoOpenvpnContInstallChecked; bool m_pushButtonProtoSsOpenvpnContInstallChecked; @@ -600,16 +494,7 @@ private: int m_progressBarProtocolsContainerReinstallValue; int m_progressBarProtocolsContainerReinstallMaximium; - bool m_pageProtoShadowsocksEnabled; - bool m_labelProtoShadowsocksInfoVisible; - QString m_labelProtoShadowsocksInfoText; - int m_progressBarProtoShadowsocksResetValue; - int m_progressBarProtoShadowsocksResetMaximium; - bool m_pageProtoCloakEnabled; - bool m_labelProtoCloakInfoVisible; - QString m_labelProtoCloakInfoText; - int m_progressBarProtoCloakResetValue; - int m_progressBarProtoCloakResetMaximium; + private slots: void onBytesChanged(quint64 receivedBytes, quint64 sentBytes); @@ -664,13 +549,9 @@ private: // void setupSitesPageConnections(); void setupProtocolsPageConnections(); - void updateShadowSocksPage(const QJsonObject &ssConfig, DockerContainer container, bool haveAuthData); - void updateCloakPage(const QJsonObject &ckConfig, DockerContainer container, bool haveAuthData); - QJsonObject getShadowSocksConfigFromPage(QJsonObject oldConfig); - QJsonObject getCloakConfigFromPage(QJsonObject oldConfig); QMap getInstallConfigsFromProtocolsPage() const;