Esempio n. 1
0
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);
}
Esempio n. 2
0
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();
    }
}