Save Core settings synchronously and report errors.
[quassel.git] / src / core / core.h
index a17211d..f974645 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2015 by the Quassel Project                        *
+ *   Copyright (C) 2005-2016 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -74,6 +74,15 @@ public:
         return instance()->_storage->validateUser(userName, password);
     }
 
+
+    //! Change a user's password
+    /**
+     * \param userId     The user's ID
+     * \param password   The user's unencrypted new password
+     * \return true, if the password change was successful
+     */
+    static bool changeUserPassword(UserId userId, const QString &password);
+
     //! Store a user setting persistently
     /**
      * \param userId       The users Id
@@ -485,8 +494,29 @@ public:
     static inline QDateTime startTime() { return instance()->_startTime; }
     static inline bool isConfigured() { return instance()->_configured; }
     static bool sslSupported();
+
+    /**
+     * Reloads SSL certificates used for connection with clients
+     *
+     * @return True if certificates reloaded successfully, otherwise false.
+     */
+    static bool reloadCerts();
+
     static QVariantList backendInfo();
 
+    /**
+     * Checks if a storage backend is the default storage backend. This
+     * hardcodes this information into the core (not the client).
+     *
+     * \param backend    The backend to check.
+     *
+     * @return True if storage backend is default, false otherwise.
+     */
+    static inline bool isStorageBackendDefault(const Storage *backend)
+    {
+        return (backend->displayName() == "SQLite") ? true : false;
+    }
+
     static QString setup(const QString &adminUser, const QString &adminPassword, const QString &backend, const QVariantMap &setupData);
 
     static inline QTimer &syncTimer() { return instance()->_storageSyncTimer; }
@@ -524,6 +554,8 @@ private slots:
     void socketError(QAbstractSocket::SocketError err, const QString &errorString);
     void setupClientSession(RemotePeer *, UserId);
 
+    bool changeUserPass(const QString &username);
+
 private:
     Core();
     ~Core();
@@ -540,9 +572,8 @@ private:
     void unregisterStorageBackends();
     void unregisterStorageBackend(Storage *);
     bool selectBackend(const QString &backend);
-    void createUser();
-    void changeUserPass(const QString &username);
-    void saveBackendSettings(const QString &backend, const QVariantMap &settings);
+    bool createUser();
+    bool saveBackendSettings(const QString &backend, const QVariantMap &settings);
     QVariantMap promptForSettings(const Storage *storage);
 
 private: