Files
amnezia-client/client/ui/models/protocols/awgConfigModel.h
T

125 lines
3.4 KiB
C++
Raw Normal View History

2023-10-06 17:19:44 +05:00
#ifndef AWGCONFIGMODEL_H
#define AWGCONFIGMODEL_H
#include <QAbstractListModel>
#include <QJsonObject>
#include "containers/containers_defs.h"
2025-07-07 12:03:25 +08:00
namespace AwgConstant
{
const int messageInitiationSize = 148;
const int messageResponseSize = 92;
2025-07-07 12:03:25 +08:00
const int messageCookieReplySize = 64;
const int messageTransportSize = 32;
}
2024-03-18 12:41:53 +02:00
struct AwgConfig
{
AwgConfig(const QJsonObject &serverProtocolConfig);
2024-03-18 12:41:53 +02:00
QString subnetAddress;
2024-03-18 12:41:53 +02:00
QString port;
2024-09-13 12:38:48 +04:00
QString clientMtu;
QString clientJunkPacketCount;
QString clientJunkPacketMinSize;
QString clientJunkPacketMaxSize;
2025-07-07 12:03:25 +08:00
QString clientSpecialJunk1;
QString clientSpecialJunk2;
QString clientSpecialJunk3;
QString clientSpecialJunk4;
QString clientSpecialJunk5;
2024-09-13 12:38:48 +04:00
QString serverJunkPacketCount;
QString serverJunkPacketMinSize;
QString serverJunkPacketMaxSize;
QString serverInitPacketJunkSize;
QString serverResponsePacketJunkSize;
2025-07-07 12:03:25 +08:00
QString serverCookieReplyPacketJunkSize;
QString serverTransportPacketJunkSize;
2024-09-13 12:38:48 +04:00
QString serverInitPacketMagicHeader;
QString serverResponsePacketMagicHeader;
QString serverUnderloadPacketMagicHeader;
QString serverTransportPacketMagicHeader;
QString serverSpecialJunk1;
QString serverSpecialJunk2;
QString serverSpecialJunk3;
QString serverSpecialJunk4;
QString serverSpecialJunk5;
2024-03-18 12:41:53 +02:00
bool hasEqualServerSettings(const AwgConfig &other) const;
bool hasEqualClientSettings(const AwgConfig &other) const;
2025-12-11 15:18:36 +08:00
private:
bool m_isProtocolV2;
2024-03-18 12:41:53 +02:00
};
2023-10-06 17:19:44 +05:00
class AwgConfigModel : public QAbstractListModel
{
Q_OBJECT
public:
enum Roles {
SubnetAddressRole = Qt::UserRole + 1,
PortRole,
2024-09-13 12:38:48 +04:00
ClientMtuRole,
ClientJunkPacketCountRole,
ClientJunkPacketMinSizeRole,
ClientJunkPacketMaxSizeRole,
2025-07-07 12:03:25 +08:00
ClientSpecialJunk1Role,
ClientSpecialJunk2Role,
ClientSpecialJunk3Role,
ClientSpecialJunk4Role,
ClientSpecialJunk5Role,
2024-09-13 12:38:48 +04:00
ServerJunkPacketCountRole,
ServerJunkPacketMinSizeRole,
ServerJunkPacketMaxSizeRole,
ServerInitPacketJunkSizeRole,
ServerResponsePacketJunkSizeRole,
2025-07-07 12:03:25 +08:00
ServerCookieReplyPacketJunkSizeRole,
ServerTransportPacketJunkSizeRole,
2024-09-13 12:38:48 +04:00
ServerInitPacketMagicHeaderRole,
ServerResponsePacketMagicHeaderRole,
ServerUnderloadPacketMagicHeaderRole,
2025-07-07 12:03:25 +08:00
ServerTransportPacketMagicHeaderRole,
ServerSpecialJunk1Role,
ServerSpecialJunk2Role,
ServerSpecialJunk3Role,
ServerSpecialJunk4Role,
ServerSpecialJunk5Role,
2025-12-11 15:18:36 +08:00
IsAwg2Role
};
2023-10-06 17:19:44 +05:00
explicit AwgConfigModel(QObject *parent = nullptr);
int rowCount(const QModelIndex &parent = QModelIndex()) const override;
bool setData(const QModelIndex &index, const QVariant &value, int role) override;
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
public slots:
void updateModel(const QJsonObject &config);
QJsonObject getConfig();
bool isHeadersEqual(const QString &h1, const QString &h2, const QString &h3, const QString &h4);
2025-12-11 15:18:36 +08:00
bool isPacketSizeEqual(const int s1, const int s2, const int s3, const int s4);
2024-09-13 12:38:48 +04:00
bool isServerSettingsEqual();
protected:
QHash<int, QByteArray> roleNames() const override;
private:
DockerContainer m_container;
2024-09-13 12:38:48 +04:00
QJsonObject m_serverProtocolConfig;
QJsonObject m_clientProtocolConfig;
QJsonObject m_fullConfig;
};
2023-10-06 17:19:44 +05:00
#endif // AWGCONFIGMODEL_H