Add authenticator column to quasseluser table
[quassel.git] / src / core / sqlitestorage.cpp
index 34859c3..3457c1e 100644 (file)
@@ -116,7 +116,7 @@ bool SqliteStorage::setupSchemaVersion(int version)
 }
 
 
-UserId SqliteStorage::addUser(const QString &user, const QString &password)
+UserId SqliteStorage::addUser(const QString &user, const QString &password, const QString &authenticator)
 {
     QSqlDatabase db = logDb();
     UserId uid;
@@ -131,6 +131,7 @@ UserId SqliteStorage::addUser(const QString &user, const QString &password)
         query.bindValue(":username", user);
         query.bindValue(":password", hashPassword(password));
         query.bindValue(":hashversion", Storage::HashVersion::Latest);
+        query.bindValue(":authenticator", authenticator);
         lockForWrite();
         safeExec(query);
         if (query.lastError().isValid() && query.lastError().number() == 19) { // user already exists - sadly 19 seems to be the general constraint violation error...
@@ -240,6 +241,26 @@ UserId SqliteStorage::getUserId(const QString &username)
     return userId;
 }
 
+QString SqliteStorage::getUserAuthenticator(const UserId userid)
+{
+    QString authenticator = QString("");
+
+    {
+        QSqlQuery query(logDb());
+        query.prepare(queryString("select_authenticator"));
+        query.bindValue(":userid", userid.toInt());
+
+        lockForRead();
+        safeExec(query);
+
+        if (query.first()) {
+            authenticator = query.value(0).toString();
+        }
+    }
+    unlock();
+
+    return authenticator;
+}
 
 UserId SqliteStorage::internalUser()
 {
@@ -658,6 +679,11 @@ void SqliteStorage::bindNetworkInfo(QSqlQuery &query, const NetworkInfo &info)
     query.bindValue(":autoreconnectretries", info.autoReconnectRetries);
     query.bindValue(":unlimitedconnectretries", info.unlimitedReconnectRetries ? 1 : 0);
     query.bindValue(":rejoinchannels", info.rejoinChannels ? 1 : 0);
+    // Custom rate limiting
+    query.bindValue(":usecustomessagerate", info.useCustomMessageRate ? 1 : 0);
+    query.bindValue(":messagerateburstsize", info.messageRateBurstSize);
+    query.bindValue(":messageratedelay", info.messageRateDelay);
+    query.bindValue(":unlimitedmessagerate", info.unlimitedMessageRate ? 1 : 0);
     if (info.networkId.isValid())
         query.bindValue(":networkid", info.networkId.toInt());
 }
@@ -676,6 +702,7 @@ void SqliteStorage::bindServerInfo(QSqlQuery &query, const Network::Server &serv
     query.bindValue(":proxyport", server.proxyPort);
     query.bindValue(":proxyuser", server.proxyUser);
     query.bindValue(":proxypass", server.proxyPass);
+    query.bindValue(":sslverify", server.sslVerify ? 1 : 0);
 }
 
 
@@ -853,6 +880,11 @@ QList<NetworkInfo> SqliteStorage::networks(UserId user)
                 net.useSasl = networksQuery.value(16).toInt() == 1 ? true : false;
                 net.saslAccount = networksQuery.value(17).toString();
                 net.saslPassword = networksQuery.value(18).toString();
+                // Custom rate limiting
+                net.useCustomMessageRate = networksQuery.value(19).toInt() == 1 ? true : false;
+                net.messageRateBurstSize = networksQuery.value(20).toUInt();
+                net.messageRateDelay = networksQuery.value(21).toUInt();
+                net.unlimitedMessageRate = networksQuery.value(22).toInt() == 1 ? true : false;
 
                 serversQuery.bindValue(":networkid", net.networkId.toInt());
                 safeExec(serversQuery);
@@ -875,6 +907,7 @@ QList<NetworkInfo> SqliteStorage::networks(UserId user)
                         server.proxyPort = serversQuery.value(8).toUInt();
                         server.proxyUser = serversQuery.value(9).toString();
                         server.proxyPass = serversQuery.value(10).toString();
+                        server.sslVerify = serversQuery.value(11).toInt() == 1 ? true : false;
                         servers << server;
                     }
                     net.serverList = servers;
@@ -1463,7 +1496,6 @@ QHash<BufferId, MsgId> SqliteStorage::bufferMarkerLineMsgIds(UserId user)
     return markerLineHash;
 }
 
-
 bool SqliteStorage::logMessage(Message &msg)
 {
     QSqlDatabase db = logDb();
@@ -1624,7 +1656,7 @@ QList<Message> SqliteStorage::requestMsgs(UserId user, BufferId bufferId, MsgId
             query.bindValue(":firstmsg", first.toInt());
         }
         else {
-            query.prepare(queryString("select_messages"));
+            query.prepare(queryString("select_messagesRange"));
             query.bindValue(":lastmsg", last.toInt());
             query.bindValue(":firstmsg", first.toInt());
         }
@@ -1885,6 +1917,11 @@ bool SqliteMigrationReader::readMo(NetworkMO &network)
     network.usesasl = value(22).toInt() == 1 ? true : false;
     network.saslaccount = value(23).toString();
     network.saslpassword = value(24).toString();
+    // Custom rate limiting
+    network.usecustommessagerate = value(25).toInt() == 1 ? true : false;
+    network.messagerateburstsize = value(26).toInt();
+    network.messageratedelay = value(27).toUInt();
+    network.unlimitedmessagerate = value(28).toInt() == 1 ? true : false;
     return true;
 }
 
@@ -1901,10 +1938,11 @@ bool SqliteMigrationReader::readMo(BufferMO &buffer)
     buffer.buffername = value(4).toString();
     buffer.buffercname = value(5).toString();
     buffer.buffertype = value(6).toInt();
-    buffer.lastseenmsgid = value(7).toInt();
-    buffer.markerlinemsgid = value(8).toInt();
-    buffer.key = value(9).toString();
-    buffer.joined = value(10).toInt() == 1 ? true : false;
+    buffer.lastmsgid = value(7).toInt();
+    buffer.lastseenmsgid = value(8).toInt();
+    buffer.markerlinemsgid = value(9).toInt();
+    buffer.key = value(10).toString();
+    buffer.joined = value(11).toInt() == 1 ? true : false;
     return true;
 }
 
@@ -1977,6 +2015,7 @@ bool SqliteMigrationReader::readMo(IrcServerMO &ircserver)
     ircserver.proxyport = value(11).toInt();
     ircserver.proxyuser = value(12).toString();
     ircserver.proxypass = value(13).toString();
+    ircserver.sslverify = value(14).toInt() == 1 ? true : false;
     return true;
 }