Added list of AllowedIPs for WireGuard/AWG connections on Share -> Users ->ExpandedContent page (#1055)

Added list of AllowedIPs for WireGuard/AWG connections on Share -> Users ->ExpandedContent page
This commit is contained in:
Vitaly 2024-09-17 08:28:44 +02:00 committed by GitHub
parent 87cb5f620a
commit 253ae75795
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 22 additions and 4 deletions

View file

@ -20,6 +20,7 @@ namespace
constexpr char latestHandshake[] = "latestHandshake"; constexpr char latestHandshake[] = "latestHandshake";
constexpr char dataReceived[] = "dataReceived"; constexpr char dataReceived[] = "dataReceived";
constexpr char dataSent[] = "dataSent"; constexpr char dataSent[] = "dataSent";
constexpr char allowedIps[] = "allowedIps";
} }
} }
@ -49,6 +50,7 @@ QVariant ClientManagementModel::data(const QModelIndex &index, int role) const
case LatestHandshakeRole: return userData.value(configKey::latestHandshake).toString(); case LatestHandshakeRole: return userData.value(configKey::latestHandshake).toString();
case DataReceivedRole: return userData.value(configKey::dataReceived).toString(); case DataReceivedRole: return userData.value(configKey::dataReceived).toString();
case DataSentRole: return userData.value(configKey::dataSent).toString(); case DataSentRole: return userData.value(configKey::dataSent).toString();
case AllowedIpsRole: return userData.value(configKey::allowedIps).toString();
} }
return QVariant(); return QVariant();
@ -141,6 +143,10 @@ ErrorCode ClientManagementModel::updateModel(const DockerContainer container, co
userData[configKey::dataSent] = client.dataSent; userData[configKey::dataSent] = client.dataSent;
} }
if (!client.allowedIps.isEmpty()) {
userData[configKey::allowedIps] = client.allowedIps;
}
obj[configKey::userData] = userData; obj[configKey::userData] = userData;
m_clientsTable.replace(i, obj); m_clientsTable.replace(i, obj);
break; break;
@ -266,8 +272,9 @@ ErrorCode ClientManagementModel::wgShow(const DockerContainer container, const S
const auto peerList = parts.filter("peer:"); const auto peerList = parts.filter("peer:");
const auto latestHandshakeList = parts.filter("latest handshake:"); const auto latestHandshakeList = parts.filter("latest handshake:");
const auto transferredDataList = parts.filter("transfer:"); const auto transferredDataList = parts.filter("transfer:");
const auto allowedIpsList = parts.filter("allowed ips:");
if (latestHandshakeList.isEmpty() || transferredDataList.isEmpty() || peerList.isEmpty()) { if (allowedIpsList.isEmpty() || latestHandshakeList.isEmpty() || transferredDataList.isEmpty() || peerList.isEmpty()) {
return error; return error;
} }
@ -281,19 +288,20 @@ ErrorCode ClientManagementModel::wgShow(const DockerContainer container, const S
} }
}; };
for (int i = 0; i < peerList.size() && i < transferredDataList.size() && i < latestHandshakeList.size(); ++i) { for (int i = 0; i < peerList.size() && i < transferredDataList.size() && i < latestHandshakeList.size() && i < allowedIpsList.size(); ++i) {
const auto transferredData = getStrValue(transferredDataList[i]).split(","); const auto transferredData = getStrValue(transferredDataList[i]).split(",");
auto latestHandshake = getStrValue(latestHandshakeList[i]); auto latestHandshake = getStrValue(latestHandshakeList[i]);
auto serverBytesReceived = transferredData.front().trimmed(); auto serverBytesReceived = transferredData.front().trimmed();
auto serverBytesSent = transferredData.back().trimmed(); auto serverBytesSent = transferredData.back().trimmed();
auto allowedIps = getStrValue(allowedIpsList[i]);
changeHandshakeFormat(latestHandshake); changeHandshakeFormat(latestHandshake);
serverBytesReceived.chop(QStringLiteral(" received").length()); serverBytesReceived.chop(QStringLiteral(" received").length());
serverBytesSent.chop(QStringLiteral(" sent").length()); serverBytesSent.chop(QStringLiteral(" sent").length());
data.push_back({ getStrValue(peerList[i]), latestHandshake, serverBytesSent, serverBytesReceived }); data.push_back({ getStrValue(peerList[i]), latestHandshake, serverBytesSent, serverBytesReceived, allowedIps });
} }
return error; return error;

View file

@ -17,7 +17,8 @@ public:
CreationDateRole, CreationDateRole,
LatestHandshakeRole, LatestHandshakeRole,
DataReceivedRole, DataReceivedRole,
DataSentRole DataSentRole,
AllowedIpsRole
}; };
struct WgShowData struct WgShowData
@ -26,6 +27,7 @@ public:
QString latestHandshake; QString latestHandshake;
QString dataReceived; QString dataReceived;
QString dataSent; QString dataSent;
QString allowedIps;
}; };
ClientManagementModel(std::shared_ptr<Settings> settings, QObject *parent = nullptr); ClientManagementModel(std::shared_ptr<Settings> settings, QObject *parent = nullptr);

View file

@ -840,6 +840,14 @@ PageType {
text: qsTr("Data sent: %1").arg(dataSent) text: qsTr("Data sent: %1").arg(dataSent)
} }
ParagraphTextType {
color: textColumn.textColor
visible: allowedIps
Layout.fillWidth: true
text: qsTr("Allowed IPs: %1").arg(allowedIps)
}
} }
Item { Item {