Files
amnezia-client/client/ui/models/clientManagementModel.h
T

82 lines
3.6 KiB
C++
Raw Normal View History

2023-01-09 12:38:01 +03:00
#ifndef CLIENTMANAGEMENTMODEL_H
#define CLIENTMANAGEMENTMODEL_H
#include <QAbstractListModel>
2023-11-21 20:13:51 +07:00
#include <QJsonArray>
2023-01-09 12:38:01 +03:00
2023-12-05 17:44:13 +07:00
#include "core/controllers/serverController.h"
2023-11-21 20:13:51 +07:00
#include "settings.h"
2023-01-09 12:38:01 +03:00
class ClientManagementModel : public QAbstractListModel
{
Q_OBJECT
public:
2023-11-21 20:13:51 +07:00
enum Roles {
2023-11-23 00:03:43 +07:00
ClientNameRole = Qt::UserRole + 1,
2024-04-28 16:03:41 +03:00
CreationDateRole,
LatestHandshakeRole,
DataReceivedRole,
DataSentRole,
AllowedIpsRole
2024-04-28 16:03:41 +03:00
};
struct WgShowData
{
QString clientId;
QString latestHandshake;
QString dataReceived;
QString dataSent;
QString allowedIps;
2023-01-09 12:38:01 +03:00
};
2023-11-21 20:13:51 +07:00
ClientManagementModel(std::shared_ptr<Settings> settings, QObject *parent = nullptr);
2023-01-09 12:38:01 +03:00
int rowCount(const QModelIndex &parent = QModelIndex()) const override;
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
2023-11-21 20:13:51 +07:00
public slots:
ErrorCode updateModel(const DockerContainer container, const ServerCredentials &credentials,
const QSharedPointer<ServerController> &serverController);
ErrorCode appendClient(const DockerContainer container, const ServerCredentials &credentials, const QJsonObject &containerConfig,
const QString &clientName, const QSharedPointer<ServerController> &serverController);
2023-11-21 20:13:51 +07:00
ErrorCode appendClient(const QString &clientId, const QString &clientName, const DockerContainer container,
const ServerCredentials &credentials, const QSharedPointer<ServerController> &serverController);
ErrorCode renameClient(const int row, const QString &userName, const DockerContainer container, const ServerCredentials &credentials,
const QSharedPointer<ServerController> &serverController, bool addTimeStamp = false);
ErrorCode revokeClient(const int index, const DockerContainer container, const ServerCredentials &credentials, const int serverIndex,
const QSharedPointer<ServerController> &serverController);
ErrorCode revokeClient(const QJsonObject &containerConfig, const DockerContainer container, const ServerCredentials &credentials,
const int serverIndex, const QSharedPointer<ServerController> &serverController);
2023-01-09 12:38:01 +03:00
protected:
QHash<int, QByteArray> roleNames() const override;
signals:
void adminConfigRevoked(const DockerContainer container);
2023-01-09 12:38:01 +03:00
private:
2023-11-21 20:13:51 +07:00
bool isClientExists(const QString &clientId);
void migration(const QByteArray &clientsTableString);
ErrorCode revokeOpenVpn(const int row, const DockerContainer container, const ServerCredentials &credentials, const int serverIndex,
const QSharedPointer<ServerController> &serverController);
ErrorCode revokeWireGuard(const int row, const DockerContainer container, const ServerCredentials &credentials,
const QSharedPointer<ServerController> &serverController);
2023-11-21 20:13:51 +07:00
ErrorCode getOpenVpnClients(const DockerContainer container, const ServerCredentials &credentials,
const QSharedPointer<ServerController> &serverController, int &count);
ErrorCode getWireGuardClients(const DockerContainer container, const ServerCredentials &credentials,
const QSharedPointer<ServerController> &serverController, int &count);
2023-11-23 00:03:43 +07:00
2024-04-28 16:03:41 +03:00
ErrorCode wgShow(const DockerContainer container, const ServerCredentials &credentials,
const QSharedPointer<ServerController> &serverController, std::vector<WgShowData> &data);
2023-11-21 20:13:51 +07:00
QJsonArray m_clientsTable;
std::shared_ptr<Settings> m_settings;
2023-01-09 12:38:01 +03:00
};
#endif // CLIENTMANAGEMENTMODEL_H