now an instance of the serverController class is created at the place of use
This commit is contained in:
parent
1aa859b10d
commit
a005ed2a84
33 changed files with 125 additions and 139 deletions
|
|
@ -68,8 +68,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
m_settings = std::shared_ptr<Settings>(new Settings);
|
m_settings = std::shared_ptr<Settings>(new Settings);
|
||||||
m_serverController = std::shared_ptr<ServerController>(new ServerController(m_settings, this));
|
m_configurator = std::shared_ptr<VpnConfigurator>(new VpnConfigurator(m_settings, this));
|
||||||
m_configurator = std::shared_ptr<VpnConfigurator>(new VpnConfigurator(m_settings, m_serverController, this));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
AmneziaApplication::~AmneziaApplication()
|
AmneziaApplication::~AmneziaApplication()
|
||||||
|
|
@ -90,7 +89,7 @@ AmneziaApplication::~AmneziaApplication()
|
||||||
void AmneziaApplication::init()
|
void AmneziaApplication::init()
|
||||||
{
|
{
|
||||||
m_engine = new QQmlApplicationEngine;
|
m_engine = new QQmlApplicationEngine;
|
||||||
m_uiLogic = new UiLogic(m_settings, m_configurator, m_serverController);
|
m_uiLogic = new UiLogic(m_settings, m_configurator);
|
||||||
|
|
||||||
const QUrl url(QStringLiteral("qrc:/ui/qml/main.qml"));
|
const QUrl url(QStringLiteral("qrc:/ui/qml/main.qml"));
|
||||||
QObject::connect(m_engine, &QQmlApplicationEngine::objectCreated,
|
QObject::connect(m_engine, &QQmlApplicationEngine::objectCreated,
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,6 @@ private:
|
||||||
UiLogic *m_uiLogic {};
|
UiLogic *m_uiLogic {};
|
||||||
std::shared_ptr<Settings> m_settings;
|
std::shared_ptr<Settings> m_settings;
|
||||||
std::shared_ptr<VpnConfigurator> m_configurator;
|
std::shared_ptr<VpnConfigurator> m_configurator;
|
||||||
std::shared_ptr<ServerController> m_serverController;
|
|
||||||
|
|
||||||
ContainerProps* m_containerProps {};
|
ContainerProps* m_containerProps {};
|
||||||
ProtocolProps* m_protocolProps {};
|
ProtocolProps* m_protocolProps {};
|
||||||
|
|
|
||||||
|
|
@ -7,8 +7,8 @@
|
||||||
#include "core/servercontroller.h"
|
#include "core/servercontroller.h"
|
||||||
#include "containers/containers_defs.h"
|
#include "containers/containers_defs.h"
|
||||||
|
|
||||||
CloakConfigurator::CloakConfigurator(std::shared_ptr<Settings> settings, std::shared_ptr<ServerController> serverController, QObject *parent):
|
CloakConfigurator::CloakConfigurator(std::shared_ptr<Settings> settings, QObject *parent):
|
||||||
ConfiguratorBase(settings, serverController, parent)
|
ConfiguratorBase(settings, parent)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -17,12 +17,13 @@ QString CloakConfigurator::genCloakConfig(const ServerCredentials &credentials,
|
||||||
DockerContainer container, const QJsonObject &containerConfig, ErrorCode *errorCode)
|
DockerContainer container, const QJsonObject &containerConfig, ErrorCode *errorCode)
|
||||||
{
|
{
|
||||||
ErrorCode e = ErrorCode::NoError;
|
ErrorCode e = ErrorCode::NoError;
|
||||||
|
ServerController serverController(m_settings);
|
||||||
|
|
||||||
QString cloakPublicKey = m_serverController->getTextFileFromContainer(container, credentials,
|
QString cloakPublicKey = serverController.getTextFileFromContainer(container, credentials,
|
||||||
amnezia::protocols::cloak::ckPublicKeyPath, &e);
|
amnezia::protocols::cloak::ckPublicKeyPath, &e);
|
||||||
cloakPublicKey.replace("\n", "");
|
cloakPublicKey.replace("\n", "");
|
||||||
|
|
||||||
QString cloakBypassUid = m_serverController->getTextFileFromContainer(container, credentials,
|
QString cloakBypassUid = serverController.getTextFileFromContainer(container, credentials,
|
||||||
amnezia::protocols::cloak::ckBypassUidKeyPath, &e);
|
amnezia::protocols::cloak::ckBypassUidKeyPath, &e);
|
||||||
cloakBypassUid.replace("\n", "");
|
cloakBypassUid.replace("\n", "");
|
||||||
|
|
||||||
|
|
@ -47,8 +48,8 @@ QString CloakConfigurator::genCloakConfig(const ServerCredentials &credentials,
|
||||||
config.insert(config_key::remote, credentials.hostName);
|
config.insert(config_key::remote, credentials.hostName);
|
||||||
config.insert(config_key::port, "$CLOAK_SERVER_PORT");
|
config.insert(config_key::port, "$CLOAK_SERVER_PORT");
|
||||||
|
|
||||||
QString textCfg = m_serverController->replaceVars(QJsonDocument(config).toJson(),
|
QString textCfg = serverController.replaceVars(QJsonDocument(config).toJson(),
|
||||||
m_serverController->genVarsForScript(credentials, container, containerConfig));
|
serverController.genVarsForScript(credentials, container, containerConfig));
|
||||||
|
|
||||||
// qDebug().noquote() << textCfg;
|
// qDebug().noquote() << textCfg;
|
||||||
return textCfg;
|
return textCfg;
|
||||||
|
|
|
||||||
|
|
@ -11,8 +11,7 @@ class CloakConfigurator : ConfiguratorBase
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
CloakConfigurator(std::shared_ptr<Settings> settings,
|
CloakConfigurator(std::shared_ptr<Settings> settings, QObject *parent = nullptr);
|
||||||
std::shared_ptr<ServerController> serverController, QObject *parent = nullptr);
|
|
||||||
|
|
||||||
QString genCloakConfig(const ServerCredentials &credentials, DockerContainer container,
|
QString genCloakConfig(const ServerCredentials &credentials, DockerContainer container,
|
||||||
const QJsonObject &containerConfig, ErrorCode *errorCode = nullptr);
|
const QJsonObject &containerConfig, ErrorCode *errorCode = nullptr);
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,8 @@
|
||||||
#include "configurator_base.h"
|
#include "configurator_base.h"
|
||||||
|
|
||||||
ConfiguratorBase::ConfiguratorBase(std::shared_ptr<Settings> settings,
|
ConfiguratorBase::ConfiguratorBase(std::shared_ptr<Settings> settings, QObject *parent)
|
||||||
std::shared_ptr<ServerController> serverController, QObject *parent)
|
|
||||||
: QObject{parent},
|
: QObject{parent},
|
||||||
m_settings(settings),
|
m_settings(settings)
|
||||||
m_serverController(serverController)
|
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,6 @@
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
|
|
||||||
class Settings;
|
class Settings;
|
||||||
class ServerController;
|
|
||||||
|
|
||||||
#include "containers/containers_defs.h"
|
#include "containers/containers_defs.h"
|
||||||
#include "core/defs.h"
|
#include "core/defs.h"
|
||||||
|
|
@ -13,13 +12,10 @@ class ConfiguratorBase : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
explicit ConfiguratorBase(std::shared_ptr<Settings> settings,
|
explicit ConfiguratorBase(std::shared_ptr<Settings> settings, QObject *parent = nullptr);
|
||||||
std::shared_ptr<ServerController> serverController, QObject *parent = nullptr);
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
std::shared_ptr<Settings> m_settings;
|
std::shared_ptr<Settings> m_settings;
|
||||||
std::shared_ptr<ServerController> m_serverController;
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // CONFIGURATORBASE_H
|
#endif // CONFIGURATORBASE_H
|
||||||
|
|
|
||||||
|
|
@ -15,8 +15,8 @@
|
||||||
#include "core/servercontroller.h"
|
#include "core/servercontroller.h"
|
||||||
|
|
||||||
|
|
||||||
Ikev2Configurator::Ikev2Configurator(std::shared_ptr<Settings> settings, std::shared_ptr<ServerController> serverController, QObject *parent):
|
Ikev2Configurator::Ikev2Configurator(std::shared_ptr<Settings> settings, QObject *parent):
|
||||||
ConfiguratorBase(settings, serverController, parent)
|
ConfiguratorBase(settings, parent)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -41,16 +41,17 @@ Ikev2Configurator::ConnectionData Ikev2Configurator::prepareIkev2Config(const Se
|
||||||
"--extKeyUsage serverAuth,clientAuth -8 \"%1\"")
|
"--extKeyUsage serverAuth,clientAuth -8 \"%1\"")
|
||||||
.arg(connData.clientId);
|
.arg(connData.clientId);
|
||||||
|
|
||||||
ErrorCode e = m_serverController->runContainerScript(credentials, container, scriptCreateCert);
|
ServerController serverController(m_settings);
|
||||||
|
ErrorCode e = serverController.runContainerScript(credentials, container, scriptCreateCert);
|
||||||
|
|
||||||
QString scriptExportCert = QString("pk12util -W \"%1\" -d sql:/etc/ipsec.d -n \"%2\" -o \"%3\"")
|
QString scriptExportCert = QString("pk12util -W \"%1\" -d sql:/etc/ipsec.d -n \"%2\" -o \"%3\"")
|
||||||
.arg(connData.password)
|
.arg(connData.password)
|
||||||
.arg(connData.clientId)
|
.arg(connData.clientId)
|
||||||
.arg(certFileName);
|
.arg(certFileName);
|
||||||
e = m_serverController->runContainerScript(credentials, container, scriptExportCert);
|
e = serverController.runContainerScript(credentials, container, scriptExportCert);
|
||||||
|
|
||||||
connData.clientCert = m_serverController->getTextFileFromContainer(container, credentials, certFileName, &e);
|
connData.clientCert = serverController.getTextFileFromContainer(container, credentials, certFileName, &e);
|
||||||
connData.caCert = m_serverController->getTextFileFromContainer(container, credentials, "/etc/ipsec.d/ca_cert_base64.p12", &e);
|
connData.caCert = serverController.getTextFileFromContainer(container, credentials, "/etc/ipsec.d/ca_cert_base64.p12", &e);
|
||||||
|
|
||||||
qDebug() << "Ikev2Configurator::ConnectionData client cert size:" << connData.clientCert.size();
|
qDebug() << "Ikev2Configurator::ConnectionData client cert size:" << connData.clientCert.size();
|
||||||
qDebug() << "Ikev2Configurator::ConnectionData ca cert size:" << connData.caCert.size();
|
qDebug() << "Ikev2Configurator::ConnectionData ca cert size:" << connData.caCert.size();
|
||||||
|
|
|
||||||
|
|
@ -11,8 +11,7 @@ class Ikev2Configurator : ConfiguratorBase
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
Ikev2Configurator(std::shared_ptr<Settings> settings,
|
Ikev2Configurator(std::shared_ptr<Settings> settings, QObject *parent = nullptr);
|
||||||
std::shared_ptr<ServerController> serverController, QObject *parent = nullptr);
|
|
||||||
|
|
||||||
struct ConnectionData {
|
struct ConnectionData {
|
||||||
QByteArray clientCert; // p12 client cert
|
QByteArray clientCert; // p12 client cert
|
||||||
|
|
|
||||||
|
|
@ -19,8 +19,8 @@
|
||||||
#include <openssl/x509.h>
|
#include <openssl/x509.h>
|
||||||
#include <openssl/pem.h>
|
#include <openssl/pem.h>
|
||||||
|
|
||||||
OpenVpnConfigurator::OpenVpnConfigurator(std::shared_ptr<Settings> settings, std::shared_ptr<ServerController> serverController, QObject *parent):
|
OpenVpnConfigurator::OpenVpnConfigurator(std::shared_ptr<Settings> settings, QObject *parent):
|
||||||
ConfiguratorBase(settings, serverController, parent)
|
ConfiguratorBase(settings, parent)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -40,7 +40,8 @@ OpenVpnConfigurator::ConnectionData OpenVpnConfigurator::prepareOpenVpnConfig(co
|
||||||
arg(amnezia::protocols::openvpn::clientsDirPath).
|
arg(amnezia::protocols::openvpn::clientsDirPath).
|
||||||
arg(connData.clientId);
|
arg(connData.clientId);
|
||||||
|
|
||||||
ErrorCode e = m_serverController->uploadTextFileToContainer(container, credentials, connData.request, reqFileName);
|
ServerController serverController(m_settings);
|
||||||
|
ErrorCode e = serverController.uploadTextFileToContainer(container, credentials, connData.request, reqFileName);
|
||||||
if (e) {
|
if (e) {
|
||||||
if (errorCode) *errorCode = e;
|
if (errorCode) *errorCode = e;
|
||||||
return connData;
|
return connData;
|
||||||
|
|
@ -52,8 +53,8 @@ OpenVpnConfigurator::ConnectionData OpenVpnConfigurator::prepareOpenVpnConfig(co
|
||||||
return connData;
|
return connData;
|
||||||
}
|
}
|
||||||
|
|
||||||
connData.caCert = m_serverController->getTextFileFromContainer(container, credentials, amnezia::protocols::openvpn::caCertPath, &e);
|
connData.caCert = serverController.getTextFileFromContainer(container, credentials, amnezia::protocols::openvpn::caCertPath, &e);
|
||||||
connData.clientCert = m_serverController->getTextFileFromContainer(container, credentials,
|
connData.clientCert = serverController.getTextFileFromContainer(container, credentials,
|
||||||
QString("%1/%2.crt").arg(amnezia::protocols::openvpn::clientCertPath).arg(connData.clientId), &e);
|
QString("%1/%2.crt").arg(amnezia::protocols::openvpn::clientCertPath).arg(connData.clientId), &e);
|
||||||
|
|
||||||
if (e) {
|
if (e) {
|
||||||
|
|
@ -61,7 +62,7 @@ OpenVpnConfigurator::ConnectionData OpenVpnConfigurator::prepareOpenVpnConfig(co
|
||||||
return connData;
|
return connData;
|
||||||
}
|
}
|
||||||
|
|
||||||
connData.taKey = m_serverController->getTextFileFromContainer(container, credentials, amnezia::protocols::openvpn::taKeyPath, &e);
|
connData.taKey = serverController.getTextFileFromContainer(container, credentials, amnezia::protocols::openvpn::taKeyPath, &e);
|
||||||
|
|
||||||
if (connData.caCert.isEmpty() || connData.clientCert.isEmpty() || connData.taKey.isEmpty()) {
|
if (connData.caCert.isEmpty() || connData.clientCert.isEmpty() || connData.taKey.isEmpty()) {
|
||||||
if (errorCode) *errorCode = ErrorCode::SshSftpFailureError;
|
if (errorCode) *errorCode = ErrorCode::SshSftpFailureError;
|
||||||
|
|
@ -73,8 +74,9 @@ OpenVpnConfigurator::ConnectionData OpenVpnConfigurator::prepareOpenVpnConfig(co
|
||||||
QString OpenVpnConfigurator::genOpenVpnConfig(const ServerCredentials &credentials,
|
QString OpenVpnConfigurator::genOpenVpnConfig(const ServerCredentials &credentials,
|
||||||
DockerContainer container, const QJsonObject &containerConfig, ErrorCode *errorCode)
|
DockerContainer container, const QJsonObject &containerConfig, ErrorCode *errorCode)
|
||||||
{
|
{
|
||||||
QString config = m_serverController->replaceVars(amnezia::scriptData(ProtocolScriptType::openvpn_template, container),
|
ServerController serverController(m_settings);
|
||||||
m_serverController->genVarsForScript(credentials, container, containerConfig));
|
QString config = serverController.replaceVars(amnezia::scriptData(ProtocolScriptType::openvpn_template, container),
|
||||||
|
serverController.genVarsForScript(credentials, container, containerConfig));
|
||||||
|
|
||||||
ConnectionData connData = prepareOpenVpnConfig(credentials, container, errorCode);
|
ConnectionData connData = prepareOpenVpnConfig(credentials, container, errorCode);
|
||||||
if (errorCode && *errorCode) {
|
if (errorCode && *errorCode) {
|
||||||
|
|
@ -163,10 +165,11 @@ ErrorCode OpenVpnConfigurator::signCert(DockerContainer container,
|
||||||
.arg(ContainerProps::containerToString(container))
|
.arg(ContainerProps::containerToString(container))
|
||||||
.arg(clientId);
|
.arg(clientId);
|
||||||
|
|
||||||
|
ServerController serverController(m_settings);
|
||||||
QStringList scriptList {script_import, script_sign};
|
QStringList scriptList {script_import, script_sign};
|
||||||
QString script = m_serverController->replaceVars(scriptList.join("\n"), m_serverController->genVarsForScript(credentials, container));
|
QString script = serverController.replaceVars(scriptList.join("\n"), serverController.genVarsForScript(credentials, container));
|
||||||
|
|
||||||
return m_serverController->runScript(credentials, script);
|
return serverController.runScript(credentials, script);
|
||||||
}
|
}
|
||||||
|
|
||||||
OpenVpnConfigurator::ConnectionData OpenVpnConfigurator::createCertRequest()
|
OpenVpnConfigurator::ConnectionData OpenVpnConfigurator::createCertRequest()
|
||||||
|
|
|
||||||
|
|
@ -11,8 +11,7 @@ class OpenVpnConfigurator : ConfiguratorBase
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
OpenVpnConfigurator(std::shared_ptr<Settings> settings,
|
OpenVpnConfigurator(std::shared_ptr<Settings> settings, QObject *parent = nullptr);
|
||||||
std::shared_ptr<ServerController> serverController, QObject *parent = nullptr);
|
|
||||||
|
|
||||||
struct ConnectionData {
|
struct ConnectionData {
|
||||||
QString clientId;
|
QString clientId;
|
||||||
|
|
|
||||||
|
|
@ -7,8 +7,8 @@
|
||||||
#include "containers/containers_defs.h"
|
#include "containers/containers_defs.h"
|
||||||
#include "core/servercontroller.h"
|
#include "core/servercontroller.h"
|
||||||
|
|
||||||
ShadowSocksConfigurator::ShadowSocksConfigurator(std::shared_ptr<Settings> settings, std::shared_ptr<ServerController> serverController, QObject *parent):
|
ShadowSocksConfigurator::ShadowSocksConfigurator(std::shared_ptr<Settings> settings, QObject *parent):
|
||||||
ConfiguratorBase(settings, serverController, parent)
|
ConfiguratorBase(settings, parent)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -17,8 +17,9 @@ QString ShadowSocksConfigurator::genShadowSocksConfig(const ServerCredentials &c
|
||||||
DockerContainer container, const QJsonObject &containerConfig, ErrorCode *errorCode)
|
DockerContainer container, const QJsonObject &containerConfig, ErrorCode *errorCode)
|
||||||
{
|
{
|
||||||
ErrorCode e = ErrorCode::NoError;
|
ErrorCode e = ErrorCode::NoError;
|
||||||
|
ServerController serverController(m_settings);
|
||||||
|
|
||||||
QString ssKey = m_serverController->getTextFileFromContainer(container, credentials,
|
QString ssKey = serverController.getTextFileFromContainer(container, credentials,
|
||||||
amnezia::protocols::shadowsocks::ssKeyPath, &e);
|
amnezia::protocols::shadowsocks::ssKeyPath, &e);
|
||||||
ssKey.replace("\n", "");
|
ssKey.replace("\n", "");
|
||||||
|
|
||||||
|
|
@ -36,8 +37,8 @@ QString ShadowSocksConfigurator::genShadowSocksConfig(const ServerCredentials &c
|
||||||
config.insert("method", "$SHADOWSOCKS_CIPHER");
|
config.insert("method", "$SHADOWSOCKS_CIPHER");
|
||||||
|
|
||||||
|
|
||||||
QString textCfg = m_serverController->replaceVars(QJsonDocument(config).toJson(),
|
QString textCfg = serverController.replaceVars(QJsonDocument(config).toJson(),
|
||||||
m_serverController->genVarsForScript(credentials, container, containerConfig));
|
serverController.genVarsForScript(credentials, container, containerConfig));
|
||||||
|
|
||||||
//qDebug().noquote() << textCfg;
|
//qDebug().noquote() << textCfg;
|
||||||
return textCfg;
|
return textCfg;
|
||||||
|
|
|
||||||
|
|
@ -10,8 +10,7 @@ class ShadowSocksConfigurator : ConfiguratorBase
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
ShadowSocksConfigurator(std::shared_ptr<Settings> settings,
|
ShadowSocksConfigurator(std::shared_ptr<Settings> settings, QObject *parent = nullptr);
|
||||||
std::shared_ptr<ServerController> serverController, QObject *parent = nullptr);
|
|
||||||
|
|
||||||
QString genShadowSocksConfig(const ServerCredentials &credentials, DockerContainer container,
|
QString genShadowSocksConfig(const ServerCredentials &credentials, DockerContainer container,
|
||||||
const QJsonObject &containerConfig, ErrorCode *errorCode = nullptr);
|
const QJsonObject &containerConfig, ErrorCode *errorCode = nullptr);
|
||||||
|
|
|
||||||
|
|
@ -15,8 +15,8 @@
|
||||||
#include "utilities.h"
|
#include "utilities.h"
|
||||||
|
|
||||||
|
|
||||||
SshConfigurator::SshConfigurator(std::shared_ptr<Settings> settings, std::shared_ptr<ServerController> serverController, QObject *parent):
|
SshConfigurator::SshConfigurator(std::shared_ptr<Settings> settings, QObject *parent):
|
||||||
ConfiguratorBase(settings, serverController, parent)
|
ConfiguratorBase(settings, parent)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,8 +11,7 @@ class SshConfigurator : ConfiguratorBase
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
SshConfigurator(std::shared_ptr<Settings> settings,
|
SshConfigurator(std::shared_ptr<Settings> settings, QObject *parent = nullptr);
|
||||||
std::shared_ptr<ServerController> serverController, QObject *parent = nullptr);
|
|
||||||
|
|
||||||
QProcessEnvironment prepareEnv();
|
QProcessEnvironment prepareEnv();
|
||||||
QString convertOpenSShKey(const QString &key);
|
QString convertOpenSShKey(const QString &key);
|
||||||
|
|
|
||||||
|
|
@ -14,16 +14,15 @@
|
||||||
#include "utilities.h"
|
#include "utilities.h"
|
||||||
#include "settings.h"
|
#include "settings.h"
|
||||||
|
|
||||||
VpnConfigurator::VpnConfigurator(std::shared_ptr<Settings> settings,
|
VpnConfigurator::VpnConfigurator(std::shared_ptr<Settings> settings, QObject *parent):
|
||||||
std::shared_ptr<ServerController> serverController, QObject *parent):
|
ConfiguratorBase(settings, parent)
|
||||||
ConfiguratorBase(settings, serverController, parent)
|
|
||||||
{
|
{
|
||||||
openVpnConfigurator = std::shared_ptr<OpenVpnConfigurator>(new OpenVpnConfigurator(settings, serverController, this));
|
openVpnConfigurator = std::shared_ptr<OpenVpnConfigurator>(new OpenVpnConfigurator(settings, this));
|
||||||
shadowSocksConfigurator = std::shared_ptr<ShadowSocksConfigurator>(new ShadowSocksConfigurator(settings, serverController, this));
|
shadowSocksConfigurator = std::shared_ptr<ShadowSocksConfigurator>(new ShadowSocksConfigurator(settings, this));
|
||||||
cloakConfigurator = std::shared_ptr<CloakConfigurator>(new CloakConfigurator(settings, serverController, this));
|
cloakConfigurator = std::shared_ptr<CloakConfigurator>(new CloakConfigurator(settings, this));
|
||||||
wireguardConfigurator = std::shared_ptr<WireguardConfigurator>(new WireguardConfigurator(settings, serverController, this));
|
wireguardConfigurator = std::shared_ptr<WireguardConfigurator>(new WireguardConfigurator(settings, this));
|
||||||
ikev2Configurator = std::shared_ptr<Ikev2Configurator>(new Ikev2Configurator(settings, serverController, this));
|
ikev2Configurator = std::shared_ptr<Ikev2Configurator>(new Ikev2Configurator(settings, this));
|
||||||
sshConfigurator = std::shared_ptr<SshConfigurator>(new SshConfigurator(settings, serverController, this));
|
sshConfigurator = std::shared_ptr<SshConfigurator>(new SshConfigurator(settings, this));
|
||||||
}
|
}
|
||||||
|
|
||||||
QString VpnConfigurator::genVpnProtocolConfig(const ServerCredentials &credentials,
|
QString VpnConfigurator::genVpnProtocolConfig(const ServerCredentials &credentials,
|
||||||
|
|
|
||||||
|
|
@ -19,8 +19,7 @@ class VpnConfigurator : ConfiguratorBase
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
VpnConfigurator(std::shared_ptr<Settings> settings,
|
VpnConfigurator(std::shared_ptr<Settings> settings, QObject *parent = nullptr);
|
||||||
std::shared_ptr<ServerController> serverController, QObject *parent = nullptr);
|
|
||||||
|
|
||||||
QString genVpnProtocolConfig(const ServerCredentials &credentials, DockerContainer container,
|
QString genVpnProtocolConfig(const ServerCredentials &credentials, DockerContainer container,
|
||||||
const QJsonObject &containerConfig, Proto proto, ErrorCode *errorCode = nullptr);
|
const QJsonObject &containerConfig, Proto proto, ErrorCode *errorCode = nullptr);
|
||||||
|
|
@ -35,8 +34,6 @@ public:
|
||||||
void updateContainerConfigAfterInstallation(DockerContainer container,
|
void updateContainerConfigAfterInstallation(DockerContainer container,
|
||||||
QJsonObject &containerConfig, const QString &stdOut);
|
QJsonObject &containerConfig, const QString &stdOut);
|
||||||
|
|
||||||
std::shared_ptr<ServerController> m_serverController;
|
|
||||||
|
|
||||||
std::shared_ptr<OpenVpnConfigurator> openVpnConfigurator;
|
std::shared_ptr<OpenVpnConfigurator> openVpnConfigurator;
|
||||||
std::shared_ptr<ShadowSocksConfigurator> shadowSocksConfigurator;
|
std::shared_ptr<ShadowSocksConfigurator> shadowSocksConfigurator;
|
||||||
std::shared_ptr<CloakConfigurator> cloakConfigurator;
|
std::shared_ptr<CloakConfigurator> cloakConfigurator;
|
||||||
|
|
|
||||||
|
|
@ -21,8 +21,8 @@
|
||||||
#include "core/servercontroller.h"
|
#include "core/servercontroller.h"
|
||||||
#include "settings.h"
|
#include "settings.h"
|
||||||
|
|
||||||
WireguardConfigurator::WireguardConfigurator(std::shared_ptr<Settings> settings, std::shared_ptr<ServerController> serverController, QObject *parent):
|
WireguardConfigurator::WireguardConfigurator(std::shared_ptr<Settings> settings, QObject *parent):
|
||||||
ConfiguratorBase(settings, serverController, parent)
|
ConfiguratorBase(settings, parent)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -70,6 +70,7 @@ WireguardConfigurator::ConnectionData WireguardConfigurator::prepareWireguardCon
|
||||||
}
|
}
|
||||||
|
|
||||||
ErrorCode e = ErrorCode::NoError;
|
ErrorCode e = ErrorCode::NoError;
|
||||||
|
ServerController serverController(m_settings);
|
||||||
|
|
||||||
// Get list of already created clients (only IP addreses)
|
// Get list of already created clients (only IP addreses)
|
||||||
QString nextIpNumber;
|
QString nextIpNumber;
|
||||||
|
|
@ -81,7 +82,7 @@ WireguardConfigurator::ConnectionData WireguardConfigurator::prepareWireguardCon
|
||||||
return ErrorCode::NoError;
|
return ErrorCode::NoError;
|
||||||
};
|
};
|
||||||
|
|
||||||
e = m_serverController->runContainerScript(credentials, container, script, cbReadStdOut);
|
e = serverController.runContainerScript(credentials, container, script, cbReadStdOut);
|
||||||
if (errorCode && e) {
|
if (errorCode && e) {
|
||||||
*errorCode = e;
|
*errorCode = e;
|
||||||
return connData;
|
return connData;
|
||||||
|
|
@ -119,14 +120,14 @@ WireguardConfigurator::ConnectionData WireguardConfigurator::prepareWireguardCon
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get keys
|
// Get keys
|
||||||
connData.serverPubKey = m_serverController->getTextFileFromContainer(container, credentials, amnezia::protocols::wireguard::serverPublicKeyPath, &e);
|
connData.serverPubKey = serverController.getTextFileFromContainer(container, credentials, amnezia::protocols::wireguard::serverPublicKeyPath, &e);
|
||||||
connData.serverPubKey.replace("\n", "");
|
connData.serverPubKey.replace("\n", "");
|
||||||
if (e) {
|
if (e) {
|
||||||
if (errorCode) *errorCode = e;
|
if (errorCode) *errorCode = e;
|
||||||
return connData;
|
return connData;
|
||||||
}
|
}
|
||||||
|
|
||||||
connData.pskKey = m_serverController->getTextFileFromContainer(container, credentials, amnezia::protocols::wireguard::serverPskKeyPath, &e);
|
connData.pskKey = serverController.getTextFileFromContainer(container, credentials, amnezia::protocols::wireguard::serverPskKeyPath, &e);
|
||||||
connData.pskKey.replace("\n", "");
|
connData.pskKey.replace("\n", "");
|
||||||
|
|
||||||
if (e) {
|
if (e) {
|
||||||
|
|
@ -144,7 +145,7 @@ WireguardConfigurator::ConnectionData WireguardConfigurator::prepareWireguardCon
|
||||||
arg(connData.pskKey).
|
arg(connData.pskKey).
|
||||||
arg(connData.clientIP);
|
arg(connData.clientIP);
|
||||||
|
|
||||||
e = m_serverController->uploadTextFileToContainer(container, credentials, configPart,
|
e = serverController.uploadTextFileToContainer(container, credentials, configPart,
|
||||||
protocols::wireguard::serverConfigPath, libssh::SftpOverwriteMode::SftpAppendToExisting);
|
protocols::wireguard::serverConfigPath, libssh::SftpOverwriteMode::SftpAppendToExisting);
|
||||||
|
|
||||||
if (e) {
|
if (e) {
|
||||||
|
|
@ -152,9 +153,9 @@ WireguardConfigurator::ConnectionData WireguardConfigurator::prepareWireguardCon
|
||||||
return connData;
|
return connData;
|
||||||
}
|
}
|
||||||
|
|
||||||
e = m_serverController->runScript(credentials,
|
e = serverController.runScript(credentials,
|
||||||
m_serverController->replaceVars("sudo docker exec -i $CONTAINER_NAME bash -c 'wg syncconf wg0 <(wg-quick strip /opt/amnezia/wireguard/wg0.conf)'",
|
serverController.replaceVars("sudo docker exec -i $CONTAINER_NAME bash -c 'wg syncconf wg0 <(wg-quick strip /opt/amnezia/wireguard/wg0.conf)'",
|
||||||
m_serverController->genVarsForScript(credentials, container)));
|
serverController.genVarsForScript(credentials, container)));
|
||||||
|
|
||||||
return connData;
|
return connData;
|
||||||
}
|
}
|
||||||
|
|
@ -162,8 +163,9 @@ WireguardConfigurator::ConnectionData WireguardConfigurator::prepareWireguardCon
|
||||||
QString WireguardConfigurator::genWireguardConfig(const ServerCredentials &credentials,
|
QString WireguardConfigurator::genWireguardConfig(const ServerCredentials &credentials,
|
||||||
DockerContainer container, const QJsonObject &containerConfig, ErrorCode *errorCode)
|
DockerContainer container, const QJsonObject &containerConfig, ErrorCode *errorCode)
|
||||||
{
|
{
|
||||||
QString config = m_serverController->replaceVars(amnezia::scriptData(ProtocolScriptType::wireguard_template, container),
|
ServerController serverController(m_settings);
|
||||||
m_serverController->genVarsForScript(credentials, container, containerConfig));
|
QString config = serverController.replaceVars(amnezia::scriptData(ProtocolScriptType::wireguard_template, container),
|
||||||
|
serverController.genVarsForScript(credentials, container, containerConfig));
|
||||||
|
|
||||||
ConnectionData connData = prepareWireguardConfig(credentials, container, containerConfig, errorCode);
|
ConnectionData connData = prepareWireguardConfig(credentials, container, containerConfig, errorCode);
|
||||||
if (errorCode && *errorCode) {
|
if (errorCode && *errorCode) {
|
||||||
|
|
|
||||||
|
|
@ -11,8 +11,7 @@ class WireguardConfigurator : ConfiguratorBase
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
WireguardConfigurator(std::shared_ptr<Settings> settings,
|
WireguardConfigurator(std::shared_ptr<Settings> settings, QObject *parent = nullptr);
|
||||||
std::shared_ptr<ServerController> serverController, QObject *parent = nullptr);
|
|
||||||
|
|
||||||
struct ConnectionData {
|
struct ConnectionData {
|
||||||
QString clientPrivKey; // client private key
|
QString clientPrivKey; // client private key
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,7 @@ ServerController::ServerController(std::shared_ptr<Settings> settings, QObject *
|
||||||
|
|
||||||
ServerController::~ServerController()
|
ServerController::~ServerController()
|
||||||
{
|
{
|
||||||
|
m_sshClient.disconnectFromHost();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -629,11 +630,6 @@ void ServerController::setCancelInstallation(const bool cancel)
|
||||||
m_cancelInstallation = cancel;
|
m_cancelInstallation = cancel;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ServerController::disconnectFromHost(const ServerCredentials &credentials)
|
|
||||||
{
|
|
||||||
m_sshClient.disconnectFromHost();
|
|
||||||
}
|
|
||||||
|
|
||||||
ErrorCode ServerController::setupServerFirewall(const ServerCredentials &credentials)
|
ErrorCode ServerController::setupServerFirewall(const ServerCredentials &credentials)
|
||||||
{
|
{
|
||||||
return runScript(credentials,
|
return runScript(credentials,
|
||||||
|
|
|
||||||
|
|
@ -22,8 +22,6 @@ public:
|
||||||
|
|
||||||
typedef QList<QPair<QString, QString>> Vars;
|
typedef QList<QPair<QString, QString>> Vars;
|
||||||
|
|
||||||
void disconnectFromHost(const ServerCredentials &credentials);
|
|
||||||
|
|
||||||
ErrorCode removeAllContainers(const ServerCredentials &credentials);
|
ErrorCode removeAllContainers(const ServerCredentials &credentials);
|
||||||
ErrorCode removeContainer(const ServerCredentials &credentials, DockerContainer container);
|
ErrorCode removeContainer(const ServerCredentials &credentials, DockerContainer container);
|
||||||
ErrorCode setupContainer(const ServerCredentials &credentials, DockerContainer container,
|
ErrorCode setupContainer(const ServerCredentials &credentials, DockerContainer container,
|
||||||
|
|
|
||||||
|
|
@ -44,10 +44,11 @@ void AdvancedServerSettingsLogic::onPushButtonClearServerClicked()
|
||||||
uiLogic()->pageLogic<VpnLogic>()->onDisconnect();
|
uiLogic()->pageLogic<VpnLogic>()->onDisconnect();
|
||||||
}
|
}
|
||||||
|
|
||||||
ErrorCode e = m_serverController->removeAllContainers(m_settings->serverCredentials(uiLogic()->m_selectedServerIndex));
|
ServerController serverController(m_settings);
|
||||||
if (e) {
|
ErrorCode errorCode = serverController.removeAllContainers(m_settings->serverCredentials(uiLogic()->m_selectedServerIndex));
|
||||||
|
if (errorCode) {
|
||||||
emit uiLogic()->showWarningMessage(tr("Error occurred while cleaning the server.") + "\n" +
|
emit uiLogic()->showWarningMessage(tr("Error occurred while cleaning the server.") + "\n" +
|
||||||
tr("Error message: ") + errorString(e) + "\n" +
|
tr("Error message: ") + errorString(errorCode) + "\n" +
|
||||||
tr("See logs for details."));
|
tr("See logs for details."));
|
||||||
} else {
|
} else {
|
||||||
set_labelWaitInfoVisible(true);
|
set_labelWaitInfoVisible(true);
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,6 @@ PageLogicBase::PageLogicBase(UiLogic *logic, QObject *parent):
|
||||||
{
|
{
|
||||||
m_settings = logic->m_settings;
|
m_settings = logic->m_settings;
|
||||||
m_configurator = logic->m_configurator;
|
m_configurator = logic->m_configurator;
|
||||||
m_serverController = logic->m_serverController;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,6 @@ protected:
|
||||||
|
|
||||||
std::shared_ptr<Settings> m_settings;
|
std::shared_ptr<Settings> m_settings;
|
||||||
std::shared_ptr<VpnConfigurator> m_configurator;
|
std::shared_ptr<VpnConfigurator> m_configurator;
|
||||||
std::shared_ptr<ServerController> m_serverController;
|
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void updatePage();
|
void updatePage();
|
||||||
|
|
|
||||||
|
|
@ -96,19 +96,18 @@ ErrorCode ServerConfiguringProgressLogic::doInstallAction(const std::function<Er
|
||||||
progress.setValueFunc(0);
|
progress.setValueFunc(0);
|
||||||
timer.start(1000);
|
timer.start(1000);
|
||||||
|
|
||||||
|
ServerController serverController(m_settings);
|
||||||
|
|
||||||
QMetaObject::Connection cancelDoInstallActionConnection;
|
QMetaObject::Connection cancelDoInstallActionConnection;
|
||||||
if (cancelButton.setVisibleFunc) {
|
if (cancelButton.setVisibleFunc) {
|
||||||
cancelDoInstallActionConnection = connect(this, &ServerConfiguringProgressLogic::cancelDoInstallAction,
|
cancelDoInstallActionConnection = connect(this, &ServerConfiguringProgressLogic::cancelDoInstallAction,
|
||||||
m_serverController.get(), &ServerController::setCancelInstallation);
|
&serverController, &ServerController::setCancelInstallation);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
QMetaObject::Connection serverBusyConnection;
|
QMetaObject::Connection serverBusyConnection;
|
||||||
if (serverBusyInfo.setVisibleFunc && serverBusyInfo.setTextFunc) {
|
if (serverBusyInfo.setVisibleFunc && serverBusyInfo.setTextFunc) {
|
||||||
serverBusyConnection = connect(m_serverController.get(),
|
auto onServerIsBusy = [&serverBusyInfo, &timer, &cancelButton](const bool isBusy) {
|
||||||
&ServerController::serverIsBusy,
|
|
||||||
this,
|
|
||||||
[&serverBusyInfo, &timer, &cancelButton](const bool isBusy) {
|
|
||||||
isBusy ? timer.stop() : timer.start(1000);
|
isBusy ? timer.stop() : timer.start(1000);
|
||||||
serverBusyInfo.setVisibleFunc(isBusy);
|
serverBusyInfo.setVisibleFunc(isBusy);
|
||||||
serverBusyInfo.setTextFunc(isBusy ? "Amnesia has detected that your server is currently "
|
serverBusyInfo.setTextFunc(isBusy ? "Amnesia has detected that your server is currently "
|
||||||
|
|
@ -118,7 +117,9 @@ ErrorCode ServerConfiguringProgressLogic::doInstallAction(const std::function<Er
|
||||||
if (cancelButton.setVisibleFunc) {
|
if (cancelButton.setVisibleFunc) {
|
||||||
cancelButton.setVisibleFunc(isBusy ? true : false);
|
cancelButton.setVisibleFunc(isBusy ? true : false);
|
||||||
}
|
}
|
||||||
});
|
};
|
||||||
|
|
||||||
|
serverBusyConnection = connect(&serverController, &ServerController::serverIsBusy, this, onServerIsBusy);
|
||||||
}
|
}
|
||||||
|
|
||||||
ErrorCode e = action();
|
ErrorCode e = action();
|
||||||
|
|
@ -182,5 +183,5 @@ ErrorCode ServerConfiguringProgressLogic::doInstallAction(const std::function<Er
|
||||||
|
|
||||||
void ServerConfiguringProgressLogic::onPushButtonCancelClicked()
|
void ServerConfiguringProgressLogic::onPushButtonCancelClicked()
|
||||||
{
|
{
|
||||||
cancelDoInstallAction(true);
|
emit cancelDoInstallAction(true);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -70,7 +70,8 @@ void ServerContainersLogic::onPushButtonShareClicked(DockerContainer c)
|
||||||
void ServerContainersLogic::onPushButtonRemoveClicked(DockerContainer container)
|
void ServerContainersLogic::onPushButtonRemoveClicked(DockerContainer container)
|
||||||
{
|
{
|
||||||
//buttonSetEnabledFunc(false);
|
//buttonSetEnabledFunc(false);
|
||||||
ErrorCode e = m_serverController->removeContainer(m_settings->serverCredentials(uiLogic()->m_selectedServerIndex), container);
|
ServerController serverController(m_settings);
|
||||||
|
ErrorCode e = serverController.removeContainer(m_settings->serverCredentials(uiLogic()->m_selectedServerIndex), container);
|
||||||
m_settings->removeContainerConfig(uiLogic()->m_selectedServerIndex, container);
|
m_settings->removeContainerConfig(uiLogic()->m_selectedServerIndex, container);
|
||||||
//buttonSetEnabledFunc(true);
|
//buttonSetEnabledFunc(true);
|
||||||
|
|
||||||
|
|
@ -84,7 +85,8 @@ void ServerContainersLogic::onPushButtonRemoveClicked(DockerContainer container)
|
||||||
|
|
||||||
void ServerContainersLogic::onPushButtonContinueClicked(DockerContainer c, int port, TransportProto tp)
|
void ServerContainersLogic::onPushButtonContinueClicked(DockerContainer c, int port, TransportProto tp)
|
||||||
{
|
{
|
||||||
QJsonObject config = m_serverController->createContainerInitialConfig(c, port, tp);
|
ServerController serverController(m_settings);
|
||||||
|
QJsonObject config = serverController.createContainerInitialConfig(c, port, tp);
|
||||||
|
|
||||||
emit uiLogic()->goToPage(Page::ServerConfiguringProgress);
|
emit uiLogic()->goToPage(Page::ServerConfiguringProgress);
|
||||||
qApp->processEvents();
|
qApp->processEvents();
|
||||||
|
|
@ -95,7 +97,8 @@ void ServerContainersLogic::onPushButtonContinueClicked(DockerContainer c, int p
|
||||||
if (errorCode == ErrorCode::NoError) {
|
if (errorCode == ErrorCode::NoError) {
|
||||||
if (!uiLogic()->isContainerAlreadyAddedToGui(c)) {
|
if (!uiLogic()->isContainerAlreadyAddedToGui(c)) {
|
||||||
auto installAction = [this, c, &config]() {
|
auto installAction = [this, c, &config]() {
|
||||||
return m_serverController->setupContainer(m_settings->serverCredentials(uiLogic()->m_selectedServerIndex), c, config);
|
ServerController serverController(m_settings);
|
||||||
|
return serverController.setupContainer(m_settings->serverCredentials(uiLogic()->m_selectedServerIndex), c, config);
|
||||||
};
|
};
|
||||||
errorCode = uiLogic()->pageLogic<ServerConfiguringProgressLogic>()->doInstallAction(installAction);
|
errorCode = uiLogic()->pageLogic<ServerConfiguringProgressLogic>()->doInstallAction(installAction);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -131,10 +131,11 @@ void StartPageLogic::onPushButtonConnect()
|
||||||
set_pushButtonConnectEnabled(false);
|
set_pushButtonConnectEnabled(false);
|
||||||
set_pushButtonConnectText(tr("Connecting..."));
|
set_pushButtonConnectText(tr("Connecting..."));
|
||||||
|
|
||||||
|
ServerController serverController(m_settings);
|
||||||
ErrorCode errorCode = ErrorCode::NoError;
|
ErrorCode errorCode = ErrorCode::NoError;
|
||||||
|
|
||||||
if (pushButtonConnectKeyChecked()) {
|
if (pushButtonConnectKeyChecked()) {
|
||||||
auto passphraseCallback = [this]() {
|
auto passphraseCallback = [this, &serverController]() {
|
||||||
emit showPassphraseRequestMessage();
|
emit showPassphraseRequestMessage();
|
||||||
QEventLoop loop;
|
QEventLoop loop;
|
||||||
QObject::connect(this, &StartPageLogic::passphraseDialogClosed, &loop, &QEventLoop::quit);
|
QObject::connect(this, &StartPageLogic::passphraseDialogClosed, &loop, &QEventLoop::quit);
|
||||||
|
|
@ -142,14 +143,14 @@ void StartPageLogic::onPushButtonConnect()
|
||||||
|
|
||||||
return m_privateKeyPassphrase;
|
return m_privateKeyPassphrase;
|
||||||
};
|
};
|
||||||
m_serverController->setPassphraseCallback(passphraseCallback);
|
serverController.setPassphraseCallback(passphraseCallback);
|
||||||
}
|
}
|
||||||
|
|
||||||
QString output = m_serverController->checkSshConnection(serverCredentials, &errorCode);
|
QString output = serverController.checkSshConnection(serverCredentials, &errorCode);
|
||||||
|
|
||||||
if (pushButtonConnectKeyChecked()) {
|
if (pushButtonConnectKeyChecked()) {
|
||||||
QString decryptedPrivateKey;
|
QString decryptedPrivateKey;
|
||||||
errorCode = uiLogic()->m_serverController->getDecryptedPrivateKey(serverCredentials, decryptedPrivateKey);
|
errorCode = serverController.getDecryptedPrivateKey(serverCredentials, decryptedPrivateKey);
|
||||||
if (errorCode == ErrorCode::NoError) {
|
if (errorCode == ErrorCode::NoError) {
|
||||||
serverCredentials.password = decryptedPrivateKey;
|
serverCredentials.password = decryptedPrivateKey;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -112,13 +112,14 @@ void CloakLogic::onPushButtonSaveClicked()
|
||||||
|
|
||||||
progressBarFunc.setTextVisibleFunc(true);
|
progressBarFunc.setTextVisibleFunc(true);
|
||||||
progressBarFunc.setTextFunc(QString("Configuring..."));
|
progressBarFunc.setTextFunc(QString("Configuring..."));
|
||||||
ErrorCode e = uiLogic()->pageLogic<ServerConfiguringProgressLogic>()->doInstallAction([this, containerConfig, &newContainerConfig](){
|
|
||||||
return m_serverController->updateContainer(m_settings->serverCredentials(uiLogic()->m_selectedServerIndex),
|
auto installAction = [this, containerConfig, &newContainerConfig]() {
|
||||||
uiLogic()->m_selectedDockerContainer,
|
ServerController serverController(m_settings);
|
||||||
containerConfig,
|
return serverController.updateContainer(m_settings->serverCredentials(uiLogic()->m_selectedServerIndex),
|
||||||
newContainerConfig);
|
uiLogic()->m_selectedDockerContainer, containerConfig, newContainerConfig);
|
||||||
},
|
};
|
||||||
pageFunc, progressBarFunc,
|
|
||||||
|
ErrorCode e = uiLogic()->pageLogic<ServerConfiguringProgressLogic>()->doInstallAction(installAction, pageFunc, progressBarFunc,
|
||||||
saveButtonFunc, waitInfoFunc,
|
saveButtonFunc, waitInfoFunc,
|
||||||
busyInfoFuncy, cancelButtonFunc);
|
busyInfoFuncy, cancelButtonFunc);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -162,13 +162,14 @@ void OpenVpnLogic::onPushButtonSaveClicked()
|
||||||
|
|
||||||
progressBarFunc.setTextVisibleFunc(true);
|
progressBarFunc.setTextVisibleFunc(true);
|
||||||
progressBarFunc.setTextFunc(QString("Configuring..."));
|
progressBarFunc.setTextFunc(QString("Configuring..."));
|
||||||
ErrorCode e = uiLogic()->pageLogic<ServerConfiguringProgressLogic>()->doInstallAction([this, containerConfig, &newContainerConfig](){
|
|
||||||
return m_serverController->updateContainer(m_settings->serverCredentials(uiLogic()->m_selectedServerIndex),
|
auto installAction = [this, containerConfig, &newContainerConfig]() {
|
||||||
uiLogic()->m_selectedDockerContainer,
|
ServerController serverController(m_settings);
|
||||||
containerConfig,
|
return serverController.updateContainer(m_settings->serverCredentials(uiLogic()->m_selectedServerIndex),
|
||||||
newContainerConfig);
|
uiLogic()->m_selectedDockerContainer, containerConfig, newContainerConfig);
|
||||||
},
|
};
|
||||||
pageFunc, progressBarFunc,
|
|
||||||
|
ErrorCode e = uiLogic()->pageLogic<ServerConfiguringProgressLogic>()->doInstallAction(installAction, pageFunc, progressBarFunc,
|
||||||
saveButtonFunc, waitInfoFunc,
|
saveButtonFunc, waitInfoFunc,
|
||||||
busyInfoFuncy, cancelButtonFunc);
|
busyInfoFuncy, cancelButtonFunc);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -104,8 +104,10 @@ void ShadowSocksLogic::onPushButtonSaveClicked()
|
||||||
|
|
||||||
progressBarFunc.setTextVisibleFunc(true);
|
progressBarFunc.setTextVisibleFunc(true);
|
||||||
progressBarFunc.setTextFunc(QString("Configuring..."));
|
progressBarFunc.setTextFunc(QString("Configuring..."));
|
||||||
|
|
||||||
auto installAction = [this, containerConfig, &newContainerConfig]() {
|
auto installAction = [this, containerConfig, &newContainerConfig]() {
|
||||||
return m_serverController->updateContainer(m_settings->serverCredentials(uiLogic()->m_selectedServerIndex),
|
ServerController serverController(m_settings);
|
||||||
|
return serverController.updateContainer(m_settings->serverCredentials(uiLogic()->m_selectedServerIndex),
|
||||||
uiLogic()->m_selectedDockerContainer, containerConfig, newContainerConfig);
|
uiLogic()->m_selectedDockerContainer, containerConfig, newContainerConfig);
|
||||||
};
|
};
|
||||||
ErrorCode e = uiLogic()->pageLogic<ServerConfiguringProgressLogic>()->doInstallAction(installAction, pageFunc, progressBarFunc,
|
ErrorCode e = uiLogic()->pageLogic<ServerConfiguringProgressLogic>()->doInstallAction(installAction, pageFunc, progressBarFunc,
|
||||||
|
|
|
||||||
|
|
@ -78,16 +78,14 @@ using namespace amnezia;
|
||||||
using namespace PageEnumNS;
|
using namespace PageEnumNS;
|
||||||
|
|
||||||
UiLogic::UiLogic(std::shared_ptr<Settings> settings, std::shared_ptr<VpnConfigurator> configurator,
|
UiLogic::UiLogic(std::shared_ptr<Settings> settings, std::shared_ptr<VpnConfigurator> configurator,
|
||||||
std::shared_ptr<ServerController> serverController,
|
|
||||||
QObject *parent) :
|
QObject *parent) :
|
||||||
QObject(parent),
|
QObject(parent),
|
||||||
m_settings(settings),
|
m_settings(settings),
|
||||||
m_configurator(configurator),
|
m_configurator(configurator)
|
||||||
m_serverController(serverController)
|
|
||||||
{
|
{
|
||||||
m_containersModel = new ContainersModel(settings, this);
|
m_containersModel = new ContainersModel(settings, this);
|
||||||
m_protocolsModel = new ProtocolsModel(settings, this);
|
m_protocolsModel = new ProtocolsModel(settings, this);
|
||||||
m_vpnConnection = new VpnConnection(settings, configurator, serverController);
|
m_vpnConnection = new VpnConnection(settings, configurator);
|
||||||
m_vpnConnection->moveToThread(&m_vpnConnectionThread);
|
m_vpnConnection->moveToThread(&m_vpnConnectionThread);
|
||||||
m_vpnConnectionThread.start();
|
m_vpnConnectionThread.start();
|
||||||
|
|
||||||
|
|
@ -337,7 +335,8 @@ void UiLogic::installServer(QPair<DockerContainer, QJsonObject> &container)
|
||||||
if (!isContainerAlreadyAddedToGui(container.first)) {
|
if (!isContainerAlreadyAddedToGui(container.first)) {
|
||||||
progressBarFunc.setTextFunc(QString("Installing %1").arg(ContainerProps::containerToString(container.first)));
|
progressBarFunc.setTextFunc(QString("Installing %1").arg(ContainerProps::containerToString(container.first)));
|
||||||
auto installAction = [&] () {
|
auto installAction = [&] () {
|
||||||
return m_serverController->setupContainer(m_installCredentials, container.first, container.second);
|
ServerController serverController(m_settings);
|
||||||
|
return serverController.setupContainer(m_installCredentials, container.first, container.second);
|
||||||
};
|
};
|
||||||
errorCode = pageLogic<ServerConfiguringProgressLogic>()->doInstallAction(installAction, pageFunc, progressBarFunc,
|
errorCode = pageLogic<ServerConfiguringProgressLogic>()->doInstallAction(installAction, pageFunc, progressBarFunc,
|
||||||
noButton, waitInfoFunc,
|
noButton, waitInfoFunc,
|
||||||
|
|
@ -531,7 +530,8 @@ ErrorCode UiLogic::addAlreadyInstalledContainersGui(bool createNewServer, bool &
|
||||||
}
|
}
|
||||||
|
|
||||||
QMap<DockerContainer, QJsonObject> installedContainers;
|
QMap<DockerContainer, QJsonObject> installedContainers;
|
||||||
ErrorCode errorCode = m_serverController->getAlreadyInstalledContainers(credentials, installedContainers);
|
ServerController serverController(m_settings);
|
||||||
|
ErrorCode errorCode = serverController.getAlreadyInstalledContainers(credentials, installedContainers);
|
||||||
if (errorCode != ErrorCode::NoError) {
|
if (errorCode != ErrorCode::NoError) {
|
||||||
return errorCode;
|
return errorCode;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -67,8 +67,7 @@ class UiLogic : public QObject
|
||||||
READONLY_PROPERTY(QObject *, protocolsModel)
|
READONLY_PROPERTY(QObject *, protocolsModel)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit UiLogic(std::shared_ptr<Settings> settings, std::shared_ptr<VpnConfigurator> configurator,
|
explicit UiLogic(std::shared_ptr<Settings> settings, std::shared_ptr<VpnConfigurator> configurator, QObject *parent = nullptr);
|
||||||
std::shared_ptr<ServerController> serverController, QObject *parent = nullptr);
|
|
||||||
~UiLogic();
|
~UiLogic();
|
||||||
void showOnStartup();
|
void showOnStartup();
|
||||||
|
|
||||||
|
|
@ -180,7 +179,6 @@ private:
|
||||||
|
|
||||||
std::shared_ptr<Settings> m_settings;
|
std::shared_ptr<Settings> m_settings;
|
||||||
std::shared_ptr<VpnConfigurator> m_configurator;
|
std::shared_ptr<VpnConfigurator> m_configurator;
|
||||||
std::shared_ptr<ServerController> m_serverController;
|
|
||||||
|
|
||||||
NotificationHandler* m_notificationHandler;
|
NotificationHandler* m_notificationHandler;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -30,11 +30,9 @@
|
||||||
#include "vpnconnection.h"
|
#include "vpnconnection.h"
|
||||||
|
|
||||||
VpnConnection::VpnConnection(std::shared_ptr<Settings> settings,
|
VpnConnection::VpnConnection(std::shared_ptr<Settings> settings,
|
||||||
std::shared_ptr<VpnConfigurator> configurator,
|
std::shared_ptr<VpnConfigurator> configurator, QObject* parent) : QObject(parent),
|
||||||
std::shared_ptr<ServerController> serverController, QObject* parent) : QObject(parent),
|
|
||||||
m_settings(settings),
|
m_settings(settings),
|
||||||
m_configurator(configurator),
|
m_configurator(configurator),
|
||||||
m_serverController(serverController),
|
|
||||||
m_isIOSConnected(false)
|
m_isIOSConnected(false)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -33,8 +33,7 @@ class VpnConnection : public QObject
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit VpnConnection(std::shared_ptr<Settings> settings,
|
explicit VpnConnection(std::shared_ptr<Settings> settings,
|
||||||
std::shared_ptr<VpnConfigurator> configurator,
|
std::shared_ptr<VpnConfigurator> configurator, QObject* parent = nullptr);
|
||||||
std::shared_ptr<ServerController> serverController, QObject* parent = nullptr);
|
|
||||||
~VpnConnection() override;
|
~VpnConnection() override;
|
||||||
|
|
||||||
static QString bytesPerSecToText(quint64 bytes);
|
static QString bytesPerSecToText(quint64 bytes);
|
||||||
|
|
@ -96,7 +95,6 @@ protected:
|
||||||
private:
|
private:
|
||||||
std::shared_ptr<Settings> m_settings;
|
std::shared_ptr<Settings> m_settings;
|
||||||
std::shared_ptr<VpnConfigurator> m_configurator;
|
std::shared_ptr<VpnConfigurator> m_configurator;
|
||||||
std::shared_ptr<ServerController> m_serverController;
|
|
||||||
|
|
||||||
QJsonObject m_vpnConfiguration;
|
QJsonObject m_vpnConfiguration;
|
||||||
QJsonObject m_routeMode;
|
QJsonObject m_routeMode;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue