-
Notifications
You must be signed in to change notification settings - Fork 27
Description
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)
``