Sentry: generate a UUID for report tracking
Because we don’t have any user-identifier, generate a UUID so that we can filter reports by it.
This commit is contained in:
parent
f78d644a61
commit
5b3f0e5cbb
1 changed files with 34 additions and 0 deletions
|
@ -28,6 +28,7 @@
|
||||||
#include <simgear/props/props.hxx>
|
#include <simgear/props/props.hxx>
|
||||||
#include <simgear/structure/commands.hxx>
|
#include <simgear/structure/commands.hxx>
|
||||||
#include <simgear/structure/exception.hxx>
|
#include <simgear/structure/exception.hxx>
|
||||||
|
#include <simgear/io/iostreams/sgstream.hxx>
|
||||||
|
|
||||||
#include <Main/fg_init.hxx>
|
#include <Main/fg_init.hxx>
|
||||||
#include <Main/fg_props.hxx>
|
#include <Main/fg_props.hxx>
|
||||||
|
@ -61,6 +62,7 @@ auto OSG_messageWhitelist = {
|
||||||
auto XML_messageWhitelist = {
|
auto XML_messageWhitelist = {
|
||||||
"Cannot open file",
|
"Cannot open file",
|
||||||
"not well-formed (invalid token)",
|
"not well-formed (invalid token)",
|
||||||
|
"mismatched tag (from 'SimGear XML Parser')"
|
||||||
};
|
};
|
||||||
|
|
||||||
// we don't want sentry enabled for the test suite
|
// we don't want sentry enabled for the test suite
|
||||||
|
@ -212,6 +214,38 @@ void initSentry()
|
||||||
sentry_options_add_attachment(options, logPath.c_str());
|
sentry_options_add_attachment(options, logPath.c_str());
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
sentry_value_t user = sentry_value_new_object();
|
||||||
|
|
||||||
|
const auto uuidPath = fgHomePath() / "sentry_uuid.txt";
|
||||||
|
bool generateUuid = true;
|
||||||
|
std::string uuid;
|
||||||
|
if (uuidPath.exists()) {
|
||||||
|
sg_ifstream f(uuidPath);
|
||||||
|
std::getline(f, uuid);
|
||||||
|
// if we read enough bytes, that this is a valid UUID, then accept it
|
||||||
|
if ( uuid.length() >= 36) {
|
||||||
|
generateUuid = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// we need to generate a new UUID
|
||||||
|
if (generateUuid) {
|
||||||
|
// use the Sentry APi to generate one
|
||||||
|
sentry_uuid_t su = sentry_uuid_new_v4();
|
||||||
|
char bytes[38];
|
||||||
|
sentry_uuid_as_string(&su, bytes);
|
||||||
|
bytes[37] = 0;
|
||||||
|
|
||||||
|
uuid = std::string{bytes};
|
||||||
|
// write it back to disk for next time
|
||||||
|
sg_ofstream f(uuidPath);
|
||||||
|
f << uuid << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
sentry_value_t userUuidV = sentry_value_new_string(uuid.c_str());
|
||||||
|
sentry_value_set_by_key(user, "id", userUuidV);
|
||||||
|
sentry_set_user(user);
|
||||||
|
|
||||||
sentry_init(options);
|
sentry_init(options);
|
||||||
static_sentryEnabled = true;
|
static_sentryEnabled = true;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue