Blob Blame History Raw
From 284342b48dc32341c3553fd2b0ee5069d75b58f9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Frank=20Meerk=C3=B6tter?= <frank@meerkoetter.org>
Date: Thu, 12 Sep 2013 21:44:03 +0200
Subject: [PATCH 055/471] Enable Wikipedia over SSL.

This patch makes SSL the default. It also adds a checkbox to disable
it so if there would be a problem a fallback to HTTP is possible.

BUG: 322249
REVIEW: 112706
FIXED-IN: 2.9
---
 src/context/applets/wikipedia/WikipediaApplet.cpp      |  6 ++++++
 src/context/applets/wikipedia/WikipediaApplet_p.h      |  1 +
 .../applets/wikipedia/wikipediaGeneralSettings.ui      | 11 +++++++++--
 src/context/engines/wikipedia/WikipediaEngine.cpp      | 18 +++++++++++++++---
 4 files changed, 31 insertions(+), 5 deletions(-)

diff --git a/src/context/applets/wikipedia/WikipediaApplet.cpp b/src/context/applets/wikipedia/WikipediaApplet.cpp
index 507db96..21365f2 100644
--- a/src/context/applets/wikipedia/WikipediaApplet.cpp
+++ b/src/context/applets/wikipedia/WikipediaApplet.cpp
@@ -250,11 +250,14 @@ WikipediaAppletPrivate::_loadSettings()
     }
     langList = list;
     useMobileWikipedia = (generalSettingsUi.mobileCheckBox->checkState() == Qt::Checked);
+    useSSL = (generalSettingsUi.sslCheckBox->checkState() == Qt::Checked);
     Amarok::config("Wikipedia Applet").writeEntry( "PreferredLang", list );
     Amarok::config("Wikipedia Applet").writeEntry( "UseMobile", useMobileWikipedia );
+    Amarok::config( "Wikipedia Applet" ).writeEntry( "UseSSL", useSSL );
     _paletteChanged( App::instance()->palette() );
     dataContainer->setData( "lang", langList );
     dataContainer->setData( "mobile", useMobileWikipedia );
+    dataContainer->setData( "ssl", useSSL );
     scheduleEngineUpdate();
 }
 
@@ -656,9 +659,11 @@ WikipediaApplet::init()
     // Read config and inform the engine.
     d->langList = Amarok::config("Wikipedia Applet").readEntry( "PreferredLang", QStringList() << "en" );
     d->useMobileWikipedia = Amarok::config("Wikipedia Applet").readEntry( "UseMobile", false );
+    d->useSSL = Amarok::config( "Wikipedia Applet" ).readEntry( "UseSSL", true );
     d->_paletteChanged( App::instance()->palette() );
     d->dataContainer->setData( "lang", d->langList );
     d->dataContainer->setData( "mobile", d->useMobileWikipedia );
+    d->dataContainer->setData( "ssl", d->useSSL );
     d->scheduleEngineUpdate();
 
     updateConstraints();
@@ -787,6 +792,7 @@ WikipediaApplet::createConfigurationInterface( KConfigDialog *parent )
     QWidget *genSettings = new QWidget;
     d->generalSettingsUi.setupUi( genSettings );
     d->generalSettingsUi.mobileCheckBox->setCheckState( d->useMobileWikipedia ? Qt::Checked : Qt::Unchecked );
+    d->generalSettingsUi.sslCheckBox->setCheckState( d->useSSL ? Qt::Checked : Qt::Unchecked );
 
     connect( d->languageSettingsUi.downloadButton, SIGNAL(clicked()), this, SLOT(_getLangMap()) );
     connect( parent, SIGNAL(okClicked()), this, SLOT(_loadSettings()) );
diff --git a/src/context/applets/wikipedia/WikipediaApplet_p.h b/src/context/applets/wikipedia/WikipediaApplet_p.h
index c52a0bf..df5ddc3 100644
--- a/src/context/applets/wikipedia/WikipediaApplet_p.h
+++ b/src/context/applets/wikipedia/WikipediaApplet_p.h
@@ -143,6 +143,7 @@ public:
     bool isForwardHistory;
     bool isBackwardHistory;
     bool useMobileWikipedia;
+    bool useSSL;
 };
 
 class WikipediaSearchLineEdit : public Plasma::LineEdit
diff --git a/src/context/applets/wikipedia/wikipediaGeneralSettings.ui b/src/context/applets/wikipedia/wikipediaGeneralSettings.ui
index a615dee..84cb5df 100644
--- a/src/context/applets/wikipedia/wikipediaGeneralSettings.ui
+++ b/src/context/applets/wikipedia/wikipediaGeneralSettings.ui
@@ -6,8 +6,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>244</width>
-    <height>23</height>
+    <width>253</width>
+    <height>62</height>
    </rect>
   </property>
   <property name="sizePolicy">
@@ -32,6 +32,13 @@
        </property>
       </widget>
      </item>
+     <item row="1" column="1">
+      <widget class="QCheckBox" name="sslCheckBox">
+       <property name="text">
+        <string>Use &amp;SSL</string>
+       </property>
+      </widget>
+     </item>
     </layout>
    </item>
   </layout>
diff --git a/src/context/engines/wikipedia/WikipediaEngine.cpp b/src/context/engines/wikipedia/WikipediaEngine.cpp
index f22e443..982d3fd 100644
--- a/src/context/engines/wikipedia/WikipediaEngine.cpp
+++ b/src/context/engines/wikipedia/WikipediaEngine.cpp
@@ -45,6 +45,7 @@ public:
         : q_ptr( parent )
         , currentSelection( Artist )
         , useMobileVersion( false )
+        , useSSL( true )
         , dataContainer( 0 )
     {}
     ~WikipediaEnginePrivate() {}
@@ -88,6 +89,7 @@ public:
         }
     } m_previousTrackMetadata;
     bool useMobileVersion;
+    bool useSSL;
 
     Plasma::DataContainer *dataContainer;
 
@@ -169,6 +171,16 @@ WikipediaEnginePrivate::_dataContainerUpdated( const QString &source, const Plas
         }
     }
 
+    if( data.contains( QLatin1String("ssl") ) )
+    {
+        const bool ssl = data.value( QLatin1String("ssl") ).toBool();
+        if( ssl != useSSL )
+        {
+            useSSL = ssl;
+            updateEngine();
+        }
+    }
+
     if( data.contains( QLatin1String("lang") ) )
     {
         QStringList langList = data.value( QLatin1String("lang") ).toStringList();
@@ -532,7 +544,7 @@ WikipediaEnginePrivate::fetchWikiUrl( const QString &title, const QString &urlPr
     Q_Q( WikipediaEngine );
     KUrl pageUrl;
     QString host( ".wikipedia.org" );
-    pageUrl.setScheme( QLatin1String("http") );
+    pageUrl.setScheme( useSSL ? QLatin1String( "https" ) : QLatin1String( "http" ) );
 
     if( useMobileVersion )
     {
@@ -570,7 +582,7 @@ WikipediaEnginePrivate::fetchLangLinks( const QString &title,
 {
     Q_Q( WikipediaEngine );
     KUrl url;
-    url.setScheme( QLatin1String("http") );
+    url.setScheme( useSSL ? QLatin1String( "https" ) : QLatin1String( "http" ) );
     url.setHost( hostLang + QLatin1String(".wikipedia.org") );
     url.setPath( QLatin1String("/w/api.php") );
     url.addQueryItem( QLatin1String("action"), QLatin1String("query") );
@@ -592,7 +604,7 @@ WikipediaEnginePrivate::fetchListing( const QString &title, const QString &hostL
 {
     Q_Q( WikipediaEngine );
     KUrl url;
-    url.setScheme( QLatin1String("http") );
+    url.setScheme( useSSL ? QLatin1String( "https" ) : QLatin1String( "http" ) );
     url.setHost( hostLang + QLatin1String(".wikipedia.org") );
     url.setPath( QLatin1String("/w/api.php") );
     url.addQueryItem( QLatin1String("action"), QLatin1String("query") );
-- 
2.4.3