Skip to content

Telecharger le XML selon les droits du user (OS) #400

@Gaetanbrl

Description

@Gaetanbrl

Description

Un bug a été remonté par PETR du Grand Beauvaisis.

Lorsqu'on tente de télécharger la configuration, une erreur 500 est provoqué en raison d'une erreur dans code python de la méthode custom_make_archive :

def custom_make_archive(source, destination):

En effet, le code actuel créé un ZIP dans un répertoire via une URL relative qui n'a pas forcément les mêmes droits que le service (gunicorn). Ce qui peut provoquer une erreur.

Si le service mviewerstudio est lancé en root (ou similaire) sur le serveur, alors il pourra sauvegarder partout sur le serveur. Ce qui pose également un problème car il faut concentrer les fichiers dans un espace facilement identifiable, rangé et contrôlé.

Si le service est exécuté avec un user spécifique (ce qui est recommandé), alors il ne peut écrire que dans un répertoire autorisé en écriture, ce qui provoque l'erreur dans le cas contraire.

Solution

Remplacer :

def custom_make_archive_old(source, destination):
    base = path.basename(destination)
    name = base.split(".")[0]
    format = base.split(".")[1]
    archive_from = path.dirname(source)
    archive_to = path.basename(source.strip(sep))
    make_archive(name, format, archive_from, archive_to)
    move("%s.%s" % (name, format), destination)

... Par

def custom_make_archive(source, destination):
    base_name, ext = path.splitext(destination)
    archive_format = ext.lstrip(".")
    archive_from = path.dirname(source)
    archive_to = path.basename(source.rstrip(sep))
    make_archive(base_name, archive_format, archive_from, archive_to)
``

Metadata

Metadata

Assignees

Labels

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions