diff --git a/proxyface/autoproxy.hxx b/proxyface/autoproxy.hxx index 7479cb0..40f939c 100644 --- a/proxyface/autoproxy.hxx +++ b/proxyface/autoproxy.hxx @@ -96,7 +96,9 @@ namespace proxy { #ifdef QT_NETWORK_LIB Q_OBJECT #endif + public: + //! Keep your instance as long as possible, because of caching. Interface() #ifdef QT_NETWORK_LIB @@ -115,7 +117,9 @@ namespace proxy { #endif #endif } + virtual ~Interface() {} + //! Get list of proxies for a given URL. virtual List proxies(const std::string& url) = 0; #ifdef QT_NETWORK_LIB @@ -171,12 +175,15 @@ namespace proxy { setupProxyCheck(defaultProxy, url); _timeout2.start(); } + void ping(const QUrl& url, int timeout2=30000) { ping(url.toString().toStdString(), timeout2); } + void ping(const QString& url, int timeout2=30000) { ping(url.toStdString(), timeout2); } + //! If Qt Network is available you may check the proxies found /*! First checks for direct access to the target. If this is not possible, starts scan for proxies. @@ -204,20 +211,24 @@ namespace proxy { _timeout2.setInterval(timeout2); _timeout1.setSingleShot(true); _timeout1.setInterval(timeout1); - _timeout1.start(); + timeout(); + // @todo add again after test _timeout1.start(); } + //! If Qt Network is available you may check the proxies found /*! @copydoc proxy(const std::string&, int) */ void proxy(const QUrl& url, int timeout1=5000, int timeout2=30000) { PROXYFACE_LOG; proxy(url.toString().toStdString(), timeout1, timeout2); } + //! If Qt Network is available you may check the proxies found /*! @copydoc proxy(const std::string&, int) */ void proxy(const QString& url, int timeout1=5000, int timeout2=30000) { PROXYFACE_LOG; proxy(url.toStdString(), timeout1, timeout2); } + static QString toString(const QNetworkProxy& p) { switch (p.type()) { case QNetworkProxy::NoProxy: @@ -243,7 +254,9 @@ namespace proxy { } return QString("**ERROR** illegal proxy type"); } + Q_SIGNALS: + //! Signals a valid proxy for the URL requested earlier. void proxyFound(const QUrl&, const QNetworkProxy&); //! Signals a timeout, and no valid proxy for the URL requested earlier. @@ -252,7 +265,9 @@ namespace proxy { void temporaryError(QNetworkReply::NetworkError, QString, QString); void authenticationRequired(QNetworkReply*, QAuthenticator*); void proxyAuthenticationRequired(const QNetworkProxy&, QAuthenticator*); + private: + void setupProxyCheck(const QNetworkProxy& prxy, const std::string& url) { PROXYFACE_LOG; qDebug()<<"Testing proxy for url:"<&))); //delete manager; } + private Q_SLOTS: + void proxyAuthenticationRequiredLog(const QNetworkProxy&, QAuthenticator* auth) { qDebug()<<"proxyAuthenticationRequired for "<realm(); } + void bullshit() { qDebug()<<"SCHEISSE"; } + void timeout() { PROXYFACE_LOG; reset(); @@ -341,6 +362,7 @@ namespace proxy { proxyError(QNetworkReply::TimeoutError); } } + void replyFinished(QNetworkReply* reply) { PROXYFACE_LOG; qDebug()<<"Proxydetection got reply with status:" @@ -357,12 +379,14 @@ namespace proxy { <<"url="<& l) { PROXYFACE_LOG; qDebug()<<"## "<<__PRETTY_FUNCTION__; for (QList::const_iterator it(l.begin()); it!=l.end(); ++it) qDebug()<<" SSL-Error -> "<errorString(); } + void threadFinished() { PROXYFACE_LOG; for (List::const_iterator it(_proxies.begin()); @@ -374,13 +398,15 @@ namespace proxy { QString::fromStdString(it->host), it->port); setupProxyCheck(prxy, _url); } - QNetworkProxy directProxy(QNetworkProxy::NoProxy); - setupProxyCheck(directProxy, _url); - QNetworkProxy defaultProxy; - setupProxyCheck(defaultProxy, _url); + /// @todo add again after test QNetworkProxy directProxy(QNetworkProxy::NoProxy); + /// @todo add again after test setupProxyCheck(directProxy, _url); + /// @todo add again after test QNetworkProxy defaultProxy; + /// @todo add again after test setupProxyCheck(defaultProxy, _url); _timeout2.start(); } + protected: + void run() { PROXYFACE_LOG; _proxies = proxies(_url); @@ -388,7 +414,9 @@ namespace proxy { threadFinished(); #endif } + private: + typedef std::map > Requests;