Browse Source

Apply bitmask to user scope

As discussed, this is a method to prevent leaking personally identifiable information through crash reports, while still keeping the useful information for the developers on how widely spread the crashes are.
Ghostkeeper 4 years ago
parent
commit
59669f6bad
1 changed files with 4 additions and 1 deletions
  1. 4 1
      cura/CrashHandler.py

+ 4 - 1
cura/CrashHandler.py

@@ -250,7 +250,10 @@ class CrashHandler:
 
                 scope.set_context("plugins", self.data["plugins"])
 
-                scope.set_user({"id": str(uuid.getnode())})
+                user_id = uuid.getnode()  # On all of Cura's supported platforms, this returns the MAC address which is pseudonymical information (!= anonymous).
+                user_id %= 2 ** 16  # So to make it anonymous, apply a bitmask selecting only the last 16 bits.
+                                    # This prevents it from being traceable to a specific user but still gives somewhat of an idea of whether it's just the same user hitting the same crash over and over again, or if it's widespread.
+                scope.set_user({"id": str(user_id)})
 
         return group