AusweisApp2
NetworkManager.h
gehe zur Dokumentation dieser Datei
1 /*
2  * \brief Wrapper around QNetworkAccessManager
3  *
4  * \copyright Copyright (c) 2014-2021 Governikus GmbH & Co. KG, Germany
5  */
6 
7 #pragma once
8 
9 #include "Env.h"
10 #include "GlobalStatus.h"
11 
12 #include <QAtomicInt>
13 #include <QAuthenticator>
14 #include <QDebug>
15 #include <QMessageLogger>
16 #include <QNetworkAccessManager>
17 #include <QNetworkProxy>
18 #include <QNetworkReply>
19 #include <QSsl>
20 
21 namespace governikus
22 {
23 
25  : public QObject
26 {
27  Q_OBJECT
28  friend class Env;
29 
30  private:
31  static bool mLockProxy;
32 
33  QNetworkAccessManager mNetAccessManager;
34  bool mApplicationExitInProgress;
35  QAtomicInt mOpenConnectionCount;
36 
37  void trackConnection(QNetworkReply* pResponse, const int pTimeoutInMilliSeconds);
38 
39  [[nodiscard]] QString getUserAgentHeader() const;
40 
41  public Q_SLOTS:
42  void onShutdown();
43  void onProxyChanged();
44 
45  protected:
47  ~NetworkManager() override;
48 
49  public:
50  enum class NetworkError
51  {
53  TimeOut,
54  ProxyError,
56  OtherError,
57  };
58  Q_ENUM(NetworkError)
59 
60  static void setApplicationProxyFactory();
61  static void lockProxy(bool pLocked)
62  {
63  mLockProxy = pLocked;
64  }
65 
66 
67  static int getLoggedStatusCode(const QSharedPointer<const QNetworkReply>& pReply, const QMessageLogger& pLogger);
68  static NetworkError toNetworkError(const QSharedPointer<const QNetworkReply>& pNetworkReply);
69  static GlobalStatus toTrustedChannelStatus(const QSharedPointer<const QNetworkReply>& pNetworkReply);
70  static GlobalStatus toStatus(const QSharedPointer<const QNetworkReply>& pNetworkReply);
71  static QString getTlsVersionString(QSsl::SslProtocol pProtocol);
72  static QByteArray getStatusMessage(int pStatus);
73 
74  virtual void clearConnections();
75  virtual QNetworkReply* paos(QNetworkRequest& pRequest,
76  const QByteArray& pNamespace,
77  const QByteArray& pData,
78  bool pUsePsk = true,
79  const QByteArray& pSslSession = QByteArray(),
80  int pTimeoutInMilliSeconds = 30000);
81  virtual QNetworkReply* get(QNetworkRequest& pRequest,
82  const QByteArray& pSslSession = QByteArray(),
83  int pTimeoutInMilliSeconds = 30000);
84 
85  virtual QNetworkReply* post(QNetworkRequest& pRequest,
86  const QByteArray& pData,
87  int pTimeoutInMilliSeconds = 30000);
88 
89  virtual bool checkUpdateServerCertificate(const QSharedPointer<const QNetworkReply>& pReply);
90 
92 
93  Q_SIGNALS:
94  void fireProxyAuthenticationRequired(const QNetworkProxy& pProxy, QAuthenticator* pAuthenticator);
95  void fireShutdown();
96 };
97 
98 } // namespace governikus
99 
100 QDebug operator <<(QDebug pDbg, QSsl::SslProtocol pProtocol);
governikus::NetworkManager::paos
virtual QNetworkReply * paos(QNetworkRequest &pRequest, const QByteArray &pNamespace, const QByteArray &pData, bool pUsePsk=true, const QByteArray &pSslSession=QByteArray(), int pTimeoutInMilliSeconds=30000)
Definition: NetworkManager.cpp:55
governikus::NetworkManager::checkUpdateServerCertificate
virtual bool checkUpdateServerCertificate(const QSharedPointer< const QNetworkReply > &pReply)
Definition: NetworkManager.cpp:126
governikus::GeneralSettings::fireProxyChanged
void fireProxyChanged()
governikus::NetworkManager::toTrustedChannelStatus
static GlobalStatus toTrustedChannelStatus(const QSharedPointer< const QNetworkReply > &pNetworkReply)
Definition: NetworkManager.cpp:188
VersionInfo.h
governikus::NetworkManager::getLoggedStatusCode
static int getLoggedStatusCode(const QSharedPointer< const QNetworkReply > &pReply, const QMessageLogger &pLogger)
Definition: NetworkManager.cpp:274
NetworkReplyTimeout.h
governikus::GlobalStatus::Code::Workflow_TrustedChannel_Other_Network_Error
@ Workflow_TrustedChannel_Other_Network_Error
governikus::NetworkManager::setApplicationProxyFactory
static void setApplicationProxyFactory()
Definition: NetworkManager.cpp:360
governikus::NetworkManager::toNetworkError
static NetworkError toNetworkError(const QSharedPointer< const QNetworkReply > &pNetworkReply)
Definition: NetworkManager.cpp:158
governikus::SecureStorage::TlsSuite
TlsSuite
Definition: SecureStorage.h:71
governikus::GlobalStatus::Code::Network_TimeOut
@ Network_TimeOut
AppSettings.h
governikus::NetworkManager::~NetworkManager
~NetworkManager() override
Definition: NetworkManager.cpp:38
SecureStorage.h
governikus::NetworkReplyTimeout::setTimeout
static void setTimeout(QNetworkReply *pReply, const int pTimeoutMilliSeconds)
Set the timeout in milli-seconds on the specified QNetworkReply.
Definition: NetworkReplyTimeout.cpp:46
governikus::GlobalStatus::ExternalInformation::LAST_URL
@ LAST_URL
governikus::GlobalStatus::Code::Workflow_TrustedChannel_Establishment_Error
@ Workflow_TrustedChannel_Establishment_Error
governikus::NetworkManager::get
virtual QNetworkReply * get(QNetworkRequest &pRequest, const QByteArray &pSslSession=QByteArray(), int pTimeoutInMilliSeconds=30000)
Definition: NetworkManager.cpp:85
NetworkManager.h
governikus::NetworkManager::NetworkError::SecurityError
@ SecurityError
governikus::Env
Definition: Env.h:44
governikus::NetworkManager::NetworkError::ServiceUnavailable
@ ServiceUnavailable
governikus::GlobalStatus::Code::Unknown_Error
@ Unknown_Error
governikus::VersionInfo::getInstance
static VersionInfo getInstance()
Definition: VersionInfo.cpp:50
governikus::NetworkManager::post
virtual QNetworkReply * post(QNetworkRequest &pRequest, const QByteArray &pData, int pTimeoutInMilliSeconds=30000)
Definition: NetworkManager.cpp:105
governikus::NetworkManager::getOpenConnectionCount
int getOpenConnectionCount()
Definition: NetworkManager.cpp:43
governikus::NetworkManager::NetworkError
NetworkError
Definition: NetworkManager.h:51
governikus::NetworkManager
Definition: NetworkManager.h:26
XX
#define XX(num, name, string)
http_parser.h
GlobalStatus.h
governikus
Implementation of ActivationContext for Intent based activation on Android systems.
Definition: ActivationContext.h:15
governikus::GlobalStatus::Code::Workflow_TrustedChannel_TimeOut
@ Workflow_TrustedChannel_TimeOut
NetworkReplyError.h
governikus::NetworkManager::getStatusMessage
static QByteArray getStatusMessage(int pStatus)
Definition: NetworkManager.cpp:259
governikus::NetworkManager::onProxyChanged
void onProxyChanged()
Definition: NetworkManager.cpp:152
governikus::SecureStorage::TlsSuite::PSK
@ PSK
Env.h
governikus::NetworkManager::NetworkError::ProxyError
@ ProxyError
governikus::GlobalStatus::Code::Workflow_TrustedChannel_Proxy_Error
@ Workflow_TrustedChannel_Proxy_Error
HTTP_STATUS_MAP
#define HTTP_STATUS_MAP(XX)
Definition: http_parser.h:93
governikus::NetworkManager::onShutdown
void onShutdown()
Definition: NetworkManager.cpp:143
governikus::GlobalStatus
Definition: GlobalStatus.h:20
governikus::NetworkManager::fireShutdown
void fireShutdown()
governikus::GlobalStatus::Code::Network_Ssl_Establishment_Error
@ Network_Ssl_Establishment_Error
governikus::SecureStorage::TlsSuite::DEFAULT
@ DEFAULT
governikus::NetworkManager::fireProxyAuthenticationRequired
void fireProxyAuthenticationRequired(const QNetworkProxy &pProxy, QAuthenticator *pAuthenticator)
governikus::GlobalStatus::Code::Workflow_TrustedChannel_ServiceUnavailable
@ Workflow_TrustedChannel_ServiceUnavailable
governikus::NetworkManager::NetworkManager
NetworkManager()
Definition: NetworkManager.cpp:26
governikus::GlobalStatus::Code::Network_Proxy_Error
@ Network_Proxy_Error
governikus::NetworkManager::toStatus
static GlobalStatus toStatus(const QSharedPointer< const QNetworkReply > &pNetworkReply)
Definition: NetworkManager.cpp:215
governikus::NetworkManager::NetworkError::TimeOut
@ TimeOut
governikus::GlobalStatus::Code::Network_ServiceUnavailable
@ Network_ServiceUnavailable
governikus::NetworkManager::clearConnections
virtual void clearConnections()
Definition: NetworkManager.cpp:49
governikus::GlobalStatus::Code::Network_Other_Error
@ Network_Other_Error
governikus::NetworkReplyError
Definition: NetworkReplyError.h:14
governikus::NetworkManager::getTlsVersionString
static QString getTlsVersionString(QSsl::SslProtocol pProtocol)
governikus::NetworkManager::lockProxy
static void lockProxy(bool pLocked)
Definition: NetworkManager.h:61
governikus::NetworkManager::NetworkError::OtherError
@ OtherError
operator<<
QDebug operator<<(QDebug pDbg, QSsl::SslProtocol pProtocol)
governikus::GlobalStatus::ExternalInfoMap
QMap< ExternalInformation, QString > ExternalInfoMap
Definition: GlobalStatus.h:136