Thèmes/composants de GitLab donnent une erreur 500 lors de l'installation/mise à jour

Continuant la discussion de Galerie d’images Masonry :

Le titre dit tout, je suppose.

Après avoir reconstruit à partir de 2.9.0.beta11 (208d22cfc2), tous les thèmes ou composants de GitLab donnent une erreur 500 lors de l’installation ou de la mise à jour.

Est-ce un bug ou un problème de sécurité ? Ma configuration n’a rien d’étrange et est assez basique.

Cela pourrait être lié. C’est arrivé lorsque j’ai essayé d’installer un thème :

Message (2 copies signalées)

Échec du traitement correct de la réponse détournée : RemoteTheme::ImportError : Erreur lors du clonage du dépôt git, l'accès est refusé ou le dépôt est introuvable

Trace

/var/www/discourse/lib/theme_store/git_importer.rb:81:in `raise_import_error!'
/var/www/discourse/lib/theme_store/git_importer.rb:148:in `rescue in clone_http!'
/var/www/discourse/lib/theme_store/git_importer.rb:145:in `clone_http!'
/var/www/discourse/lib/theme_store/git_importer.rb:93:in `clone!'
/var/www/discourse/lib/theme_store/git_importer.rb:18:in `import!'
/var/www/discourse/app/models/remote_theme.rb:82:in `import_theme'
/var/www/discourse/app/controllers/admin/themes_controller.rb:106:in `block in import'
/var/www/discourse/lib/hijack.rb:56:in `instance_eval'
/var/www/discourse/lib/hijack.rb:56:in `block in hijack'
/var/www/discourse/lib/scheduler/defer.rb:94:in `block in do_work'

Env

HTTP HOSTS: foorumi.katiska.eu
4 « J'aime »

Voulez-vous dire GitLab ou GitHub ? S’agit-il de composants de thème qui fonctionnaient auparavant ? Il pourrait s’agir d’un problème réseau aléatoire. Les thèmes auxquels vous accédez ont-ils pu être supprimés ou protégés ?

S’ils sont publics, vous pouvez partager leurs URL afin que d’autres puissent essayer d’y accéder.

GitLab. Ceux basés sur GitHub sont très bien.

Oui. Et ils fonctionnent toujours s’ils sont installés à partir d’un zip. La connexion à Gitlab depuis Discourse est le problème maintenant.

Non et non.

Bien sûr. Vous pouvez essayer Masonry Image Gallery — le lien se trouve dans le premier message.

Je ne sais rien, mais j’ai le pressentiment que la normalisation de l’URL (ou quelque chose de similaire) changera gitlab en github et c’est pourquoi le dépôt est manquant.

2 « J'aime »

Presque certainement à cause des correctifs de protection SSRF.

Gitlab redirige en 301 un git clone pour https://gitlab.com/silentboatman/discourse-masonry-image-gallery vers https://gitlab.com/silentboatman/discourse-masonry-image-gallery.git/ (sic, se termine par .git/) mais git est appelé avec -c http.followRedirects=false, donc cela échoue.

Entrer https://gitlab.com/silentboatman/discourse-masonry-image-gallery.git/ comme URL de dépôt directement ne fonctionne pas car cela est retransformé en https://gitlab.com/silentboatman/discourse-masonry-image-gallery par FinalDestination.resolve(@uri.to_s) car, vous ne le croirez pas, lorsqu’il est demandé en dehors de git, la redirection se fait dans l’autre sens ! Gitlab redirige en 302 https://gitlab.com/silentboatman/discourse-masonry-image-gallery.git/ vers https://gitlab.com/silentboatman/discourse-masonry-image-gallery

EDIT en utilisant GIT_CURL_VERBOSE=1, j’ai pu voir que Git ajoute info/refs?service=git-upload-pack lors du clonage, donc

GET /silentboatman/discourse-masonry-image-gallery/info/refs?service=git-upload-pack HTTP/2

va vers

location: https://gitlab.com/silentboatman/discourse-masonry-image-gallery.git/info/refs?service=git-upload-pack
5 « J'aime »

Alors, la grosse question™ est : qu’est-ce qui a changé récemment ? Et comment nous (et par nous, j’entends tout le monde sauf moi) pouvons-nous résoudre cela ?

1 « J'aime »

Quelqu’un regarde. :slight_smile: :+1:

5 « J'aime »

(De plus, il semble que la plupart des actions qui provoquent une erreur lors de l’ajout d’un dépôt affichent désormais une fenêtre contextuelle avec uniquement le texte « Erreur du serveur 500 » au lieu d’un message d’erreur réel)

1 « J'aime »

Je pensais que cette correction (ci-dessous) résoudrait ce problème, mais j’obtiens toujours la même erreur.

Je suis actuellement sur la version 2.9.0.beta11 +143 (795687160d).

@daniel Cette correction est-elle liée au problème abordé dans ce sujet ?

1 « J'aime »

Oui, ce commit était censé corriger la récupération depuis gitlab. Je viens de l’essayer et je peux maintenant cloner depuis des dépôts gitlab, via SSH et via HTTP. Pourriez-vous donner plus de détails sur ce que vous faites exactement qui ne fonctionne pas ?

@Jagster, est-ce toujours un problème pour vous ?

4 « J'aime »

J’ai également vu cet échec après la mise à jour vers beta12.

Il semble que le format de l’URL soit important.

https://gitlab.com/silentboatman/discourse-masonry-image-gallery/ –> erreur
https://gitlab.com/silentboatman/discourse-masonry-image-gallery –> erreur
https://gitlab.com/silentboatman/discourse-masonry-image-gallery.git –> fonctionne

Cela signifie que vous devrez supprimer et réajouter les composants de thème qui ont l’un des deux premiers formats, et copier la configuration. Mais ce serait vraiment bien si ces deux formats étaient également pris en charge dès la sortie de la boîte.

6 « J'aime »

Oui, ajouter .git à la fin de l’URL semble fonctionner. Bien vu !

Voici plus de détails. J’ai installé discourse-masonry-image-gallery et après avoir mis à jour Discourse, j’ai reçu le message d’erreur suivant.

Je me souviens l’avoir installé à partir de l’URL sans .git à la fin, car l’URL d’exemple ne se termine pas par .git.

J’ai également essayé d’installer un autre thème depuis gitlab (sans .git) et j’ai reçu le message suivant.

Dans le test ci-dessus, j’ai essayé d’installer discourse-agora-theme, également un dépôt gitlab public.

3 « J'aime »

Après la beta12 et l’utilisation de .git, cela fonctionne très bien. Je n’ai pas essayé sans .git, cependant.

2 « J'aime »

Ce commit devrait corriger cela :

7 « J'aime »

Oui, cela résout ce problème. Merci !

2 « J'aime »