new options for SwissSurfer

master
Marc Wäckerlin 16 years ago
parent 1c3fc516a6
commit ceb2bcca7e
  1. 30
      proxyface/autoproxy.hxx
  2. 18
      proxyface/proxy.hxx

@ -12,6 +12,7 @@
#include <QtNetwork/QNetworkProxy> #include <QtNetwork/QNetworkProxy>
#include <QtNetwork/QNetworkAccessManager> #include <QtNetwork/QNetworkAccessManager>
#include <QtNetwork/QNetworkReply> #include <QtNetwork/QNetworkReply>
#include <QtNetwork/QSslError>
#include <QtCore/QTimer> #include <QtCore/QTimer>
#include <QtCore/QDebug> #include <QtCore/QDebug>
#include <map> #include <map>
@ -79,7 +80,7 @@ namespace proxy {
#endif #endif
{ {
#ifdef QT_NETWORK_LIB #ifdef QT_NETWORK_LIB
Q_OBJECT; Q_OBJECT
#endif #endif
public: public:
//! Keep your instance as long as possible, because of caching. //! Keep your instance as long as possible, because of caching.
@ -169,8 +170,19 @@ namespace proxy {
QNetworkAccessManager* manager(new QNetworkAccessManager); QNetworkAccessManager* manager(new QNetworkAccessManager);
manager->setProxy(prxy); manager->setProxy(prxy);
if (!connect(manager, SIGNAL(finished(QNetworkReply*)), if (!connect(manager, SIGNAL(finished(QNetworkReply*)),
this, SLOT(replyFinished(QNetworkReply*)))) SLOT(replyFinished(QNetworkReply*))))
qFatal("connect failed"); 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 _requests.insert
(std::make_pair(manager->head (std::make_pair(manager->head
(QNetworkRequest (QNetworkRequest
@ -220,13 +232,25 @@ namespace proxy {
_timeout2.stop(); _timeout2.stop();
QNetworkProxy prxy(_requests[reply].second); QNetworkProxy prxy(_requests[reply].second);
QUrl url(reply->url()); 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; delete it->second.first;
_requests.clear(); _requests.clear();
qDebug()<<"SUCCESS - Valid proxy found for url:" qDebug()<<"SUCCESS - Valid proxy found for url:"
<<"url="<<url<<"proxy="<<toString(prxy); <<"url="<<url<<"proxy="<<toString(prxy);
proxyFound(url, 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: private:
typedef std::map typedef std::map
<QNetworkReply*, std::pair<QNetworkAccessManager*, QNetworkProxy> > <QNetworkReply*, std::pair<QNetworkAccessManager*, QNetworkProxy> >

@ -31,11 +31,18 @@ class Proxy: public QDialog, public Ui::Proxy {
_url->setText(s.value("default-server", QString()).toString()); _url->setText(s.value("default-server", QString()).toString());
_port->setValue(s.value("default-port", 0).toInt()); _port->setValue(s.value("default-port", 0).toInt());
connect(&_auto, SIGNAL(proxyFound(const QUrl&, const QNetworkProxy&)), 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(); accept();
} }
public: void checkUrl(const QString& url) {
_testUrl = url;
accept();
}
void acceptValues() { void acceptValues() {
QNetworkProxy::ProxyType type(QNetworkProxy::NoProxy); QNetworkProxy::ProxyType type(QNetworkProxy::NoProxy);
@ -72,9 +79,14 @@ class Proxy: public QDialog, public Ui::Proxy {
.arg(QNetworkProxy::applicationProxy().port())); .arg(QNetworkProxy::applicationProxy().port()));
} }
Q_SIGNALS:
void proxyFound(const QUrl&, const QNetworkProxy&);
void proxyError(QNetworkReply::NetworkError);
public Q_SLOTS: public Q_SLOTS:
void proxyFound(const QUrl&, const QNetworkProxy& p) { void proxyFoundSlot(const QUrl&, const QNetworkProxy& p) {
QNetworkProxy::setApplicationProxy(p); QNetworkProxy::setApplicationProxy(p);
_url->setText(p.hostName()); _url->setText(p.hostName());
_port->setValue(p.port()); _port->setValue(p.port());

Loading…
Cancel
Save