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

List:       kde-commits
Subject:    KDE/kdebase/runtime/plasma/scriptengines/javascript/declarative
From:       Marco Martin <notmart () gmail ! com>
Date:       2010-10-21 19:02:29
Message-ID: 20101021190229.86B59AC897 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1188241 by mart:

check with the authorization manager whether to allow the import of a certain url \
(unfortunatel doesn't seem to be any way to block local absolute paths :/)


 M  +34 -3     packageaccessmanager.cpp  
 M  +6 -2      packageaccessmanager.h  
 M  +5 -3      packageaccessmanagerfactory.cpp  
 M  +5 -1      packageaccessmanagerfactory.h  


--- trunk/KDE/kdebase/runtime/plasma/scriptengines/javascript/declarative/packageaccessmanager.cpp \
#1188240:1188241 @@ -19,11 +19,38 @@
 
 #include "packageaccessmanager.h"
 
+#include <QNetworkReply>
+
 #include <Plasma/Package>
 
-PackageAccessManager::PackageAccessManager(const Plasma::Package *package, QObject \
*parent) +#include "plasmoid/appletauthorization.h"
+
+class ErrorReply : public QNetworkReply
+{
+public:
+    ErrorReply(QNetworkAccessManager::Operation op, const QNetworkRequest &req)
+        : QNetworkReply()
+    {
+        setError(QNetworkReply::ContentOperationNotPermittedError, "The plasmoid has \
not been authorized to load remote content"); +        setOperation(op);
+        setRequest(req);
+        setUrl(req.url());
+    }
+
+    qint64 readData(char *data, qint64 maxSize)
+    {
+        return 0;
+    }
+
+    void abort()
+    {
+    }
+};
+
+PackageAccessManager::PackageAccessManager(const Plasma::Package *package, \
AppletAuthorization *auth, QObject *parent)  : KIO::AccessManager(parent),
-      m_package(package)
+      m_package(package),
+      m_auth(auth)
 {
 }
 
@@ -32,7 +59,7 @@
 }
 
 
-QNetworkReply *PackageAccessManager::createRequest(Operation op, const \
QNetworkRequest &req, QIODevice *outgoingData) +QNetworkReply \
*PackageAccessManager::createRequest(QNetworkAccessManager::Operation op, const \
QNetworkRequest &req, QIODevice *outgoingData)  {
     QUrl reqUrl(req.url());
 
@@ -42,6 +69,10 @@
         reqUrl.setPath(m_package->path()+"/contents/"+reqUrl.path());
         request.setUrl(reqUrl);
         return KIO::AccessManager::createRequest(op, request, outgoingData);
+    } else if ((reqUrl.scheme() == "http" && \
!m_auth->authorizeRequiredExtension("http")) || +               ((reqUrl.scheme() == \
"file" || reqUrl.scheme() == "desktop") && \
!m_auth->authorizeRequiredExtension("localio")) || +               \
(!m_auth->authorizeRequiredExtension("networkio"))) { +        return new \
ErrorReply(op, req);  } else {
         return KIO::AccessManager::createRequest(op, req, outgoingData);
     }
--- trunk/KDE/kdebase/runtime/plasma/scriptengines/javascript/declarative/packageaccessmanager.h \
#1188240:1188241 @@ -22,22 +22,26 @@
 
 #include <kio/accessmanager.h>
 
+
 namespace Plasma
 {
     class Package;
 }
 
+class AppletAuthorization;
+
 class PackageAccessManager : public KIO::AccessManager
 {
 public:
-    PackageAccessManager(const Plasma::Package *package, QObject *parent = 0);
+    PackageAccessManager(const Plasma::Package *package, AppletAuthorization *auth, \
QObject *parent = 0);  ~PackageAccessManager();
 
 protected:
-    QNetworkReply *createRequest(Operation op, const QNetworkRequest &req, QIODevice \
*outgoingData = 0); +    QNetworkReply \
*createRequest(QNetworkAccessManager::Operation op, const QNetworkRequest &req, \
QIODevice *outgoingData = 0);  
 private:
     const Plasma::Package *m_package;
+    AppletAuthorization *m_auth;
 };
 
 #endif
--- trunk/KDE/kdebase/runtime/plasma/scriptengines/javascript/declarative/packageaccessmanagerfactory.cpp \
#1188240:1188241 @@ -22,10 +22,12 @@
 #include <Plasma/Package>
 
 #include "packageaccessmanager.h"
+#include "plasmoid/appletauthorization.h"
 
-PackageAccessManagerFactory::PackageAccessManagerFactory(const Plasma::Package \
*package) +PackageAccessManagerFactory::PackageAccessManagerFactory(const \
Plasma::Package *package, AppletAuthorization *auth)  : \
                QDeclarativeNetworkAccessManagerFactory(),
-     m_package(package)
+     m_package(package),
+     m_auth(auth)
 {
 }
 
@@ -35,7 +37,7 @@
 
 QNetworkAccessManager *PackageAccessManagerFactory::create(QObject *parent)
 {
-    return new PackageAccessManager(m_package, parent);
+    return new PackageAccessManager(m_package, m_auth, parent);
 }
 
 
--- trunk/KDE/kdebase/runtime/plasma/scriptengines/javascript/declarative/packageaccessmanagerfactory.h \
#1188240:1188241 @@ -22,20 +22,24 @@
 
 #include <QDeclarativeNetworkAccessManagerFactory>
 
+
 namespace Plasma
 {
     class Package;
 }
 
+class AppletAuthorization;
+
 class PackageAccessManagerFactory : public QDeclarativeNetworkAccessManagerFactory
 {
 public:
-    PackageAccessManagerFactory(const Plasma::Package *package);
+    PackageAccessManagerFactory(const Plasma::Package *package, AppletAuthorization \
*auth);  ~PackageAccessManagerFactory();
     QNetworkAccessManager *create(QObject *parent);
 
 private:
     const Plasma::Package *m_package;
+    AppletAuthorization *m_auth;
 };
 
 #endif


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

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