Temas/componentes de GitLab dan error 500 al instalar/actualizar

Continuando la discusión de Galería de imágenes Masonry:

El título lo dice todo, supongo.

Después de reconstruir desde 2.9.0.beta11 (208d22cfc2), todos los temas o componentes de GitLab dan error 500 al intentar instalar o actualizar.

¿Es esto un error o algún tipo de problema de seguridad? Mi configuración no tiene nada extraño y es bastante básica.

Esto puede estar relacionado. Sucedió cuando intenté instalar un tema:

Mensaje (se informaron 2 copias)

No se pudo procesar la respuesta secuestrada correctamente: RemoteTheme::ImportError: Error al clonar el repositorio git, se denegó el acceso o no se encontró el repositorio.

Backtrace

/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 Me gusta

¿Te refieres a GitLab o GitHub? ¿Son componentes de temas que funcionaron antes? Podría ser un problema de red esporádico. ¿Podrían los temas a los que estás accediendo haber sido eliminados o protegidos?

Si son públicos, puedes compartir sus URL para que otros puedan intentar acceder a ellos.

GitLab. Los basados en GitHub están bien.

Sí. Y todavía funcionan si se instalan desde zip. Conectarse a Gitlab desde Discourse es el problema ahora.

No y no.

Claro. Puedes probar Masonry Image Gallery — el enlace está en la primera publicación.

No sé nada, pero tengo la corazonada de que la normalización de la URL (o algo similar) cambiará gitlab a github y por eso falta el repositorio.

2 Me gusta

Casi con toda seguridad debido a las correcciones de protecciones SSRF.

Gitlab está redirigiendo 301 una git clone para https://gitlab.com/silentboatman/discourse-masonry-image-gallery a https://gitlab.com/silentboatman/discourse-masonry-image-gallery.git/ (sic, termina en .git/) pero git se llama con -c http.followRedirects=false por lo que falla.

Introducir https://gitlab.com/silentboatman/discourse-masonry-image-gallery.git/ como URL del repositorio directamente no funciona porque FinalDestination.resolve(@uri.to_s) lo revierte a https://gitlab.com/silentboatman/discourse-masonry-image-gallery porque, no te lo vas a creer, cuando se solicita fuera de git, la redirección va en sentido contrario. Gitlab redirige 302 https://gitlab.com/silentboatman/discourse-masonry-image-gallery.git/ a https://gitlab.com/silentboatman/discourse-masonry-image-gallery

EDIT: Usando GIT_CURL_VERBOSE=1 pude ver que Git añade info/refs?service=git-upload-pack al clonar, así que

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

va a

location: https://gitlab.com/silentboatman/discourse-masonry-image-gallery.git/info/refs?service=git-upload-pack
5 Me gusta

Entonces, la Gran Pregunta™ es: ¿qué ha cambiado recientemente? ¿Y cómo podemos (y con podemos me refiero a todos los demás excepto a mí) solucionarlo?

1 me gusta

Alguien está echando un vistazo. :slight_smile: :+1:

5 Me gusta

(Además, parece que la mayoría de las acciones que ahora causan un error al agregar un repositorio muestran un mensaje emergente con solo el texto “500 Server Error” en lugar de un mensaje de error real)

1 me gusta

Creí que esta corrección (abajo) resolvería este problema, pero todavía obtengo el mismo error.

Actualmente estoy en la versión 2.9.0.beta11 +143 (795687160d).

@daniel ¿Está esta corrección relacionada con el problema de este tema?

1 me gusta

Sí, ese commit estaba destinado a solucionar la obtención de datos de GitLab. Acabo de probarlo y ahora puedo clonar repositorios de GitLab, tanto a través de SSH como de HTTP. ¿Podrías dar más detalles sobre lo que estás haciendo exactamente que no funciona?

@Jagster, ¿sigue siendo esto un problema para ti?

4 Me gusta

También he visto que esto falla después de actualizar a beta12.

Parece que el formato de la URL importa.

https://gitlab.com/silentboatman/discourse-masonry-image-gallery/ → error
https://gitlab.com/silentboatman/discourse-masonry-image-gallery → error
https://gitlab.com/silentboatman/discourse-masonry-image-gallery.git → funciona

Eso significa que necesitarás eliminar y volver a agregar componentes de tema que tengan uno de los dos primeros formatos y copiar la configuración. Pero sería genial si esos dos formatos también fueran compatibles de inmediato.

6 Me gusta

Sí, añadir .git al final de la URL parece funcionar. ¡Bien visto!

Aquí tienes más detalles. Instalé discourse-masonry-image-gallery y después de actualizar Discourse recibí el siguiente mensaje de error.

Recuerdo haberlo instalado desde la URL sin .git al final, ya que la URL de ejemplo no termina en .git.

También intenté instalar otro tema de gitlab (sin .git) y recibí el siguiente mensaje.

En la prueba anterior intenté instalar discourse-agora-theme, también un repositorio público de gitlab.

3 Me gusta

Después de beta12 y usando .git funciona perfectamente. Sin embargo, no lo intenté sin .git.

2 Me gusta

Este commit debería solucionar eso:

7 Me gusta

Sí, eso resuelve este problema. ¡Gracias!

2 Me gusta