Add unique but random UUID to server queries

With this we can easily eliminate duplicates from our user statistics. The
UUID is completely random and there is no way to link it back to a
specific user. By deleting the settings a user can force a new UUID.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2015-01-25 11:27:42 -08:00
parent ed9a060d76
commit 0f967063c0
3 changed files with 22 additions and 1 deletions

View file

@ -2,6 +2,7 @@
#include "usersurvey.h"
#include <QtNetwork>
#include <QMessageBox>
#include <QUuid>
#include "subsurfacewebservices.h"
#include "ssrf-version.h"
#include "mainwindow.h"
@ -47,7 +48,8 @@ void UpdateManager::checkForUpdates(bool automatic)
#endif
isAutomaticCheck = automatic;
QString version = CANONICAL_VERSION_STRING;
QString url = QString("http://subsurface-divelog.org/updatecheck.html?os=%1&version=%2").arg(os, version);
QString uuidString = getUUID();
QString url = QString("http://subsurface-divelog.org/updatecheck.html?os=%1&version=%2&uuid=%3").arg(os, version, uuidString);
QNetworkRequest request;
request.setUrl(url);
request.setRawHeader("Accept", "text/xml");
@ -56,6 +58,22 @@ void UpdateManager::checkForUpdates(bool automatic)
connect(SubsurfaceWebServices::manager()->get(request), SIGNAL(finished()), this, SLOT(requestReceived()), Qt::UniqueConnection);
}
QString UpdateManager::getUUID()
{
QString uuidString;
QSettings settings;
settings.beginGroup("UpdateManager");
if (settings.contains("UUID")) {
uuidString = settings.value("UUID").toString();
} else {
QUuid uuid = QUuid::createUuid();
uuidString = uuid.toString();
settings.setValue("UUID", uuidString);
}
uuidString.replace("{", "").replace("}", "");
return uuidString;
}
void UpdateManager::requestReceived()
{
bool haveNewVersion = false;

View file

@ -11,6 +11,7 @@ class UpdateManager : public QObject {
public:
explicit UpdateManager(QObject *parent = 0);
void checkForUpdates(bool automatic = false);
static QString getUUID();
public
slots:

View file

@ -6,6 +6,7 @@
#include "ui_usersurvey.h"
#include "ssrf-version.h"
#include "subsurfacewebservices.h"
#include "updatemanager.h"
#include "helpers.h"
#include "subsurfacesysinfo.h"
@ -30,6 +31,7 @@ UserSurvey::UserSurvey(QWidget *parent) : QDialog(parent),
os.append(QString("&osCpuArch=%1").arg(osArch));
}
os.append(QString("&uiLang=%1").arg(uiLanguage(NULL)));
os.append(QString("&uuid=%1").arg(UpdateManager::getUUID()));
ui->system->setPlainText(getVersion());
}