mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-06 22:47:29 -06:00
Add possibility to check material-profiles.
Needed to add the filename to deserialize, feels a bit unsafe as an optional parameter, will discuss tomorrow. part of CURA-6856
This commit is contained in:
parent
7780d76eb6
commit
298eb27c7f
3 changed files with 15 additions and 3 deletions
|
@ -247,7 +247,7 @@ class ContainerManager(QObject):
|
||||||
|
|
||||||
try:
|
try:
|
||||||
with open(file_url, "rt", encoding = "utf-8") as f:
|
with open(file_url, "rt", encoding = "utf-8") as f:
|
||||||
container.deserialize(f.read())
|
container.deserialize(f.read(), file_url)
|
||||||
except PermissionError:
|
except PermissionError:
|
||||||
return {"status": "error", "message": "Permission denied when trying to read the file."}
|
return {"status": "error", "message": "Permission denied when trying to read the file."}
|
||||||
except ContainerFormatError:
|
except ContainerFormatError:
|
||||||
|
|
|
@ -157,7 +157,7 @@ class LegacyProfileReader(ProfileReader):
|
||||||
data = stream.getvalue()
|
data = stream.getvalue()
|
||||||
|
|
||||||
profile = InstanceContainer(profile_id)
|
profile = InstanceContainer(profile_id)
|
||||||
profile.deserialize(data) # Also performs the version upgrade.
|
profile.deserialize(data, file_name) # Also performs the version upgrade.
|
||||||
profile.setDirty(True)
|
profile.setDirty(True)
|
||||||
|
|
||||||
#We need to return one extruder stack and one global stack.
|
#We need to return one extruder stack and one global stack.
|
||||||
|
|
|
@ -15,8 +15,9 @@ import UM.Dictionary
|
||||||
from UM.Settings.InstanceContainer import InstanceContainer
|
from UM.Settings.InstanceContainer import InstanceContainer
|
||||||
from UM.Settings.ContainerRegistry import ContainerRegistry
|
from UM.Settings.ContainerRegistry import ContainerRegistry
|
||||||
from UM.ConfigurationErrorMessage import ConfigurationErrorMessage
|
from UM.ConfigurationErrorMessage import ConfigurationErrorMessage
|
||||||
|
from UM.Trust import Trust
|
||||||
|
|
||||||
from cura.CuraApplication import CuraApplication
|
from cura.CuraApplication import ApplicationMetadata, CuraApplication
|
||||||
from cura.Machines.ContainerTree import ContainerTree
|
from cura.Machines.ContainerTree import ContainerTree
|
||||||
from cura.Machines.VariantType import VariantType
|
from cura.Machines.VariantType import VariantType
|
||||||
|
|
||||||
|
@ -470,6 +471,17 @@ class XmlMaterialProfile(InstanceContainer):
|
||||||
|
|
||||||
## Overridden from InstanceContainer
|
## Overridden from InstanceContainer
|
||||||
def deserialize(self, serialized, file_name = None):
|
def deserialize(self, serialized, file_name = None):
|
||||||
|
|
||||||
|
# NOTE: In an enterprise environment, IT might not trust every material package the user installs.
|
||||||
|
# In that case, check if this package is trusted first, and return prematurely if not.
|
||||||
|
if file_name is not None and ApplicationMetadata.CuraIsEnterpriseVersion:
|
||||||
|
from UM.Application import Application
|
||||||
|
install_prefix = os.path.abspath(Application.getInstallPrefix())
|
||||||
|
common_path = os.path.commonpath([install_prefix, file_name])
|
||||||
|
if common_path is None or not common_path.startswith(install_prefix):
|
||||||
|
if not Trust.getInstance().signedFileCheck(file_name):
|
||||||
|
raise Exception("Trust-check failed for material file {0}.".format(file_name))
|
||||||
|
|
||||||
containers_to_add = []
|
containers_to_add = []
|
||||||
# update the serialized data first
|
# update the serialized data first
|
||||||
from UM.Settings.Interfaces import ContainerInterface
|
from UM.Settings.Interfaces import ContainerInterface
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue