added local port field to v2ray settings page
- some code style refactoring
This commit is contained in:
parent
2b0ba2aff9
commit
36fae9152f
10 changed files with 88 additions and 65 deletions
|
|
@ -52,26 +52,25 @@ ErrorCode OpenVpnOverCloakProtocol::start()
|
||||||
args << "-u";
|
args << "-u";
|
||||||
}
|
}
|
||||||
|
|
||||||
qDebug().noquote() << "OpenVpnOverCloakProtocol::start()"
|
qDebug().noquote() << "OpenVpnOverCloakProtocol::start()" << cloakExecPath() << args.join(" ");
|
||||||
<< cloakExecPath() << args.join(" ");
|
|
||||||
|
|
||||||
m_ckProcess.setProcessChannelMode(QProcess::MergedChannels);
|
m_ckProcess.setProcessChannelMode(QProcess::MergedChannels);
|
||||||
|
|
||||||
m_ckProcess.setProgram(cloakExecPath());
|
m_ckProcess.setProgram(cloakExecPath());
|
||||||
m_ckProcess.setArguments(args);
|
m_ckProcess.setArguments(args);
|
||||||
|
|
||||||
connect(&m_ckProcess, &QProcess::readyReadStandardOutput, this, [this](){
|
connect(&m_ckProcess, &QProcess::readyReadStandardOutput, this, [this]() {
|
||||||
qDebug().noquote() << "ck-client:" << m_ckProcess.readAllStandardOutput();
|
qDebug().noquote() << "ck-client:" << m_ckProcess.readAllStandardOutput();
|
||||||
});
|
});
|
||||||
|
|
||||||
m_errorHandlerConnection = connect(&m_ckProcess, QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished), this, [this](int exitCode, QProcess::ExitStatus exitStatus){
|
m_errorHandlerConnection = connect(&m_ckProcess, QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished), this, [this](int exitCode, QProcess::ExitStatus exitStatus) {
|
||||||
qDebug().noquote() << "OpenVpnOverCloakProtocol finished, exitCode, exiStatus" << exitCode << exitStatus;
|
qDebug().noquote() << "OpenVpnOverCloakProtocol finished, exitCode, exiStatus" << exitCode << exitStatus;
|
||||||
setConnectionState(VpnProtocol::Disconnected);
|
setConnectionState(VpnProtocol::Disconnected);
|
||||||
if (exitStatus != QProcess::NormalExit){
|
if (exitStatus != QProcess::NormalExit) {
|
||||||
emit protocolError(amnezia::ErrorCode::CloakExecutableCrashed);
|
emit protocolError(amnezia::ErrorCode::CloakExecutableCrashed);
|
||||||
stop();
|
stop();
|
||||||
}
|
}
|
||||||
if (exitCode !=0 ){
|
if (exitCode !=0 ) {
|
||||||
emit protocolError(amnezia::ErrorCode::InternalError);
|
emit protocolError(amnezia::ErrorCode::InternalError);
|
||||||
stop();
|
stop();
|
||||||
}
|
}
|
||||||
|
|
@ -84,8 +83,9 @@ ErrorCode OpenVpnOverCloakProtocol::start()
|
||||||
setConnectionState(VpnConnectionState::Connecting);
|
setConnectionState(VpnConnectionState::Connecting);
|
||||||
|
|
||||||
return OpenVpnProtocol::start();
|
return OpenVpnProtocol::start();
|
||||||
|
} else {
|
||||||
|
return ErrorCode::CloakExecutableMissing;
|
||||||
}
|
}
|
||||||
else return ErrorCode::CloakExecutableMissing;
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
#include <QJsonObject>
|
#include <QJsonObject>
|
||||||
|
|
||||||
ShadowSocksVpnProtocol::ShadowSocksVpnProtocol(const QJsonObject &configuration, QObject *parent):
|
ShadowSocksVpnProtocol::ShadowSocksVpnProtocol(const QJsonObject &configuration, QObject *parent):
|
||||||
OpenVpnProtocol(configuration, parent)
|
OpenVpnProtocol(configuration, parent)
|
||||||
{
|
{
|
||||||
readShadowSocksConfiguration(configuration);
|
readShadowSocksConfiguration(configuration);
|
||||||
}
|
}
|
||||||
|
|
@ -32,7 +32,6 @@ ErrorCode ShadowSocksVpnProtocol::start()
|
||||||
return lastError();
|
return lastError();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifndef Q_OS_IOS
|
#ifndef Q_OS_IOS
|
||||||
if (Utils::processIsRunning(Utils::executable("ss-local", false))) {
|
if (Utils::processIsRunning(Utils::executable("ss-local", false))) {
|
||||||
Utils::killProcessByName(Utils::executable("ss-local", false));
|
Utils::killProcessByName(Utils::executable("ss-local", false));
|
||||||
|
|
@ -48,30 +47,28 @@ ErrorCode ShadowSocksVpnProtocol::start()
|
||||||
#ifdef Q_OS_LINUX
|
#ifdef Q_OS_LINUX
|
||||||
QStringList args = QStringList() << "-c" << m_shadowSocksCfgFile.fileName();
|
QStringList args = QStringList() << "-c" << m_shadowSocksCfgFile.fileName();
|
||||||
#else
|
#else
|
||||||
QStringList args = QStringList() << "-c" << m_shadowSocksCfgFile.fileName()
|
QStringList args = QStringList() << "-c" << m_shadowSocksCfgFile.fileName() << "--no-delay";
|
||||||
<< "--no-delay";
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
qDebug().noquote() << "ShadowSocksVpnProtocol::start()"
|
qDebug().noquote() << "ShadowSocksVpnProtocol::start()" << shadowSocksExecPath() << args.join(" ");
|
||||||
<< shadowSocksExecPath() << args.join(" ");
|
|
||||||
|
|
||||||
m_ssProcess.setProcessChannelMode(QProcess::MergedChannels);
|
m_ssProcess.setProcessChannelMode(QProcess::MergedChannels);
|
||||||
|
|
||||||
m_ssProcess.setProgram(shadowSocksExecPath());
|
m_ssProcess.setProgram(shadowSocksExecPath());
|
||||||
m_ssProcess.setArguments(args);
|
m_ssProcess.setArguments(args);
|
||||||
|
|
||||||
connect(&m_ssProcess, &QProcess::readyReadStandardOutput, this, [this](){
|
connect(&m_ssProcess, &QProcess::readyReadStandardOutput, this, [this]() {
|
||||||
qDebug().noquote() << "ss-local:" << m_ssProcess.readAllStandardOutput();
|
qDebug().noquote() << "ss-local:" << m_ssProcess.readAllStandardOutput();
|
||||||
});
|
});
|
||||||
|
|
||||||
connect(&m_ssProcess, QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished), this, [this](int exitCode, QProcess::ExitStatus exitStatus){
|
connect(&m_ssProcess, QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished), this, [this](int exitCode, QProcess::ExitStatus exitStatus) {
|
||||||
qDebug().noquote() << "ShadowSocksVpnProtocol finished, exitCode, exiStatus" << exitCode << exitStatus;
|
qDebug().noquote() << "ShadowSocksVpnProtocol finished, exitCode, exiStatus" << exitCode << exitStatus;
|
||||||
setConnectionState(VpnProtocol::Disconnected);
|
setConnectionState(VpnProtocol::Disconnected);
|
||||||
if (exitStatus != QProcess::NormalExit){
|
if (exitStatus != QProcess::NormalExit) {
|
||||||
emit protocolError(amnezia::ErrorCode::ShadowSocksExecutableCrashed);
|
emit protocolError(amnezia::ErrorCode::ShadowSocksExecutableCrashed);
|
||||||
stop();
|
stop();
|
||||||
}
|
}
|
||||||
if (exitCode !=0 ){
|
if (exitCode !=0 ) {
|
||||||
emit protocolError(amnezia::ErrorCode::InternalError);
|
emit protocolError(amnezia::ErrorCode::InternalError);
|
||||||
stop();
|
stop();
|
||||||
}
|
}
|
||||||
|
|
@ -84,8 +81,9 @@ ErrorCode ShadowSocksVpnProtocol::start()
|
||||||
setConnectionState(VpnConnectionState::Connecting);
|
setConnectionState(VpnConnectionState::Connecting);
|
||||||
|
|
||||||
return OpenVpnProtocol::start();
|
return OpenVpnProtocol::start();
|
||||||
|
} else {
|
||||||
|
return ErrorCode::ShadowSocksExecutableMissing;
|
||||||
}
|
}
|
||||||
else return ErrorCode::ShadowSocksExecutableMissing;
|
|
||||||
#else
|
#else
|
||||||
return ErrorCode::NotImplementedError;
|
return ErrorCode::NotImplementedError;
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
#ifndef SHADOWSOCKSVPNPROTOCOL_H
|
#ifndef SHADOWSOCKSVPNPROTOCOL_H
|
||||||
#define SHADOWSOCKSVPNPROTOCOL_H
|
#define SHADOWSOCKSVPNPROTOCOL_H
|
||||||
|
|
||||||
#include "openvpnprotocol.h"
|
|
||||||
#include "QProcess"
|
#include "QProcess"
|
||||||
#include "containers/containers_defs.h"
|
|
||||||
|
#include "openvpnprotocol.h"
|
||||||
|
|
||||||
class ShadowSocksVpnProtocol : public OpenVpnProtocol
|
class ShadowSocksVpnProtocol : public OpenVpnProtocol
|
||||||
{
|
{
|
||||||
|
|
@ -14,20 +14,18 @@ public:
|
||||||
ErrorCode start() override;
|
ErrorCode start() override;
|
||||||
void stop() override;
|
void stop() override;
|
||||||
|
|
||||||
protected:
|
|
||||||
void readShadowSocksConfiguration(const QJsonObject &configuration);
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
QJsonObject m_shadowSocksConfig;
|
QJsonObject m_shadowSocksConfig;
|
||||||
|
|
||||||
private:
|
void readShadowSocksConfiguration(const QJsonObject &configuration);
|
||||||
static QString shadowSocksExecPath();
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
#ifndef Q_OS_IOS
|
#ifndef Q_OS_IOS
|
||||||
QProcess m_ssProcess;
|
QProcess m_ssProcess;
|
||||||
#endif
|
#endif
|
||||||
QTemporaryFile m_shadowSocksCfgFile;
|
QTemporaryFile m_shadowSocksCfgFile;
|
||||||
|
|
||||||
|
static QString shadowSocksExecPath();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // SHADOWSOCKSVPNPROTOCOL_H
|
#endif // SHADOWSOCKSVPNPROTOCOL_H
|
||||||
|
|
|
||||||
|
|
@ -32,22 +32,21 @@ ErrorCode V2RayProtocol::start()
|
||||||
|
|
||||||
QStringList args = QStringList() << "-c" << m_v2RayConfigFile.fileName();
|
QStringList args = QStringList() << "-c" << m_v2RayConfigFile.fileName();
|
||||||
|
|
||||||
qDebug().noquote() << "V2RayProtocol::start()"
|
qDebug().noquote() << "V2RayProtocol::start()" << v2RayExecPath() << args.join(" ");
|
||||||
<< v2RayExecPath() << args.join(" ");
|
|
||||||
|
|
||||||
m_v2RayProcess.setProcessChannelMode(QProcess::MergedChannels);
|
m_v2RayProcess.setProcessChannelMode(QProcess::MergedChannels);
|
||||||
|
|
||||||
m_v2RayProcess.setProgram(v2RayExecPath());
|
m_v2RayProcess.setProgram(v2RayExecPath());
|
||||||
m_v2RayProcess.setArguments(args);
|
m_v2RayProcess.setArguments(args);
|
||||||
|
|
||||||
connect(&m_v2RayProcess, &QProcess::readyReadStandardOutput, this, [this](){
|
connect(&m_v2RayProcess, &QProcess::readyReadStandardOutput, this, [this]() {
|
||||||
qDebug().noquote() << "V2Ray:" << m_v2RayProcess.readAllStandardOutput();
|
qDebug().noquote() << "V2Ray:" << m_v2RayProcess.readAllStandardOutput();
|
||||||
});
|
});
|
||||||
|
|
||||||
connect(&m_v2RayProcess, QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished), this, [this](int exitCode, QProcess::ExitStatus exitStatus) {
|
connect(&m_v2RayProcess, QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished), this, [this](int exitCode, QProcess::ExitStatus exitStatus) {
|
||||||
qDebug().noquote() << "V2RayProtocol finished, exitCode, exiStatus" << exitCode << exitStatus;
|
qDebug().noquote() << "V2RayProtocol finished, exitCode, exiStatus" << exitCode << exitStatus;
|
||||||
setConnectionState(VpnProtocol::Disconnected);
|
setConnectionState(VpnProtocol::Disconnected);
|
||||||
if (exitStatus != QProcess::NormalExit){
|
if (exitStatus != QProcess::NormalExit) {
|
||||||
emit protocolError(amnezia::ErrorCode::V2RayExecutableCrashed);
|
emit protocolError(amnezia::ErrorCode::V2RayExecutableCrashed);
|
||||||
stop();
|
stop();
|
||||||
}
|
}
|
||||||
|
|
@ -64,7 +63,9 @@ ErrorCode V2RayProtocol::start()
|
||||||
setConnectionState(VpnConnectionState::Connecting);
|
setConnectionState(VpnConnectionState::Connecting);
|
||||||
|
|
||||||
return OpenVpnProtocol::start();
|
return OpenVpnProtocol::start();
|
||||||
} else return ErrorCode::V2RayExecutableMissing;
|
} else {
|
||||||
|
return ErrorCode::V2RayExecutableMissing;
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
return ErrorCode::NotImplementedError;
|
return ErrorCode::NotImplementedError;
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -112,15 +112,15 @@ 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](){
|
|
||||||
|
auto installAction = [this, containerConfig, &newContainerConfig]() {
|
||||||
return m_serverController->updateContainer(m_settings->serverCredentials(uiLogic()->selectedServerIndex),
|
return m_serverController->updateContainer(m_settings->serverCredentials(uiLogic()->selectedServerIndex),
|
||||||
uiLogic()->selectedDockerContainer,
|
uiLogic()->selectedDockerContainer, containerConfig, newContainerConfig);
|
||||||
containerConfig,
|
};
|
||||||
newContainerConfig);
|
|
||||||
},
|
ErrorCode e = uiLogic()->pageLogic<ServerConfiguringProgressLogic>()->doInstallAction(installAction, pageFunc, progressBarFunc,
|
||||||
pageFunc, progressBarFunc,
|
saveButtonFunc, waitInfoFunc,
|
||||||
saveButtonFunc, waitInfoFunc,
|
busyInfoFuncy, cancelButtonFunc);
|
||||||
busyInfoFuncy, cancelButtonFunc);
|
|
||||||
|
|
||||||
if (!e) {
|
if (!e) {
|
||||||
m_settings->setContainerConfig(uiLogic()->selectedServerIndex, uiLogic()->selectedDockerContainer, newContainerConfig);
|
m_settings->setContainerConfig(uiLogic()->selectedServerIndex, uiLogic()->selectedDockerContainer, newContainerConfig);
|
||||||
|
|
|
||||||
|
|
@ -162,15 +162,15 @@ 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](){
|
|
||||||
|
auto installAction = [this, containerConfig, &newContainerConfig]() {
|
||||||
return m_serverController->updateContainer(m_settings->serverCredentials(uiLogic()->selectedServerIndex),
|
return m_serverController->updateContainer(m_settings->serverCredentials(uiLogic()->selectedServerIndex),
|
||||||
uiLogic()->selectedDockerContainer,
|
uiLogic()->selectedDockerContainer, containerConfig, newContainerConfig);
|
||||||
containerConfig,
|
};
|
||||||
newContainerConfig);
|
|
||||||
},
|
ErrorCode e = uiLogic()->pageLogic<ServerConfiguringProgressLogic>()->doInstallAction(installAction, pageFunc, progressBarFunc,
|
||||||
pageFunc, progressBarFunc,
|
saveButtonFunc, waitInfoFunc,
|
||||||
saveButtonFunc, waitInfoFunc,
|
busyInfoFuncy, cancelButtonFunc);
|
||||||
busyInfoFuncy, cancelButtonFunc);
|
|
||||||
|
|
||||||
if (!e) {
|
if (!e) {
|
||||||
m_settings->setContainerConfig(uiLogic()->selectedServerIndex, uiLogic()->selectedDockerContainer, newContainerConfig);
|
m_settings->setContainerConfig(uiLogic()->selectedServerIndex, uiLogic()->selectedDockerContainer, newContainerConfig);
|
||||||
|
|
|
||||||
|
|
@ -50,6 +50,7 @@ QJsonObject ShadowSocksLogic::getProtocolConfigFromPage(QJsonObject oldConfig)
|
||||||
void ShadowSocksLogic::onPushButtonSaveClicked()
|
void ShadowSocksLogic::onPushButtonSaveClicked()
|
||||||
{
|
{
|
||||||
QJsonObject protocolConfig = m_settings->protocolConfig(uiLogic()->selectedServerIndex, uiLogic()->selectedDockerContainer, Proto::ShadowSocks);
|
QJsonObject protocolConfig = m_settings->protocolConfig(uiLogic()->selectedServerIndex, uiLogic()->selectedDockerContainer, Proto::ShadowSocks);
|
||||||
|
protocolConfig = getProtocolConfigFromPage(protocolConfig);
|
||||||
|
|
||||||
QJsonObject containerConfig = m_settings->containerConfig(uiLogic()->selectedServerIndex, uiLogic()->selectedDockerContainer);
|
QJsonObject containerConfig = m_settings->containerConfig(uiLogic()->selectedServerIndex, uiLogic()->selectedDockerContainer);
|
||||||
QJsonObject newContainerConfig = containerConfig;
|
QJsonObject newContainerConfig = containerConfig;
|
||||||
|
|
@ -105,11 +106,9 @@ 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()->selectedServerIndex),
|
return m_serverController->updateContainer(m_settings->serverCredentials(uiLogic()->selectedServerIndex),
|
||||||
uiLogic()->selectedDockerContainer,
|
uiLogic()->selectedDockerContainer, containerConfig, newContainerConfig);
|
||||||
containerConfig,
|
|
||||||
newContainerConfig);
|
|
||||||
};
|
};
|
||||||
ErrorCode e = uiLogic()->pageLogic<ServerConfiguringProgressLogic>()->doInstallAction(installAction, pageFunc, progressBarFunc,
|
ErrorCode e = uiLogic()->pageLogic<ServerConfiguringProgressLogic>()->doInstallAction(installAction, pageFunc, progressBarFunc,
|
||||||
saveButtonFunc, waitInfoFunc,
|
saveButtonFunc, waitInfoFunc,
|
||||||
|
|
|
||||||
|
|
@ -11,14 +11,16 @@ using namespace PageEnumNS;
|
||||||
|
|
||||||
V2RayLogic::V2RayLogic(UiLogic *logic, QObject *parent):
|
V2RayLogic::V2RayLogic(UiLogic *logic, QObject *parent):
|
||||||
PageProtocolLogicBase(logic, parent),
|
PageProtocolLogicBase(logic, parent),
|
||||||
m_lineEditPortText{},
|
m_lineEditServerPortText{},
|
||||||
m_pushButtonSaveVisible{false},
|
m_pushButtonSaveVisible{false},
|
||||||
m_progressBarResetVisible{false},
|
m_progressBarResetVisible{false},
|
||||||
m_lineEditPortEnabled{false},
|
m_lineEditServerPortEnabled{false},
|
||||||
m_labelInfoVisible{true},
|
m_labelInfoVisible{true},
|
||||||
m_labelInfoText{},
|
m_labelInfoText{},
|
||||||
m_progressBarResetValue{0},
|
m_progressBarResetValue{0},
|
||||||
m_progressBarResetMaximium{100}
|
m_progressBarResetMaximium{100},
|
||||||
|
m_lineEditLocalPortEnabled{false},
|
||||||
|
m_lineEditLocalPortText{}
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -29,21 +31,25 @@ void V2RayLogic::updateProtocolPage(const QJsonObject &v2RayConfig, DockerContai
|
||||||
set_pushButtonSaveVisible(haveAuthData);
|
set_pushButtonSaveVisible(haveAuthData);
|
||||||
set_progressBarResetVisible(haveAuthData);
|
set_progressBarResetVisible(haveAuthData);
|
||||||
|
|
||||||
set_lineEditPortText(v2RayConfig.value(config_key::port).
|
set_lineEditServerPortText(v2RayConfig.value(config_key::port).toString(protocols::v2ray::defaultServerPort));
|
||||||
toString(protocols::v2ray::defaultServerPort));
|
set_lineEditServerPortEnabled(container == DockerContainer::V2Ray);
|
||||||
|
|
||||||
|
set_lineEditLocalPortText(v2RayConfig.value(config_key::local_port).toString(protocols::v2ray::defaultLocalPort));
|
||||||
|
set_lineEditLocalPortEnabled(container == DockerContainer::V2Ray);
|
||||||
|
|
||||||
set_lineEditPortEnabled(container == DockerContainer::V2Ray);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QJsonObject V2RayLogic::getProtocolConfigFromPage(QJsonObject oldConfig)
|
QJsonObject V2RayLogic::getProtocolConfigFromPage(QJsonObject oldConfig)
|
||||||
{
|
{
|
||||||
oldConfig.insert(config_key::port, lineEditPortText());
|
oldConfig.insert(config_key::port, lineEditServerPortText());
|
||||||
|
oldConfig.insert(config_key::local_port, lineEditLocalPortText());
|
||||||
return oldConfig;
|
return oldConfig;
|
||||||
}
|
}
|
||||||
|
|
||||||
void V2RayLogic::onPushButtonSaveClicked()
|
void V2RayLogic::onPushButtonSaveClicked()
|
||||||
{
|
{
|
||||||
QJsonObject protocolConfig = m_settings->protocolConfig(uiLogic()->selectedServerIndex, uiLogic()->selectedDockerContainer, Proto::V2Ray);
|
QJsonObject protocolConfig = m_settings->protocolConfig(uiLogic()->selectedServerIndex, uiLogic()->selectedDockerContainer, Proto::V2Ray);
|
||||||
|
protocolConfig = getProtocolConfigFromPage(protocolConfig);
|
||||||
|
|
||||||
QJsonObject containerConfig = m_settings->containerConfig(uiLogic()->selectedServerIndex, uiLogic()->selectedDockerContainer);
|
QJsonObject containerConfig = m_settings->containerConfig(uiLogic()->selectedServerIndex, uiLogic()->selectedDockerContainer);
|
||||||
QJsonObject newContainerConfig = containerConfig;
|
QJsonObject newContainerConfig = containerConfig;
|
||||||
|
|
@ -101,9 +107,7 @@ void V2RayLogic::onPushButtonSaveClicked()
|
||||||
|
|
||||||
auto installAction = [this, containerConfig, &newContainerConfig]() {
|
auto installAction = [this, containerConfig, &newContainerConfig]() {
|
||||||
return m_serverController->updateContainer(m_settings->serverCredentials(uiLogic()->selectedServerIndex),
|
return m_serverController->updateContainer(m_settings->serverCredentials(uiLogic()->selectedServerIndex),
|
||||||
uiLogic()->selectedDockerContainer,
|
uiLogic()->selectedDockerContainer, containerConfig, newContainerConfig);
|
||||||
containerConfig,
|
|
||||||
newContainerConfig);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
ErrorCode e = uiLogic()->pageLogic<ServerConfiguringProgressLogic>()->doInstallAction(installAction, pageFunc, progressBarFunc,
|
ErrorCode e = uiLogic()->pageLogic<ServerConfiguringProgressLogic>()->doInstallAction(installAction, pageFunc, progressBarFunc,
|
||||||
|
|
|
||||||
|
|
@ -9,8 +9,11 @@ class V2RayLogic : public PageProtocolLogicBase
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
AUTO_PROPERTY(bool, lineEditPortEnabled)
|
AUTO_PROPERTY(bool, lineEditServerPortEnabled)
|
||||||
AUTO_PROPERTY(QString, lineEditPortText)
|
AUTO_PROPERTY(QString, lineEditServerPortText)
|
||||||
|
|
||||||
|
AUTO_PROPERTY(bool, lineEditLocalPortEnabled)
|
||||||
|
AUTO_PROPERTY(QString, lineEditLocalPortText)
|
||||||
|
|
||||||
AUTO_PROPERTY(bool, labelInfoVisible)
|
AUTO_PROPERTY(bool, labelInfoVisible)
|
||||||
AUTO_PROPERTY(QString, labelInfoText)
|
AUTO_PROPERTY(QString, labelInfoText)
|
||||||
|
|
|
||||||
|
|
@ -43,11 +43,31 @@ PageProtocolBase {
|
||||||
TextFieldType {
|
TextFieldType {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
height: 31
|
height: 31
|
||||||
text: logic.lineEditPortText
|
text: logic.lineEditServerPortText
|
||||||
onEditingFinished: {
|
onEditingFinished: {
|
||||||
logic.lineEditPortText = text
|
logic.lineEditServerPortText = text
|
||||||
}
|
}
|
||||||
enabled: logic.lineEditPortEnabled
|
enabled: logic.lineEditServerPortEnabled
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
RowLayout {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
|
||||||
|
LabelType {
|
||||||
|
Layout.preferredWidth: 0.3 * root.width - 10
|
||||||
|
height: 31
|
||||||
|
text: qsTr("Local port")
|
||||||
|
}
|
||||||
|
|
||||||
|
TextFieldType {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
height: 31
|
||||||
|
text: logic.lineEditLocalPortText
|
||||||
|
onEditingFinished: {
|
||||||
|
logic.lineEditLocalPortText = text
|
||||||
|
}
|
||||||
|
enabled: logic.lineEditLocalPortEnabled
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue