[Pkg-owncloud-commits] [owncloud-client] 23/47: Respect skipUpdate policy from global config files and windows policy.

Sandro Knauß hefee-guest at moszumanska.debian.org
Mon Feb 17 18:06:33 UTC 2014


This is an automated email from the git hooks/post-receive script.

hefee-guest pushed a commit to branch master
in repository owncloud-client.

commit 958253bb2b5a0235a3cc31089106b6997047ffe0
Author: Daniel Molkentin <danimo at owncloud.com>
Date:   Wed Feb 12 12:17:32 2014 +0100

    Respect skipUpdate policy from global config files and windows policy.
---
 OWNCLOUD.cmake                  |  2 +-
 cmake/modules/NSIS.template.in  | 34 +++++++++++------------
 config.h.in                     |  2 ++
 src/mirall/application.cpp      | 10 +++++--
 src/mirall/mirallconfigfile.cpp | 61 +++++++++++++++++++++++++++++++++++------
 src/mirall/mirallconfigfile.h   |  2 ++
 src/mirall/utility.cpp          |  1 -
 7 files changed, 83 insertions(+), 29 deletions(-)

diff --git a/OWNCLOUD.cmake b/OWNCLOUD.cmake
index c4028f2..c17834c 100644
--- a/OWNCLOUD.cmake
+++ b/OWNCLOUD.cmake
@@ -2,7 +2,7 @@ set( APPLICATION_NAME       "ownCloud" )
 #set( APPLICATION_SHORTNAME  ${APPLICATION_NAME} )
 set( APPLICATION_EXECUTABLE "owncloud" )
 set( APPLICATION_DOMAIN     "owncloud.com" )
-set( APPLICATION_VENDOR     "ownCloud, Inc" )
+set( APPLICATION_VENDOR     "ownCloud" )
 set( APPLICATION_UPDATE_URL "https://updates.owncloud.com/client/" CACHE string "URL for updater" )
 
 set( THEME_CLASS            "ownCloudTheme" )
diff --git a/cmake/modules/NSIS.template.in b/cmake/modules/NSIS.template.in
index 88b6afc..9c5fbed 100644
--- a/cmake/modules/NSIS.template.in
+++ b/cmake/modules/NSIS.template.in
@@ -67,7 +67,7 @@ Name "@CPACK_NSIS_PACKAGE_NAME@"
 BrandingText "${APPLICATION_NAME} ${VERSION}  -- ${BUILD_TIME}"
 OutFile "@CPACK_TOPLEVEL_DIRECTORY@/@CPACK_OUTPUT_FILE_NAME@"
 InstallDir "$PROGRAMFILES\@CPACK_PACKAGE_INSTALL_DIRECTORY@"
-InstallDirRegKey HKCU "Software\${APPLICATION_NAME}" ""
+InstallDirRegKey HKCU "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" ""
 InstType Standard
 InstType Full
 InstType Minimal
@@ -277,21 +277,21 @@ FunctionEnd
 ##############################################################################
 
 Function PageReinstall
-   ReadRegStr $R0 HKLM "Software\${APPLICATION_NAME}" ""
+   ReadRegStr $R0 HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" ""
    StrCmp $R0 "" 0 +2
    Abort
 
    ;Detect version
-   ReadRegDWORD $R0 HKLM "Software\${APPLICATION_NAME}" "VersionMajor"
+   ReadRegDWORD $R0 HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" "VersionMajor"
    IntCmp $R0 ${VER_MAJOR} minor_check new_version older_version
    minor_check:
-      ReadRegDWORD $R0 HKLM "Software\${APPLICATION_NAME}" "VersionMinor"
+      ReadRegDWORD $R0 HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" "VersionMinor"
       IntCmp $R0 ${VER_MINOR} rev_check new_version older_version
    rev_check:
-      ReadRegDWORD $R0 HKLM "Software\${APPLICATION_NAME}" "VersionRevision"
+      ReadRegDWORD $R0 HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" "VersionRevision"
       IntCmp $R0 ${VER_PATCH} build_check new_version older_version
    build_check:
-      ReadRegDWORD $R0 HKLM "Software\${APPLICATION_NAME}" "VersionBuild"
+      ReadRegDWORD $R0 HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" "VersionBuild"
       IntCmp $R0 ${VER_BUILD} same_version new_version older_version
 
    new_version:
@@ -487,11 +487,11 @@ Section -post
    SetDetailsPrint listonly
 
    ;Version numbers used to detect existing installation version for comparisson.
-   WriteRegStr HKLM "Software\${APPLICATION_NAME}" "" $INSTDIR
-   WriteRegDWORD HKLM "Software\${APPLICATION_NAME}" "VersionMajor" "${VER_MAJOR}"
-   WriteRegDWORD HKLM "Software\${APPLICATION_NAME}" "VersionMinor" "${VER_MINOR}"
-   WriteRegDWORD HKLM "Software\${APPLICATION_NAME}" "VersionRevision" "${VER_PATCH}"
-   WriteRegDWORD HKLM "Software\${APPLICATION_NAME}" "VersionBuild" "${VER_BUILD}"
+   WriteRegStr HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" "" $INSTDIR
+   WriteRegDWORD HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" "VersionMajor" "${VER_MAJOR}"
+   WriteRegDWORD HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" "VersionMinor" "${VER_MINOR}"
+   WriteRegDWORD HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" "VersionRevision" "${VER_PATCH}"
+   WriteRegDWORD HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" "VersionBuild" "${VER_BUILD}"
 
    ;Add or Remove Programs entry.
    WriteRegExpandStr ${MEMENTO_REGISTRY_ROOT} "${MEMENTO_REGISTRY_KEY}" "UninstallString" '"$INSTDIR\Uninstall.exe"'
@@ -563,12 +563,12 @@ Section Uninstall
    owncloud_installed:
 
    ;Delete registry keys.
-   DeleteRegValue HKLM "Software\${APPLICATION_NAME}" "VersionBuild"
-   DeleteRegValue HKLM "Software\${APPLICATION_NAME}" "VersionMajor"
-   DeleteRegValue HKLM "Software\${APPLICATION_NAME}" "VersionMinor"
-   DeleteRegValue HKLM "Software\${APPLICATION_NAME}" "VersionRevision"
-   DeleteRegValue HKLM "Software\${APPLICATION_NAME}" ""
-   DeleteRegKey HKLM "Software\${APPLICATION_NAME}"
+   DeleteRegValue HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" "VersionBuild"
+   DeleteRegValue HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" "VersionMajor"
+   DeleteRegValue HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" "VersionMinor"
+   DeleteRegValue HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" "VersionRevision"
+   DeleteRegValue HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" ""
+   DeleteRegKey HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}"
 
    DeleteRegKey HKCR "${APPLICATION_NAME}"
 
diff --git a/config.h.in b/config.h.in
index 1f2bcbe..d739a21 100644
--- a/config.h.in
+++ b/config.h.in
@@ -10,6 +10,8 @@
 #cmakedefine THEME_INCLUDE @THEME_INCLUDE@
 
 #cmakedefine APPLICATION_NAME "@APPLICATION_NAME@"
+#cmakedefine APPLICATION_VENDOR "@APPLICATION_VENDOR@"
+#cmakedefine APPLICATION_REV_DOMAIN "@APPLICATION_REV_DOMAIN@"
 #cmakedefine APPLICATION_SHORTNAME "@APPLICATION_SHORTNAME@"
 #cmakedefine APPLICATION_EXECUTABLE "@APPLICATION_EXECUTABLE@"
 #cmakedefine APPLICATION_UPDATE_URL "@APPLICATION_UPDATE_URL@"
diff --git a/src/mirall/application.cpp b/src/mirall/application.cpp
index 9ab3f36..054fcf1 100644
--- a/src/mirall/application.cpp
+++ b/src/mirall/application.cpp
@@ -33,9 +33,10 @@
 #include "mirall/clientproxy.h"
 
 #include "updater/updater.h"
-
 #include "creds/abstractcredentials.h"
 
+#include "config.h"
+
 #if defined(Q_OS_WIN)
 #include <windows.h>
 #endif
@@ -88,6 +89,9 @@ Application::Application(int &argc, char **argv) :
     _logFlush(false),
     _userTriggeredConnect(false)
 {
+// TODO: Can't set this without breaking current config pathes
+//    setOrganizationName(QLatin1String(APPLICATION_VENDOR));
+    setOrganizationDomain(QLatin1String(APPLICATION_REV_DOMAIN));
     setApplicationName( _theme->appNameGUI() );
     setWindowIcon( _theme->applicationIcon() );
 
@@ -139,7 +143,9 @@ Application::Application(int &argc, char **argv) :
     // startup procedure.
     QTimer::singleShot( 0, this, SLOT( slotCheckConnection() ));
 
-    if( !cfg.skipUpdateCheck() ) {
+    if( cfg.skipUpdateCheck() ) {
+        qDebug() << Q_FUNC_INFO << "Skipping update check";
+    } else {
         QTimer::singleShot( 3000, this, SLOT( slotStartUpdateDetector() ));
     }
 
diff --git a/src/mirall/mirallconfigfile.cpp b/src/mirall/mirallconfigfile.cpp
index 00ee58e..e7a109f 100644
--- a/src/mirall/mirallconfigfile.cpp
+++ b/src/mirall/mirallconfigfile.cpp
@@ -142,6 +142,26 @@ void MirallConfigFile::restoreGeometryHeader(QHeaderView *header)
     header->restoreState(getValue(geometryC, header->objectName()).toByteArray());
 }
 
+QVariant MirallConfigFile::getPolicySetting(const QString &setting, const QVariant& defaultValue) const
+{
+    if (Utility::isWindows()) {
+        // check for policies first and return immediately if a value is found.
+        QSettings userPolicy(QString::fromLatin1("HKEY_CURRENT_USER\\Software\\Policies\\%1\\%2")
+                             .arg(APPLICATION_VENDOR).arg(APPLICATION_NAME),
+                             QSettings::NativeFormat);
+        if(userPolicy.contains(setting)) {
+            return userPolicy.value(setting);
+        }
+
+        QSettings machinePolicy(QString::fromLatin1("HKEY_LOCAL_MACHINE\\Software\\Policies\\%1\\%2")
+                                .arg(APPLICATION_VENDOR).arg(APPLICATION_NAME),
+                                QSettings::NativeFormat);
+        if(machinePolicy.contains(setting)) {
+            return machinePolicy.value(setting);
+        }
+    }
+    return defaultValue;
+}
 
 QString MirallConfigFile::configPath() const
 {
@@ -324,12 +344,13 @@ bool MirallConfigFile::skipUpdateCheck( const QString& connection ) const
     QString con( connection );
     if( connection.isEmpty() ) con = defaultConnection();
 
-    QSettings settings(configFile(), QSettings::IniFormat);
-    settings.beginGroup( con );
-
-    bool skipIt = settings.value( QLatin1String(skipUpdateCheckC), false ).toBool();
+    QVariant fallback = getValue(QLatin1String(skipUpdateCheckC), con, false);
+    fallback = getValue(QLatin1String(skipUpdateCheckC), QString(), fallback);
 
-    return skipIt;
+    qDebug() << Q_FUNC_INFO << fallback;
+    QVariant value = getPolicySetting(QLatin1String(skipUpdateCheckC), fallback);
+    qDebug() << Q_FUNC_INFO << value;
+    return value.toBool();
 }
 
 void MirallConfigFile::setSkipUpdateCheck( bool skip, const QString& connection )
@@ -382,11 +403,35 @@ void MirallConfigFile::setProxyType(int proxyType,
 QVariant MirallConfigFile::getValue(const QString& param, const QString& group,
                                     const QVariant& defaultValue) const
 {
+    QVariant systemSetting;
+    qDebug() << Q_FUNC_INFO;
+    if (Utility::isMac()) {
+            QSettings systemSettings(QSettings::NativeFormat, QSettings::SystemScope, QCoreApplication::organizationName());
+            if (!group.isEmpty()) {
+                systemSettings.beginGroup(group);
+            }
+            systemSetting = systemSettings.value(param, defaultValue);
+    } else if (Utility::isUnix()) {
+        QSettings systemSettings(QString( SYSCONFDIR "/%1/%1.conf").arg(Theme::instance()->appName()), QSettings::NativeFormat);
+        if (!group.isEmpty()) {
+            systemSettings.beginGroup(group);
+        }
+        systemSetting = systemSettings.value(param, defaultValue);
+    } else { // Windows
+        QSettings systemSettings(QString::fromLatin1("HKEY_LOCAL_MACHINE\\Software\\%1\\%2")
+                                .arg(APPLICATION_VENDOR).arg(APPLICATION_NAME),
+                                QSettings::NativeFormat);
+        if (!group.isEmpty()) {
+            systemSettings.beginGroup(group);
+        }
+        systemSetting = systemSettings.value(param, defaultValue);
+        qDebug() << Q_FUNC_INFO << "Windows, read" << systemSetting << "from registry!";
+    }
+
     QSettings settings(configFile(), QSettings::IniFormat);
-    if (!group.isEmpty())
-        settings.beginGroup(group);
+    if (!group.isEmpty()) settings.beginGroup(group);
 
-    return settings.value(param, defaultValue);
+    return settings.value(param, systemSetting);
 }
 
 void MirallConfigFile::setValue(const QString& key, const QVariant &value)
diff --git a/src/mirall/mirallconfigfile.h b/src/mirall/mirallconfigfile.h
index b069f37..1d7455d 100644
--- a/src/mirall/mirallconfigfile.h
+++ b/src/mirall/mirallconfigfile.h
@@ -108,7 +108,9 @@ public:
 
     void saveGeometryHeader(QHeaderView *header);
     void restoreGeometryHeader(QHeaderView *header);
+
 protected:
+    QVariant getPolicySetting(const QString& policy, const QVariant& defaultValue = QVariant()) const;
     void storeData(const QString& group, const QString& key, const QVariant& value);
     QVariant retrieveData(const QString& group, const QString& key) const;
     void removeData(const QString& group, const QString& key);
diff --git a/src/mirall/utility.cpp b/src/mirall/utility.cpp
index fdf005e..61942a4 100644
--- a/src/mirall/utility.cpp
+++ b/src/mirall/utility.cpp
@@ -482,5 +482,4 @@ bool Utility::isLinux()
 #endif
 }
 
-
 } // namespace Mirall

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/owncloud-client.git



More information about the Pkg-owncloud-commits mailing list