added page to display WireGuard client information

This commit is contained in:
vladimir.kuznetsov 2023-01-10 16:21:45 +03:00
parent a42beb86c0
commit 8c137ecc52
9 changed files with 216 additions and 76 deletions

View file

@ -16,16 +16,26 @@ void ClientInfoLogic::setCurrentClientId(int index)
}
void ClientInfoLogic::onUpdatePage()
{
{
DockerContainer selectedContainer = m_settings->defaultContainer(uiLogic()->selectedServerIndex);
QString selectedContainerName = ContainerProps::containerHumanNames().value(selectedContainer);
set_labelCurrentVpnProtocolText(tr("Service: ") + selectedContainerName);
auto model = qobject_cast<ClientManagementModel*>(uiLogic()->clientManagementModel());
auto modelIndex = model->index(m_currentClientIndex);
set_lineEditNameAliasText(model->data(modelIndex, ClientManagementModel::ClientRoles::NameRole).toString());
set_labelCertId(model->data(modelIndex, ClientManagementModel::ClientRoles::CertIdRole).toString());
set_textAreaCertificate(model->data(modelIndex, ClientManagementModel::ClientRoles::CertDataRole).toString());
auto protocols = ContainerProps::protocolsForContainer(selectedContainer);
if (!protocols.empty()) {
auto currentMainProtocol = protocols.front();
auto model = qobject_cast<ClientManagementModel*>(uiLogic()->clientManagementModel());
auto modelIndex = model->index(m_currentClientIndex);
set_lineEditNameAliasText(model->data(modelIndex, ClientManagementModel::ClientRoles::NameRole).toString());
if (currentMainProtocol == Proto::OpenVpn) {
set_labelOpenVpnCertId(model->data(modelIndex, ClientManagementModel::ClientRoles::OpenVpnCertIdRole).toString());
set_textAreaOpenVpnCertData(model->data(modelIndex, ClientManagementModel::ClientRoles::OpenVpnCertDataRole).toString());
} else if (currentMainProtocol == Proto::WireGuard) {
set_textAreaWireGuardKeyData(model->data(modelIndex, ClientManagementModel::ClientRoles::WireGuardPublicKey).toString());
}
}
}
void ClientInfoLogic::onLineEditNameAliasEditingFinished()
@ -34,10 +44,24 @@ void ClientInfoLogic::onLineEditNameAliasEditingFinished()
auto modelIndex = model->index(m_currentClientIndex);
model->setData(modelIndex, m_lineEditNameAliasText, ClientManagementModel::ClientRoles::NameRole);
m_serverController->setClientsList();
auto clientsTable = model->getContent();
DockerContainer selectedContainer = m_settings->defaultContainer(uiLogic()->selectedServerIndex);
auto protocols = ContainerProps::protocolsForContainer(selectedContainer);
if (!protocols.empty()) {
auto currentMainProtocol = protocols.front();
m_serverController->setClientsList(m_settings->serverCredentials(uiLogic()->selectedServerIndex),
selectedContainer,
currentMainProtocol,
clientsTable);
}
}
void ClientInfoLogic::onRevokeCertificateClicked()
void ClientInfoLogic::onRevokeOpenVpnCertificateClicked()
{
}
void ClientInfoLogic::onRevokeWireGuardKeyClicked()
{
}

View file

@ -10,9 +10,10 @@ class ClientInfoLogic : public PageLogicBase
Q_OBJECT
AUTO_PROPERTY(QString, lineEditNameAliasText)
AUTO_PROPERTY(QString, labelCertId)
AUTO_PROPERTY(QString, textAreaCertificate)
AUTO_PROPERTY(QString, labelOpenVpnCertId)
AUTO_PROPERTY(QString, textAreaOpenVpnCertData)
AUTO_PROPERTY(QString, labelCurrentVpnProtocolText)
AUTO_PROPERTY(QString, textAreaWireGuardKeyData)
public:
ClientInfoLogic(UiLogic *uiLogic, QObject *parent = nullptr);
@ -23,7 +24,8 @@ public:
public slots:
void onUpdatePage() override;
void onLineEditNameAliasEditingFinished();
void onRevokeCertificateClicked();
void onRevokeOpenVpnCertificateClicked();
void onRevokeWireGuardKeyClicked();
private:
int m_currentClientIndex;

View file

@ -13,6 +13,7 @@ ClientManagementLogic::ClientManagementLogic(UiLogic *logic, QObject *parent):
void ClientManagementLogic::onUpdatePage()
{
qobject_cast<ClientManagementModel*>(uiLogic()->clientManagementModel())->clearData();
DockerContainer selectedContainer = m_settings->defaultContainer(uiLogic()->selectedServerIndex);
QString selectedContainerName = ContainerProps::containerHumanNames().value(selectedContainer);
set_labelCurrentVpnProtocolText(tr("Service: ") + selectedContainerName);
@ -26,13 +27,9 @@ void ClientManagementLogic::onUpdatePage()
ErrorCode e = m_serverController->getClientsList(m_settings->serverCredentials(uiLogic()->selectedServerIndex),
selectedContainer, m_currentMainProtocol, clients);
}
QVector<ClientManagementModel::ClientInfo> clientsArray;
QVector<QVariant> clientsArray;
for (auto &clientId : clients.keys()) {
ClientManagementModel::ClientInfo clientInfo;
clientInfo.certId = clientId;
clientInfo.name = clients[clientId].toObject()["name"].toString();
clientInfo.certData = clients[clientId].toObject()["certificate"].toString();
clientsArray.push_back(clientInfo);
clientsArray.push_back(clients[clientId].toObject());
}
qobject_cast<ClientManagementModel*>(uiLogic()->clientManagementModel())->setContent(clientsArray);
}