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/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());

Loading…
Cancel
Save