new options for SwissSurfer
This commit is contained in:
@@ -12,6 +12,7 @@
|
||||
#include <QtNetwork/QNetworkProxy>
|
||||
#include <QtNetwork/QNetworkAccessManager>
|
||||
#include <QtNetwork/QNetworkReply>
|
||||
#include <QtNetwork/QSslError>
|
||||
#include <QtCore/QTimer>
|
||||
#include <QtCore/QDebug>
|
||||
#include <map>
|
||||
@@ -79,7 +80,7 @@ namespace proxy {
|
||||
#endif
|
||||
{
|
||||
#ifdef QT_NETWORK_LIB
|
||||
Q_OBJECT;
|
||||
Q_OBJECT
|
||||
#endif
|
||||
public:
|
||||
//! Keep your instance as long as possible, because of caching.
|
||||
@@ -169,8 +170,19 @@ namespace proxy {
|
||||
QNetworkAccessManager* manager(new QNetworkAccessManager);
|
||||
manager->setProxy(prxy);
|
||||
if (!connect(manager, SIGNAL(finished(QNetworkReply*)),
|
||||
this, SLOT(replyFinished(QNetworkReply*))))
|
||||
SLOT(replyFinished(QNetworkReply*))))
|
||||
qFatal("connect failed");
|
||||
connect(manager,
|
||||
SIGNAL(authenticationRequired(QNetworkReply*, QAuthenticator*)),
|
||||
SLOT(authenticationRequired(QNetworkReply*, QAuthenticator*)));
|
||||
connect(manager,
|
||||
SIGNAL(proxyAuthenticationRequired(const QNetworkProxy&,
|
||||
QAuthenticator*)),
|
||||
SLOT(proxyAuthenticationRequired(const QNetworkProxy&,
|
||||
QAuthenticator*)));
|
||||
connect(manager,
|
||||
SIGNAL(sslErrors(QNetworkReply*, const QList<QSslError>&)),
|
||||
SLOT(sslErrors(QNetworkReply*, const QList<QSslError>&)));
|
||||
_requests.insert
|
||||
(std::make_pair(manager->head
|
||||
(QNetworkRequest
|
||||
@@ -220,13 +232,25 @@ namespace proxy {
|
||||
_timeout2.stop();
|
||||
QNetworkProxy prxy(_requests[reply].second);
|
||||
QUrl url(reply->url());
|
||||
for (Requests::iterator it(_requests.begin()); it!=_requests.end(); ++it)
|
||||
for (Requests::iterator it(_requests.begin());
|
||||
it!=_requests.end(); ++it)
|
||||
delete it->second.first;
|
||||
_requests.clear();
|
||||
qDebug()<<"SUCCESS - Valid proxy found for url:"
|
||||
<<"url="<<url<<"proxy="<<toString(prxy);
|
||||
proxyFound(url, prxy);
|
||||
}
|
||||
void authenticationRequired(QNetworkReply*, QAuthenticator*) {
|
||||
qDebug()<<"## "<<__PRETTY_FUNCTION__;
|
||||
}
|
||||
void proxyAuthenticationRequired(const QNetworkProxy&, QAuthenticator*) {
|
||||
qDebug()<<"## "<<__PRETTY_FUNCTION__;
|
||||
}
|
||||
void sslErrors(QNetworkReply*, const QList<QSslError>& l) {
|
||||
qDebug()<<"## "<<__PRETTY_FUNCTION__;
|
||||
for (QList<QSslError>::const_iterator it(l.begin()); it!=l.end(); ++it)
|
||||
qDebug()<<" SSL-Error -> "<<it->errorString();
|
||||
}
|
||||
private:
|
||||
typedef std::map
|
||||
<QNetworkReply*, std::pair<QNetworkAccessManager*, QNetworkProxy> >
|
||||
|
@@ -31,11 +31,18 @@ class Proxy: public QDialog, public Ui::Proxy {
|
||||
_url->setText(s.value("default-server", QString()).toString());
|
||||
_port->setValue(s.value("default-port", 0).toInt());
|
||||
connect(&_auto, SIGNAL(proxyFound(const QUrl&, const QNetworkProxy&)),
|
||||
SLOT(proxyFound(const QUrl&, const QNetworkProxy&)));
|
||||
SIGNAL(proxyFound(const QUrl&, const QNetworkProxy&)));
|
||||
connect(&_auto, SIGNAL(proxyFound(const QUrl&, const QNetworkProxy&)),
|
||||
SLOT(proxyFoundSlot(const QUrl&, const QNetworkProxy&)));
|
||||
connect(&_auto, SIGNAL(proxyError(QNetworkReply::NetworkError)),
|
||||
SIGNAL(proxyError(QNetworkReply::NetworkError)));
|
||||
accept();
|
||||
}
|
||||
|
||||
public:
|
||||
void checkUrl(const QString& url) {
|
||||
_testUrl = url;
|
||||
accept();
|
||||
}
|
||||
|
||||
void acceptValues() {
|
||||
QNetworkProxy::ProxyType type(QNetworkProxy::NoProxy);
|
||||
@@ -72,9 +79,14 @@ class Proxy: public QDialog, public Ui::Proxy {
|
||||
.arg(QNetworkProxy::applicationProxy().port()));
|
||||
}
|
||||
|
||||
Q_SIGNALS:
|
||||
|
||||
void proxyFound(const QUrl&, const QNetworkProxy&);
|
||||
void proxyError(QNetworkReply::NetworkError);
|
||||
|
||||
public Q_SLOTS:
|
||||
|
||||
void proxyFound(const QUrl&, const QNetworkProxy& p) {
|
||||
void proxyFoundSlot(const QUrl&, const QNetworkProxy& p) {
|
||||
QNetworkProxy::setApplicationProxy(p);
|
||||
_url->setText(p.hostName());
|
||||
_port->setValue(p.port());
|
||||
|
Reference in New Issue
Block a user