void Servatrice::statusUpdate() { if (!servatriceDatabaseInterface->checkSql()) return; const int uc = getUsersCount(); // for correct mutex locking order const int gc = getGamesCount(); uptime += statusUpdateClock->interval() / 1000; txBytesMutex.lock(); quint64 tx = txBytes; txBytes = 0; txBytesMutex.unlock(); rxBytesMutex.lock(); quint64 rx = rxBytes; rxBytes = 0; rxBytesMutex.unlock(); QSqlQuery query(servatriceDatabaseInterface->getDatabase()); query.prepare("insert into " + dbPrefix + "_uptime (id_server, timest, uptime, users_count, games_count, tx_bytes, rx_bytes) values(:id, NOW(), :uptime, :users_count, :games_count, :tx, :rx)"); query.bindValue(":id", serverId); query.bindValue(":uptime", uptime); query.bindValue(":users_count", uc); query.bindValue(":games_count", gc); query.bindValue(":tx", tx); query.bindValue(":rx", rx); servatriceDatabaseInterface->execSqlQuery(query); }
void Servatrice::statusUpdate() { if (!servatriceDatabaseInterface->checkSql()) return; const int uc = getUsersCount(); // for correct mutex locking order const int gc = getGamesCount(); uptime += statusUpdateClock->interval() / 1000; txBytesMutex.lock(); quint64 tx = txBytes; txBytes = 0; txBytesMutex.unlock(); rxBytesMutex.lock(); quint64 rx = rxBytes; rxBytes = 0; rxBytesMutex.unlock(); QSqlQuery *query = servatriceDatabaseInterface->prepareQuery("insert into {prefix}_uptime (id_server, timest, uptime, users_count, games_count, tx_bytes, rx_bytes) values(:id, NOW(), :uptime, :users_count, :games_count, :tx, :rx)"); query->bindValue(":id", serverId); query->bindValue(":uptime", uptime); query->bindValue(":users_count", uc); query->bindValue(":games_count", gc); query->bindValue(":tx", tx); query->bindValue(":rx", rx); servatriceDatabaseInterface->execSqlQuery(query); // send activation emails bool registrationEnabled = settingsCache->value("registration/enabled", false).toBool(); bool requireEmailActivation = settingsCache->value("registration/requireemailactivation", true).toBool(); if (registrationEnabled && requireEmailActivation) { QSqlQuery *query = servatriceDatabaseInterface->prepareQuery("select a.name, b.email, b.token from {prefix}_activation_emails a left join {prefix}_users b on a.name = b.name"); if (!servatriceDatabaseInterface->execSqlQuery(query)) return; QSqlQuery *queryDelete = servatriceDatabaseInterface->prepareQuery("delete from {prefix}_activation_emails where name = :name"); while (query->next()) { const QString userName = query->value(0).toString(); const QString emailAddress = query->value(1).toString(); const QString token = query->value(2).toString(); if(smtpClient->enqueueActivationTokenMail(userName, emailAddress, token)) { queryDelete->bindValue(":name", userName); servatriceDatabaseInterface->execSqlQuery(queryDelete); } } smtpClient->sendAllEmails(); } }