AusweisApp2
NetworkManager.h
gehe zur Dokumentation dieser Datei
1 /*
2  * \brief Wrapper around QNetworkAccessManager
3  *
4  * \copyright Copyright (c) 2014-2020 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 <QMutex>
17 #include <QNetworkAccessManager>
18 #include <QNetworkProxy>
19 #include <QNetworkReply>
20 #include <QSsl>
21 
22 namespace governikus
23 {
24 
26  : public QObject
27 {
28  Q_OBJECT
29  friend class Env;
30 
31  private:
32  bool mApplicationExitInProgress;
33  QMutex mTrackedConnectionsMutex;
34  QSet<QNetworkReply*> mTrackedConnections;
35  void trackConnection(QNetworkReply* pResponse, const int pTimeoutInMilliSeconds);
36  void addTrackedConnection(QNetworkReply* pResponse);
37  void removeTrackedConnection(QNetworkReply* pResponse);
38 
39  static bool mLockProxy;
40  QScopedPointer<QNetworkAccessManager, QScopedPointerDeleteLater> mNetAccessManager;
41 
42  QString getUserAgentHeader() const;
43 
44  public Q_SLOTS:
45  void onShutdown();
46  void onProxyChanged();
47 
48  protected:
50  virtual ~NetworkManager();
51  static NetworkManager& getInstance();
52 
53  public:
54  enum class NetworkError
55  {
57  TimeOut,
58  ProxyError,
60  OtherError,
61  };
62  Q_ENUM(NetworkError)
63 
64  static void setApplicationProxyFactory();
65  static void lockProxy(bool pLocked)
66  {
67  mLockProxy = pLocked;
68  }
69 
70 
71  static int getLoggedStatusCode(const QSharedPointer<const QNetworkReply>& pReply, const QMessageLogger& pLogger);
72  static NetworkError toNetworkError(const QSharedPointer<const QNetworkReply>& pNetworkReply);
73  static GlobalStatus toTrustedChannelStatus(const QSharedPointer<const QNetworkReply>& pNetworkReply);
74  static GlobalStatus toStatus(const QSharedPointer<const QNetworkReply>& pNetworkReply);
75  static QString getTlsVersionString(QSsl::SslProtocol pProtocol);
76  static QByteArray getStatusMessage(int pStatus);
77 
78  virtual void clearConnections();
79  virtual QNetworkReply* paos(QNetworkRequest& pRequest,
80  const QByteArray& pNamespace,
81  const QByteArray& pData,
82  bool pUsePsk = true,
83  const QByteArray& pSslSession = QByteArray(),
84  int pTimeoutInMilliSeconds = 30000);
85  virtual QNetworkReply* get(QNetworkRequest& pRequest,
86  const QByteArray& pSslSession = QByteArray(),
87  int pTimeoutInMilliSeconds = 30000);
88 
89  virtual QNetworkReply* post(QNetworkRequest& pRequest,
90  const QByteArray& pData,
91  int pTimeoutInMilliSeconds = 30000);
92 
93  virtual bool checkUpdateServerCertificate(const QSharedPointer<const QNetworkReply>& pReply);
94 
96 
97  Q_SIGNALS:
98  void fireProxyAuthenticationRequired(const QNetworkProxy& pProxy, QAuthenticator* pAuthenticator);
99  void fireShutdown();
100 };
101 
102 } // namespace governikus
103 
104 QDebug operator <<(QDebug pDbg, QSsl::SslProtocol pProtocol);
static QByteArray getStatusMessage(int pStatus)
Definition: NetworkManager.cpp:283
Definition: NetworkManager.h:25
void fireProxyAuthenticationRequired(const QNetworkProxy &pProxy, QAuthenticator *pAuthenticator)
virtual void clearConnections()
Definition: NetworkManager.cpp:62
virtual ~NetworkManager()
Definition: NetworkManager.cpp:43
void onProxyChanged()
Definition: NetworkManager.cpp:163
Definition: GlobalStatus.h:19
static NetworkManager & getInstance()
Definition: NetworkManager.cpp:48
static QString getTlsVersionString(QSsl::SslProtocol pProtocol)
void onShutdown()
Definition: NetworkManager.cpp:156
Implementation of ActivationContext for Intent based activation on Android systems.
Definition: ActivationContext.h:14
QDebug operator<<(QDebug pDbg, QSsl::SslProtocol pProtocol)
static GlobalStatus toStatus(const QSharedPointer< const QNetworkReply > &pNetworkReply)
Definition: NetworkManager.cpp:226
static int getLoggedStatusCode(const QSharedPointer< const QNetworkReply > &pReply, const QMessageLogger &pLogger)
Definition: NetworkManager.cpp:298
static void lockProxy(bool pLocked)
Definition: NetworkManager.h:65
virtual QNetworkReply * paos(QNetworkRequest &pRequest, const QByteArray &pNamespace, const QByteArray &pData, bool pUsePsk=true, const QByteArray &pSslSession=QByteArray(), int pTimeoutInMilliSeconds=30000)
Definition: NetworkManager.cpp:68
static GlobalStatus toTrustedChannelStatus(const QSharedPointer< const QNetworkReply > &pNetworkReply)
Definition: NetworkManager.cpp:199
static void setApplicationProxyFactory()
Definition: NetworkManager.cpp:384
virtual bool checkUpdateServerCertificate(const QSharedPointer< const QNetworkReply > &pReply)
Definition: NetworkManager.cpp:139
Definition: Env.h:38
static NetworkError toNetworkError(const QSharedPointer< const QNetworkReply > &pNetworkReply)
Definition: NetworkManager.cpp:169
virtual QNetworkReply * post(QNetworkRequest &pRequest, const QByteArray &pData, int pTimeoutInMilliSeconds=30000)
Definition: NetworkManager.cpp:118
int getOpenConnectionCount()
Definition: NetworkManager.cpp:54
NetworkError
Definition: NetworkManager.h:54