feature: added the ability to change port after installing xray (#1556)

* added the ability to change port after installing xray

* fixed issue with not updating server config for xray on windows platform

* fixed some warning in exportcontroller.cpp
This commit is contained in:
Mitternacht822 2025-05-12 18:14:59 +04:00 committed by GitHub
parent 0c73682cfc
commit a28ed6a977
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 44 additions and 12 deletions

View file

@ -145,7 +145,7 @@ void ExportController::generateOpenVpnConfig(const QString &clientName)
}
QStringList lines = nativeConfig.value(config_key::config).toString().replace("\r", "").split("\n");
for (const QString &line : lines) {
for (const QString &line : std::as_const(lines)) {
m_config.append(line + "\n");
}
@ -163,7 +163,7 @@ void ExportController::generateWireGuardConfig(const QString &clientName)
}
QStringList lines = nativeConfig.value(config_key::config).toString().replace("\r", "").split("\n");
for (const QString &line : lines) {
for (const QString &line : std::as_const(lines)) {
m_config.append(line + "\n");
}
@ -183,7 +183,7 @@ void ExportController::generateAwgConfig(const QString &clientName)
}
QStringList lines = nativeConfig.value(config_key::config).toString().replace("\r", "").split("\n");
for (const QString &line : lines) {
for (const QString &line : std::as_const(lines)) {
m_config.append(line + "\n");
}
@ -211,7 +211,7 @@ void ExportController::generateShadowSocksConfig()
}
QStringList lines = QString(QJsonDocument(nativeConfig).toJson()).replace("\r", "").split("\n");
for (const QString &line : lines) {
for (const QString &line : std::as_const(lines)) {
m_config.append(line + "\n");
}
@ -240,7 +240,7 @@ void ExportController::generateCloakConfig()
nativeConfig.insert("ProxyMethod", "shadowsocks");
QStringList lines = QString(QJsonDocument(nativeConfig).toJson()).replace("\r", "").split("\n");
for (const QString &line : lines) {
for (const QString &line : std::as_const(lines)) {
m_config.append(line + "\n");
}
@ -257,7 +257,7 @@ void ExportController::generateXrayConfig(const QString &clientName)
}
QStringList lines = QString(QJsonDocument(nativeConfig).toJson()).replace("\r", "").split("\n");
for (const QString &line : lines) {
for (const QString &line : std::as_const(lines)) {
m_config.append(line + "\n");
}

View file

@ -20,6 +20,7 @@ bool XrayConfigModel::setData(const QModelIndex &index, const QVariant &value, i
switch (role) {
case Roles::SiteRole: m_protocolConfig.insert(config_key::site, value.toString()); break;
case Roles::PortRole: m_protocolConfig.insert(config_key::port, value.toString()); break;
}
emit dataChanged(index, index, QList { role });
@ -34,6 +35,7 @@ QVariant XrayConfigModel::data(const QModelIndex &index, int role) const
switch (role) {
case Roles::SiteRole: return m_protocolConfig.value(config_key::site).toString(protocols::xray::defaultSite);
case Roles::PortRole: return m_protocolConfig.value(config_key::port).toString(protocols::xray::defaultPort);
}
return QVariant();
@ -67,6 +69,7 @@ QHash<int, QByteArray> XrayConfigModel::roleNames() const
QHash<int, QByteArray> roles;
roles[SiteRole] = "site";
roles[PortRole] = "port";
return roles;
}

View file

@ -12,7 +12,8 @@ class XrayConfigModel : public QAbstractListModel
public:
enum Roles {
SiteRole
SiteRole,
PortRole
};
explicit XrayConfigModel(QObject *parent = nullptr);

View file

@ -103,8 +103,29 @@ PageType {
}
}
TextFieldWithHeaderType {
id: portTextField
Layout.fillWidth: true
Layout.topMargin: 16
enabled: delegateItem.isEnabled
headerText: qsTr("Port")
textField.text: port
textField.maximumLength: 5
textField.validator: IntValidator { bottom: 1; top: 65535 }
textField.onEditingFinished: {
if (textField.text !== port) {
port = textField.text
}
}
checkEmptyText: true
}
BasicButtonType {
id: basicButton
id: saveButton
Layout.fillWidth: true
Layout.topMargin: 24
Layout.bottomMargin: 24