QGIS API Documentation  3.8.0-Zanzibar (11aff65)
qgsauthsslconfigwidget.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsauthsslconfigwidget.h
3  ---------------------
4  begin : May 17, 2015
5  copyright : (C) 2015 by Boundless Spatial, Inc. USA
6  author : Larry Shaffer
7  email : lshaffer at boundlessgeo dot com
8  ***************************************************************************
9  * *
10  * This program is free software; you can redistribute it and/or modify *
11  * it under the terms of the GNU General Public License as published by *
12  * the Free Software Foundation; either version 2 of the License, or *
13  * (at your option) any later version. *
14  * *
15  ***************************************************************************/
16 
17 #ifndef QGSAUTHSSLCONFIGWIDGET_H
18 #define QGSAUTHSSLCONFIGWIDGET_H
19 
20 #include <QDialog>
21 #include "qgis_sip.h"
22 #include <QWidget>
23 #include "ui_qgsauthsslconfigwidget.h"
24 
25 #include <QSslCertificate>
26 #include <QSslConfiguration>
27 
28 #include "qgsauthconfig.h"
29 #include "qgis_gui.h"
30 
31 class QComboBox;
32 class QGroupBox;
33 class QSpinBox;
34 
39 class GUI_EXPORT QgsAuthSslConfigWidget : public QWidget, private Ui::QgsAuthSslConfigWidget
40 {
41  Q_OBJECT
42 
43  public:
44 
52  explicit QgsAuthSslConfigWidget( QWidget *parent SIP_TRANSFERTHIS = nullptr,
53  const QSslCertificate &cert = QSslCertificate(),
54  const QString &hostport = QString(),
55  const QList<QSslCertificate> &connectionCAs = QList<QSslCertificate>() );
56 
58  QGroupBox *certificateGroupBox();
60  QGroupBox *sslConfigGroupBox();
61 
63  const QgsAuthConfigSslServer sslCustomConfig();
64 
66  const QSslCertificate sslCertificate();
67 
69  const QString sslHost();
70 
72  QSsl::SslProtocol sslProtocol();
73 
75  const QList<QSslError::SslError> sslIgnoreErrorEnums();
76 
78  QSslSocket::PeerVerifyMode sslPeerVerifyMode();
79 
84  int sslPeerVerifyDepth();
85 
86  public slots:
88  void enableSslCustomOptions( bool enable );
89 
90  // may also load existing config, if found
92  void setSslCertificate( const QSslCertificate &cert, const QString &hostport = QString() );
93 
95  void loadSslCustomConfig( const QgsAuthConfigSslServer &config = QgsAuthConfigSslServer() );
96 
98  void saveSslCertConfig();
99 
101  void resetSslCertConfig();
102 
104  void setSslProtocol( QSsl::SslProtocol protocol );
105 
107  void resetSslProtocol();
108 
110  void appendSslIgnoreErrors( const QList<QSslError> &errors );
111 
113  void setSslIgnoreErrorEnums( const QList<QSslError::SslError> &errorenums );
114 
116  void setSslIgnoreErrors( const QList<QSslError> &errors );
117 
119  void resetSslIgnoreErrors();
120 
122  void setSslPeerVerify( QSslSocket::PeerVerifyMode mode, int modedepth );
123 
125  void resetSslPeerVerify();
126 
128  void setSslHost( const QString &host );
129 
131  void setConfigCheckable( bool checkable );
132 
134  void validateHostPortText( const QString &txt );
135 
137  bool readyToSave();
138 
139  signals:
141  void configEnabledChanged( bool enabled );
142 
144  void certFoundInAuthDatabase( bool found );
145 
147  void hostPortValidityChanged( bool valid );
148 
150  void readyToSaveChanged( bool cansave );
151 
152  private slots:
153  void btnCertInfo_clicked();
154 
155  private:
156  enum ConfigType
157  {
158  ConfigParent = 1000,
159  ConfigItem = 1001,
160  };
161 
162  bool validateHostPort( const QString &txt );
163 
164  void setUpSslConfigTree();
165  QTreeWidgetItem *addRootItem( const QString &label );
166 
167  QSslCertificate mCert;
168  QList<QSslCertificate> mConnectionCAs;
169 
170  QTreeWidgetItem *mProtocolItem = nullptr;
171  QComboBox *mProtocolCmbBx = nullptr;
172  QTreeWidgetItem *mIgnoreErrorsItem = nullptr;
173  QTreeWidgetItem *mVerifyModeItem = nullptr;
174  QComboBox *mVerifyPeerCmbBx = nullptr;
175  QTreeWidgetItem *mVerifyDepthItem = nullptr;
176  QSpinBox *mVerifyDepthSpnBx = nullptr;
177 
178  bool mCanSave = false;
179 
180  bool mDisabled = false;
181  QVBoxLayout *mAuthNotifyLayout = nullptr;
182  QLabel *mAuthNotify = nullptr;
183 };
184 
186 
191 class GUI_EXPORT QgsAuthSslConfigDialog : public QDialog
192 {
193  Q_OBJECT
194 
195  public:
196 
203  explicit QgsAuthSslConfigDialog( QWidget *parent = nullptr,
204  const QSslCertificate &cert = QSslCertificate(),
205  const QString &hostport = QString() );
206 
208  QgsAuthSslConfigWidget *sslCustomConfigWidget() { return mSslConfigWdgt; }
209 
210  public slots:
211  void accept() override;
212 
213  private slots:
214  void checkCanSave( bool cansave );
215 
216  private:
217  QgsAuthSslConfigWidget *mSslConfigWdgt = nullptr;
218  QPushButton *mSaveButton = nullptr;
219 };
220 
221 #endif // QGSAUTHSSLCONFIGWIDGET_H
#define SIP_TRANSFERTHIS
Definition: qgis_sip.h:46
Configuration container for SSL server connection exceptions or overrides.
Widget for editing an SSL server configuration.
Dialog wrapper of widget for editing an SSL server configuration.
QgsAuthSslConfigWidget * sslCustomConfigWidget()
Access the embedded SSL server configuration widget.