Browse Source

Merge branch 'main' into PP-408-improve-raft-quality

Saumya Jain 1 year ago
parent
commit
6709cc8b3e
2 changed files with 10 additions and 0 deletions
  1. 2 0
      plugins/CuraEngineBackend/Cura.proto
  2. 8 0
      plugins/CuraEngineBackend/StartSliceJob.py

+ 2 - 0
plugins/CuraEngineBackend/Cura.proto

@@ -33,6 +33,8 @@ message Slice
     repeated Extruder extruders = 3; // The settings sent to each extruder object
     repeated SettingExtruder limit_to_extruder = 4; // From which stack the setting would inherit if not defined per object
     repeated EnginePlugin engine_plugins = 5;
+    string sentry_id = 6; // The anonymized Sentry user id that requested the slice
+    string cura_version = 7; // The version of Cura that requested the slice
 }
 
 message Extruder

+ 8 - 0
plugins/CuraEngineBackend/StartSliceJob.py

@@ -1,5 +1,7 @@
 #  Copyright (c) 2023 UltiMaker
 #  Cura is released under the terms of the LGPLv3 or higher.
+import uuid
+
 import os
 
 import numpy
@@ -30,6 +32,7 @@ from cura.CuraApplication import CuraApplication
 from cura.Scene.CuraSceneNode import CuraSceneNode
 from cura.OneAtATimeIterator import OneAtATimeIterator
 from cura.Settings.ExtruderManager import ExtruderManager
+from cura.CuraVersion import CuraVersion
 
 
 NON_PRINTING_MESH_SETTINGS = ["anti_overhang_mesh", "infill_mesh", "cutting_mesh"]
@@ -332,6 +335,11 @@ class StartSliceJob(Job):
         self._buildGlobalSettingsMessage(stack)
         self._buildGlobalInheritsStackMessage(stack)
 
+        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.
+        self._slice_message.sentry_id = "{user_id}"
+        self._slice_message.cura_version = CuraVersion
+
         # Build messages for extruder stacks
         for extruder_stack in global_stack.extruderList:
             self._buildExtruderMessage(extruder_stack)