[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    kdesupport/kdewin-installer/shared
From:       Ralf Habacker <Ralf.Habacker () freenet ! de>
Date:       2010-07-25 9:21:01
Message-ID: 20100725092101.9DE6DAC7E8 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1154356 by habacker:

- added proxy autodetection support (method fromAutoDetect())
- added toString() method
- added save() method

 M  +75 -0     proxysettings.cpp  
 M  +8 -1      proxysettings.h  


--- trunk/kdesupport/kdewin-installer/shared/proxysettings.cpp #1154355:1154356
@@ -22,7 +22,10 @@
 
 #include "proxysettings.h"
 #include "settings.h"
+#include "downloader.h"
 
+static QString testUrl = "http://www.winkde.org";
+
 ProxySettings::ProxySettings() : port(0)
 {
 }
@@ -47,6 +50,9 @@
         case ProxySettings::Environment:
             return fromEnvironment(url);
 #endif
+        case ProxySettings::AutoDetect:
+            return fromAutoDetect(url);
+
         case ProxySettings::None:
         default:
             hostname = QString();
@@ -58,6 +64,15 @@
     return false;
 }
 
+bool ProxySettings::save()
+{
+    Settings &s = Settings::instance();
+    s.setProxyMode(mode);
+    if (mode == ProxySettings::Manual)
+        s.setProxy(*this);
+    return true;
+}
+
 #ifdef Q_OS_WIN
 bool ProxySettings::fromInternetExplorer(const QString &url)
 {
@@ -172,3 +187,63 @@
     }
     return false;
 }
+
+
+bool ProxySettings::fromAutoDetect(const QString &url)
+{
+    Settings &s = Settings::instance();
+    QByteArray data;
+
+    if (from(InternetExplorer,url) && !hostname.isEmpty())
+    {
+        s.setProxyMode(mode);
+        if (Downloader::instance()->fetch(testUrl,data))
+        {
+            return true;
+        }
+    }
+    if (from(FireFox,url) && !hostname.isEmpty())
+    {
+        s.setProxyMode(mode);
+        if (Downloader::instance()->fetch(testUrl,data))
+        {
+            return true;
+        }
+    }
+    if (from(Environment,url) && !hostname.isEmpty())
+    {
+        s.setProxyMode(mode);
+        if (Downloader::instance()->fetch(testUrl,data))
+        {
+            return true;
+        }
+    }
+    mode = ProxySettings::None;
+    s.setProxyMode(mode);
+    if (Downloader::instance()->fetch(testUrl,data))
+    {
+        return true;
+    }
+    return false;
+}
+
+
+QString ProxySettings::toString()
+{
+    switch(mode)
+    {
+        case ProxySettings::InternetExplorer:
+            return "using IE proxy" + hostname;
+        case ProxySettings::FireFox:
+            return "using Firefox proxy" + hostname;
+        case ProxySettings::Manual:
+            return "using manual set proxy" + hostname;
+
+        case ProxySettings::Environment:
+            return "using proxy from environment" + hostname;
+
+        case ProxySettings::None:
+        default:
+            return "no proxy used";
+    }
+}
--- trunk/kdesupport/kdewin-installer/shared/proxysettings.h #1154355:1154356
@@ -31,12 +31,18 @@
 class ProxySettings
 {
 public:
-    typedef enum {None = 0, InternetExplorer, FireFox, Environment, Manual} ProxyMode;
+    typedef enum {None = 0, InternetExplorer, FireFox, Environment, Manual, AutoDetect} ProxyMode;
     ProxySettings();
 
     /// read in proxy settings depending on mode and url based
     bool from(ProxyMode mode, const QString &url=QString());
 
+    /// save settings
+    bool save();
+
+    /// convert to cleartext output
+    QString toString();
+
     QString hostname;
     int port;
     QString user;
@@ -49,6 +55,7 @@
 #endif
     bool fromFireFox(const QString &url);
     bool fromEnvironment(const QString &url);
+    bool fromAutoDetect(const QString &url);
 
 };
 
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic