added local port field to v2ray settings page

- some code style refactoring
This commit is contained in:
vladimir.kuznetsov 2023-02-14 08:35:03 +03:00
parent 2b0ba2aff9
commit 36fae9152f
10 changed files with 88 additions and 65 deletions

View file

@ -52,8 +52,7 @@ ErrorCode OpenVpnOverCloakProtocol::start()
args << "-u";
}
qDebug().noquote() << "OpenVpnOverCloakProtocol::start()"
<< cloakExecPath() << args.join(" ");
qDebug().noquote() << "OpenVpnOverCloakProtocol::start()" << cloakExecPath() << args.join(" ");
m_ckProcess.setProcessChannelMode(QProcess::MergedChannels);
@ -84,8 +83,9 @@ ErrorCode OpenVpnOverCloakProtocol::start()
setConnectionState(VpnConnectionState::Connecting);
return OpenVpnProtocol::start();
} else {
return ErrorCode::CloakExecutableMissing;
}
else return ErrorCode::CloakExecutableMissing;
#endif
}

View file

@ -32,7 +32,6 @@ ErrorCode ShadowSocksVpnProtocol::start()
return lastError();
}
#ifndef Q_OS_IOS
if (Utils::processIsRunning(Utils::executable("ss-local", false))) {
Utils::killProcessByName(Utils::executable("ss-local", false));
@ -48,12 +47,10 @@ ErrorCode ShadowSocksVpnProtocol::start()
#ifdef Q_OS_LINUX
QStringList args = QStringList() << "-c" << m_shadowSocksCfgFile.fileName();
#else
QStringList args = QStringList() << "-c" << m_shadowSocksCfgFile.fileName()
<< "--no-delay";
QStringList args = QStringList() << "-c" << m_shadowSocksCfgFile.fileName() << "--no-delay";
#endif
qDebug().noquote() << "ShadowSocksVpnProtocol::start()"
<< shadowSocksExecPath() << args.join(" ");
qDebug().noquote() << "ShadowSocksVpnProtocol::start()" << shadowSocksExecPath() << args.join(" ");
m_ssProcess.setProcessChannelMode(QProcess::MergedChannels);
@ -84,8 +81,9 @@ ErrorCode ShadowSocksVpnProtocol::start()
setConnectionState(VpnConnectionState::Connecting);
return OpenVpnProtocol::start();
} else {
return ErrorCode::ShadowSocksExecutableMissing;
}
else return ErrorCode::ShadowSocksExecutableMissing;
#else
return ErrorCode::NotImplementedError;
#endif

View file

@ -1,9 +1,9 @@
#ifndef SHADOWSOCKSVPNPROTOCOL_H
#define SHADOWSOCKSVPNPROTOCOL_H
#include "openvpnprotocol.h"
#include "QProcess"
#include "containers/containers_defs.h"
#include "openvpnprotocol.h"
class ShadowSocksVpnProtocol : public OpenVpnProtocol
{
@ -14,20 +14,18 @@ public:
ErrorCode start() override;
void stop() override;
protected:
void readShadowSocksConfiguration(const QJsonObject &configuration);
protected:
QJsonObject m_shadowSocksConfig;
private:
static QString shadowSocksExecPath();
void readShadowSocksConfiguration(const QJsonObject &configuration);
private:
#ifndef Q_OS_IOS
QProcess m_ssProcess;
#endif
QTemporaryFile m_shadowSocksCfgFile;
static QString shadowSocksExecPath();
};
#endif // SHADOWSOCKSVPNPROTOCOL_H

View file

@ -32,8 +32,7 @@ ErrorCode V2RayProtocol::start()
QStringList args = QStringList() << "-c" << m_v2RayConfigFile.fileName();
qDebug().noquote() << "V2RayProtocol::start()"
<< v2RayExecPath() << args.join(" ");
qDebug().noquote() << "V2RayProtocol::start()" << v2RayExecPath() << args.join(" ");
m_v2RayProcess.setProcessChannelMode(QProcess::MergedChannels);
@ -64,7 +63,9 @@ ErrorCode V2RayProtocol::start()
setConnectionState(VpnConnectionState::Connecting);
return OpenVpnProtocol::start();
} else return ErrorCode::V2RayExecutableMissing;
} else {
return ErrorCode::V2RayExecutableMissing;
}
#else
return ErrorCode::NotImplementedError;
#endif

View file

@ -112,13 +112,13 @@ void CloakLogic::onPushButtonSaveClicked()
progressBarFunc.setTextVisibleFunc(true);
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),
uiLogic()->selectedDockerContainer,
containerConfig,
newContainerConfig);
},
pageFunc, progressBarFunc,
uiLogic()->selectedDockerContainer, containerConfig, newContainerConfig);
};
ErrorCode e = uiLogic()->pageLogic<ServerConfiguringProgressLogic>()->doInstallAction(installAction, pageFunc, progressBarFunc,
saveButtonFunc, waitInfoFunc,
busyInfoFuncy, cancelButtonFunc);

View file

@ -162,13 +162,13 @@ void OpenVpnLogic::onPushButtonSaveClicked()
progressBarFunc.setTextVisibleFunc(true);
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),
uiLogic()->selectedDockerContainer,
containerConfig,
newContainerConfig);
},
pageFunc, progressBarFunc,
uiLogic()->selectedDockerContainer, containerConfig, newContainerConfig);
};
ErrorCode e = uiLogic()->pageLogic<ServerConfiguringProgressLogic>()->doInstallAction(installAction, pageFunc, progressBarFunc,
saveButtonFunc, waitInfoFunc,
busyInfoFuncy, cancelButtonFunc);

View file

@ -50,6 +50,7 @@ QJsonObject ShadowSocksLogic::getProtocolConfigFromPage(QJsonObject oldConfig)
void ShadowSocksLogic::onPushButtonSaveClicked()
{
QJsonObject protocolConfig = m_settings->protocolConfig(uiLogic()->selectedServerIndex, uiLogic()->selectedDockerContainer, Proto::ShadowSocks);
protocolConfig = getProtocolConfigFromPage(protocolConfig);
QJsonObject containerConfig = m_settings->containerConfig(uiLogic()->selectedServerIndex, uiLogic()->selectedDockerContainer);
QJsonObject newContainerConfig = containerConfig;
@ -107,9 +108,7 @@ void ShadowSocksLogic::onPushButtonSaveClicked()
auto installAction = [this, containerConfig, &newContainerConfig]() {
return m_serverController->updateContainer(m_settings->serverCredentials(uiLogic()->selectedServerIndex),
uiLogic()->selectedDockerContainer,
containerConfig,
newContainerConfig);
uiLogic()->selectedDockerContainer, containerConfig, newContainerConfig);
};
ErrorCode e = uiLogic()->pageLogic<ServerConfiguringProgressLogic>()->doInstallAction(installAction, pageFunc, progressBarFunc,
saveButtonFunc, waitInfoFunc,

View file

@ -11,14 +11,16 @@ using namespace PageEnumNS;
V2RayLogic::V2RayLogic(UiLogic *logic, QObject *parent):
PageProtocolLogicBase(logic, parent),
m_lineEditPortText{},
m_lineEditServerPortText{},
m_pushButtonSaveVisible{false},
m_progressBarResetVisible{false},
m_lineEditPortEnabled{false},
m_lineEditServerPortEnabled{false},
m_labelInfoVisible{true},
m_labelInfoText{},
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_progressBarResetVisible(haveAuthData);
set_lineEditPortText(v2RayConfig.value(config_key::port).
toString(protocols::v2ray::defaultServerPort));
set_lineEditServerPortText(v2RayConfig.value(config_key::port).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)
{
oldConfig.insert(config_key::port, lineEditPortText());
oldConfig.insert(config_key::port, lineEditServerPortText());
oldConfig.insert(config_key::local_port, lineEditLocalPortText());
return oldConfig;
}
void V2RayLogic::onPushButtonSaveClicked()
{
QJsonObject protocolConfig = m_settings->protocolConfig(uiLogic()->selectedServerIndex, uiLogic()->selectedDockerContainer, Proto::V2Ray);
protocolConfig = getProtocolConfigFromPage(protocolConfig);
QJsonObject containerConfig = m_settings->containerConfig(uiLogic()->selectedServerIndex, uiLogic()->selectedDockerContainer);
QJsonObject newContainerConfig = containerConfig;
@ -101,9 +107,7 @@ void V2RayLogic::onPushButtonSaveClicked()
auto installAction = [this, containerConfig, &newContainerConfig]() {
return m_serverController->updateContainer(m_settings->serverCredentials(uiLogic()->selectedServerIndex),
uiLogic()->selectedDockerContainer,
containerConfig,
newContainerConfig);
uiLogic()->selectedDockerContainer, containerConfig, newContainerConfig);
};
ErrorCode e = uiLogic()->pageLogic<ServerConfiguringProgressLogic>()->doInstallAction(installAction, pageFunc, progressBarFunc,

View file

@ -9,8 +9,11 @@ class V2RayLogic : public PageProtocolLogicBase
{
Q_OBJECT
AUTO_PROPERTY(bool, lineEditPortEnabled)
AUTO_PROPERTY(QString, lineEditPortText)
AUTO_PROPERTY(bool, lineEditServerPortEnabled)
AUTO_PROPERTY(QString, lineEditServerPortText)
AUTO_PROPERTY(bool, lineEditLocalPortEnabled)
AUTO_PROPERTY(QString, lineEditLocalPortText)
AUTO_PROPERTY(bool, labelInfoVisible)
AUTO_PROPERTY(QString, labelInfoText)

View file

@ -43,11 +43,31 @@ PageProtocolBase {
TextFieldType {
Layout.fillWidth: true
height: 31
text: logic.lineEditPortText
text: logic.lineEditServerPortText
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
}
}