Поддержка протокола Sftp (File Sharing) по ТЗ по гранту от Теплицы

социальных технологий (2021 год)
+ небольшой рефакторинг
This commit is contained in:
pokamest 2021-09-22 14:49:08 +03:00
parent 6ee203a21d
commit 3bcc12869b
45 changed files with 645 additions and 338 deletions

View file

@ -16,7 +16,7 @@ AppSettingsLogic::AppSettingsLogic(UiLogic *logic, QObject *parent):
}
void AppSettingsLogic::updatePage()
void AppSettingsLogic::onUpdatePage()
{
set_checkBoxAutostartChecked(Autostart::isAutostart());
set_checkBoxAutoConnectChecked(m_settings.isAutoConnect());

View file

@ -14,7 +14,7 @@ class AppSettingsLogic : public PageLogicBase
AUTO_PROPERTY(QString, labelVersionText)
public:
Q_INVOKABLE void updatePage() override;
Q_INVOKABLE void onUpdatePage() override;
Q_INVOKABLE void onCheckBoxAutostartToggled(bool checked);
Q_INVOKABLE void onCheckBoxAutoconnectToggled(bool checked);

View file

@ -9,7 +9,7 @@ GeneralSettingsLogic::GeneralSettingsLogic(UiLogic *logic, QObject *parent):
}
void GeneralSettingsLogic::updatePage()
void GeneralSettingsLogic::onUpdatePage()
{
set_pushButtonGeneralSettingsShareConnectionEnable(m_settings.haveAuthData(m_settings.defaultServerIndex()));
}

View file

@ -12,7 +12,7 @@ class GeneralSettingsLogic : public PageLogicBase
AUTO_PROPERTY(bool, pushButtonGeneralSettingsShareConnectionEnable)
public:
Q_INVOKABLE void updatePage() override;
Q_INVOKABLE void onUpdatePage() override;
Q_INVOKABLE void onPushButtonGeneralSettingsServerSettingsClicked();
Q_INVOKABLE void onPushButtonGeneralSettingsShareConnectionClicked();

View file

@ -10,7 +10,7 @@ NetworkSettingsLogic::NetworkSettingsLogic(UiLogic *logic, QObject *parent):
}
void NetworkSettingsLogic::updatePage()
void NetworkSettingsLogic::onUpdatePage()
{
set_lineEditDns1Text(m_settings.primaryDns());
set_lineEditDns2Text(m_settings.secondaryDns());
@ -35,13 +35,13 @@ void NetworkSettingsLogic::onLineEditDns2EditFinished(const QString &text)
void NetworkSettingsLogic::onPushButtonResetDns1Clicked()
{
m_settings.setPrimaryDns(m_settings.cloudFlareNs1);
updatePage();
onUpdatePage();
}
void NetworkSettingsLogic::onPushButtonResetDns2Clicked()
{
m_settings.setSecondaryDns(m_settings.cloudFlareNs2);
updatePage();
onUpdatePage();
}
QString NetworkSettingsLogic::getIpAddressValidatorRegex() const

View file

@ -14,7 +14,7 @@ class NetworkSettingsLogic : public PageLogicBase
READONLY_PROPERTY(QString, ipAddressValidatorRegex)
public:
Q_INVOKABLE void updatePage() override;
Q_INVOKABLE void onUpdatePage() override;
Q_INVOKABLE void onLineEditDns1EditFinished(const QString& text);
Q_INVOKABLE void onLineEditDns2EditFinished(const QString& text);

View file

@ -9,7 +9,7 @@ NewServerProtocolsLogic::NewServerProtocolsLogic(UiLogic *logic, QObject *parent
}
void NewServerProtocolsLogic::updatePage()
void NewServerProtocolsLogic::onUpdatePage()
{
set_progressBarConnectionMinimum(0);
set_progressBarConnectionMaximum(300);

View file

@ -13,7 +13,7 @@ class NewServerProtocolsLogic : public PageLogicBase
AUTO_PROPERTY(double, progressBarConnectionMaximum)
public:
Q_INVOKABLE void updatePage() override;
Q_INVOKABLE void onUpdatePage() override;
Q_INVOKABLE void onPushButtonConfigureClicked(DockerContainer c, int port, TransportProto tp);
public:

View file

@ -19,7 +19,7 @@ public:
explicit PageLogicBase(UiLogic *uiLogic, QObject *parent = nullptr);
~PageLogicBase() = default;
Q_INVOKABLE virtual void updatePage() {}
Q_INVOKABLE virtual void onUpdatePage() {}
protected:
UiLogic *uiLogic() const { return m_uiLogic; }
@ -27,5 +27,7 @@ protected:
Settings m_settings;
UiLogic *m_uiLogic;
signals:
void updatePage();
};
#endif // PAGE_LOGIC_BASE_H

View file

@ -18,13 +18,15 @@ ServerContainersLogic::ServerContainersLogic(UiLogic *logic, QObject *parent):
{
}
void ServerContainersLogic::updateServerContainersPage()
void ServerContainersLogic::onUpdatePage()
{
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();
}
void ServerContainersLogic::onPushButtonProtoSettingsClicked(DockerContainer c, Protocol p)
@ -41,7 +43,7 @@ void ServerContainersLogic::onPushButtonProtoSettingsClicked(DockerContainer c,
void ServerContainersLogic::onPushButtonDefaultClicked(DockerContainer c)
{
m_settings.setDefaultContainer(uiLogic()->selectedServerIndex, c);
updateServerContainersPage();
onUpdatePage();
}
void ServerContainersLogic::onPushButtonShareClicked(DockerContainer c)
@ -62,23 +64,12 @@ void ServerContainersLogic::onPushButtonRemoveClicked(DockerContainer container)
if (c.isEmpty()) m_settings.setDefaultContainer(uiLogic()->selectedServerIndex, DockerContainer::None);
else m_settings.setDefaultContainer(uiLogic()->selectedServerIndex, c.keys().first());
}
updateServerContainersPage();
onUpdatePage();
}
void ServerContainersLogic::onPushButtonContinueClicked(DockerContainer c, int port, TransportProto tp)
{
QMap<DockerContainer, QJsonObject> containers;
Protocol mainProto = ContainerProps::defaultProtocol(c);
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) }}
}
};
containers.insert(c, config);
QJsonObject config = ServerController::createContainerInitialConfig(c, port, tp);
emit uiLogic()->goToPage(Page::ServerConfiguringProgress);
qApp->processEvents();
@ -88,10 +79,12 @@ void ServerContainersLogic::onPushButtonContinueClicked(DockerContainer c, int p
});
if (!e) {
m_settings.setContainerConfig(uiLogic()->selectedServerIndex, c, QJsonObject());
m_settings.setDefaultContainer(uiLogic()->selectedServerIndex, c);
m_settings.setContainerConfig(uiLogic()->selectedServerIndex, c, config);
if (ContainerProps::containerService(c) == ServiceType::Vpn) {
m_settings.setDefaultContainer(uiLogic()->selectedServerIndex, c);
}
}
updateServerContainersPage();
onUpdatePage();
emit uiLogic()->closePage();
}

View file

@ -10,7 +10,7 @@ class ServerContainersLogic : public PageLogicBase
Q_OBJECT
public:
Q_INVOKABLE void updateServerContainersPage();
Q_INVOKABLE void onUpdatePage() override;
Q_INVOKABLE void onPushButtonProtoSettingsClicked(DockerContainer c, Protocol p);
Q_INVOKABLE void onPushButtonDefaultClicked(DockerContainer c);

View file

@ -14,7 +14,7 @@ ServerListLogic::ServerListLogic(UiLogic *logic, QObject *parent):
void ServerListLogic::onServerListPushbuttonDefaultClicked(int index)
{
m_settings.setDefaultServer(index);
updatePage();
onUpdatePage();
}
void ServerListLogic::onServerListPushbuttonSettingsClicked(int index)
@ -23,7 +23,7 @@ void ServerListLogic::onServerListPushbuttonSettingsClicked(int index)
uiLogic()->goToPage(Page::ServerSettings);
}
void ServerListLogic::updatePage()
void ServerListLogic::onUpdatePage()
{
const QJsonArray &servers = m_settings.serversArray();
int defaultServer = m_settings.defaultServerIndex();

View file

@ -12,7 +12,7 @@ class ServerListLogic : public PageLogicBase
READONLY_PROPERTY(QObject *, serverListModel)
public:
Q_INVOKABLE void updatePage() override;
Q_INVOKABLE void onUpdatePage() override;
Q_INVOKABLE void onServerListPushbuttonDefaultClicked(int index);
Q_INVOKABLE void onServerListPushbuttonSettingsClicked(int index);

View file

@ -21,7 +21,7 @@ ServerSettingsLogic::ServerSettingsLogic(UiLogic *logic, QObject *parent):
}
void ServerSettingsLogic::updatePage()
void ServerSettingsLogic::onUpdatePage()
{
set_labelWaitInfoVisible(false);
set_labelWaitInfoText("");
@ -91,7 +91,7 @@ void ServerSettingsLogic::onPushButtonForgetServer()
uiLogic()->selectedServerIndex = -1;
uiLogic()->serverListLogic()->updatePage();
uiLogic()->serverListLogic()->onUpdatePage();
if (m_settings.serversCount() == 0) {
uiLogic()->setStartPage(Page::Start);
@ -121,7 +121,7 @@ void ServerSettingsLogic::onLineEditDescriptionEditingFinished()
QJsonObject server = m_settings.server(uiLogic()->selectedServerIndex);
server.insert(config_key::description, newText);
m_settings.editServer(uiLogic()->selectedServerIndex, server);
uiLogic()->serverListLogic()->updatePage();
uiLogic()->serverListLogic()->onUpdatePage();
}
void ServerSettingsLogic::onPushButtonShareFullClicked()

View file

@ -21,7 +21,7 @@ class ServerSettingsLogic : public PageLogicBase
AUTO_PROPERTY(QString, labelCurrentVpnProtocolText)
public:
Q_INVOKABLE void updatePage() override;
Q_INVOKABLE void onUpdatePage() override;
Q_INVOKABLE void onPushButtonClearServer();
Q_INVOKABLE void onPushButtonForgetServer();

View file

@ -21,7 +21,7 @@ StartPageLogic::StartPageLogic(UiLogic *logic, QObject *parent):
}
void StartPageLogic::updatePage()
void StartPageLogic::onUpdatePage()
{
set_lineEditStartExistingCodeText("");
set_textEditSshKeyText("");

View file

@ -23,7 +23,7 @@ class StartPageLogic : public PageLogicBase
AUTO_PROPERTY(bool, pushButtonConnectVisible)
public:
Q_INVOKABLE void updatePage() override;
Q_INVOKABLE void onUpdatePage() override;
Q_INVOKABLE void onPushButtonConnect();
Q_INVOKABLE void onPushButtonImport();

View file

@ -12,7 +12,7 @@ WizardLogic::WizardLogic(UiLogic *logic, QObject *parent):
}
void WizardLogic::updatePage()
void WizardLogic::onUpdatePage()
{
set_lineEditHighWebsiteMaskingText(protocols::cloak::defaultRedirSite);
}

View file

@ -16,7 +16,7 @@ class WizardLogic : public PageLogicBase
AUTO_PROPERTY(QString, lineEditHighWebsiteMaskingText)
public:
Q_INVOKABLE void updatePage() override;
Q_INVOKABLE void onUpdatePage() override;
Q_INVOKABLE void onPushButtonVpnModeFinishClicked();
Q_INVOKABLE void onPushButtonLowFinishClicked();

View file

@ -0,0 +1,30 @@
#include "OtherProtocolsLogic.h"
#include "core/servercontroller.h"
#include <functional>
#include "../../uilogic.h"
using namespace amnezia;
using namespace PageEnumNS;
OtherProtocolsLogic::OtherProtocolsLogic(UiLogic *logic, QObject *parent):
PageProtocolLogicBase(logic, parent)
{
}
void OtherProtocolsLogic::updateProtocolPage(const QJsonObject &config, DockerContainer container, bool haveAuthData)
{
set_labelTftpUserNameText(config.value(config_key::userName).toString());
set_labelTftpPasswordText(config.value(config_key::password).toString(protocols::sftp::defaultUserName));
set_labelTftpPortText(config.value(config_key::port).toString(protocols::sftp::defaultUserName));
}
//QJsonObject OtherProtocolsLogic::getProtocolConfigFromPage(QJsonObject oldConfig)
//{
//}
void OtherProtocolsLogic::onPushButtonProtoShadowSocksSaveClicked()
{
}

View file

@ -0,0 +1,31 @@
#ifndef OTHER_PROTOCOLS_LOGIC_H
#define OTHER_PROTOCOLS_LOGIC_H
#include "PageProtocolLogicBase.h"
class UiLogic;
class OtherProtocolsLogic : public PageProtocolLogicBase
{
Q_OBJECT
AUTO_PROPERTY(QString, labelTftpUserNameText)
AUTO_PROPERTY(QString, labelTftpPasswordText)
AUTO_PROPERTY(QString, labelTftpPortText)
public:
Q_INVOKABLE void onPushButtonProtoShadowSocksSaveClicked();
public:
explicit OtherProtocolsLogic(UiLogic *uiLogic, QObject *parent = nullptr);
~OtherProtocolsLogic() = default;
void updateProtocolPage(const QJsonObject &config, DockerContainer container, bool haveAuthData) override;
//QJsonObject getProtocolConfigFromPage(QJsonObject oldConfig) override;
private:
Settings m_settings;
UiLogic *m_uiLogic;
};
#endif // OTHER_PROTOCOLS_LOGIC_H