1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- //
- // Created by robin on 2/12/18.
- //
-
- #ifndef QDNSAGG_QDNSAXFRCLIENT_H
- #define QDNSAGG_QDNSAXFRCLIENT_H
-
- #include <QObject>
- #include <QHostAddress>
- #include "QDnsUdpClient.h"
- #include "QDnsTcpClient.h"
-
- namespace QDns
- {
- namespace Client
- {
- class QDnsAxfrClient : public QObject
- {
- Q_OBJECT
- public:
- enum ErrorCode
- {
- Unknown = 0,
- ClientError = 1,
- NoFirstSOA = 2,
- NoLastSOA = 3,
- ExtraRecords = 4
- };
- Q_ENUM(ErrorCode)
-
- struct OnAnswerParams
- {
- quint64 reserved;
- QList<QDns::Base::QDnsResourceRecord> records;
- };
-
- struct OnErrorParams
- {
- quint64 reserved;
- ErrorCode error;
- QDnsClient::OnErrorParams clientError;
- };
-
- explicit QDnsAxfrClient(const QString& zone, const QHostAddress& host, quint16 port = 53, QObject* parent = nullptr);
-
- signals:
- void onAnswer(OnAnswerParams);
- void onError(OnErrorParams);
-
- public slots:
- void transfer();
-
- private slots:
- void onClientStateChanged(const QDnsClient::OnStateChangedParams& params);
-
- void onClientAnswer(const QDnsClient::OnAnswerParams& params);
-
- void onClientError(const QDnsClient::OnErrorParams& params);
-
- private:
- enum AxfrStatus
- {
- FirstSOA,
- Records,
- LastSOA
- };
-
- void processPacket(const QDns::Base::QDnsPacket& packet);
-
- QString m_zone;
-
- AxfrStatus m_status;
-
- QDns::Client::QDnsUdpClient* m_udpClient;
-
- QDns::Client::QDnsTcpClient* m_tcpClient;
-
- QList<QDns::Base::QDnsResourceRecord> m_records;
- };
- }
- }
-
- #endif //QDNSAGG_QDNSAXFRCLIENT_H
|