GitLabのテーマ/コンポーネントのインストール/アップデート時にエラー500が発生します

Masonry Image Gallery の議論の続きです。

タイトルがすべてを物語っていると思います。

2.9.0.beta11 (208d22cfc2) から再構築した後、GitLab のすべてのテーマまたはコンポーネントが、インストールまたは更新時にエラー 500 を発生させます。

これはバグですか、それとも何らかのセキュリティ問題ですか?私のセットアップには何も変わった点はなく、非常に基本的なものです。

これは関連があるかもしれません。テーマをインストールしようとテストしたときに発生しました。

メッセージ (2件報告あり)

乗っ取られたレスポンスを正しく処理できませんでした: RemoteTheme::ImportError : git リポジトリのクローンに失敗しました。アクセスが拒否されたか、リポジトリが見つかりません。

バックトレース

/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'

環境

HTTP HOSTS: foorumi.katiska.eu
「いいね!」 4

GitLabまたはGitHubのどちらを意味していますか?これらは以前に機能していたテーマコンポーネントですか?ネットワークの問題である可能性があります。アクセスしようとしているテーマは削除されたか、保護された可能性がありますか?

公開されている場合は、他の人がアクセスを試みることができるようにURLを共有できます。

GitLabです。GitHubベースのものは問題ありません。

はい。ZIPからインストールすれば、まだ機能しています。DiscourseからGitlabに接続するのが現在の問題です。

いいえ、どちらでもありません。

はい。Masonry Image Galleryをお試しください。リンクは最初の投稿にあります。

何も分かりませんが、URLの正規化(またはそれに類するもの)がGitlabをGithubに変更するため、リポジトリが見つからないという予感がします。

「いいね!」 2

ほぼ確実にSSRF保護の修正によるものです。

Gitlabはgit clonehttps://gitlab.com/silentboatman/discourse-masonry-image-galleryからhttps://gitlab.com/silentboatman/discourse-masonry-image-gallery.git/(注意:末尾が.git/)へ301リダイレクトしますが、gitは-c http.followRedirects=falseで呼び出されるため失敗します。

リポジトリURLとしてhttps://gitlab.com/silentboatman/discourse-masonry-image-gallery.git/を直接入力しても機能しません。なぜなら、FinalDestination.resolve(@uri.to_s)によってhttps://gitlab.com/silentboatman/discourse-masonry-image-galleryに戻されてしまうからです。信じられないかもしれませんが、git以外でリクエストされた場合、リダイレクトは逆方向に機能します!Gitlabはhttps://gitlab.com/silentboatman/discourse-masonry-image-gallery.git/https://gitlab.com/silentboatman/discourse-masonry-image-galleryへ302リダイレクトします。

編集:GIT_CURL_VERBOSE=1を使用して、gitがクローン時にinfo/refs?service=git-upload-packを付加していることがわかりました。したがって、

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

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

へ行きます。

「いいね!」 5

そこで、大きな疑問(™)は、最近何が変わったのか? そして、私たち(ここでいう私たちとは、私以外の全員のことです)はどうすればそれを修正できるのか?

「いいね!」 1

誰か見ていますよ。 :slight_smile: :+1:

「いいね!」 5

(さらに、リポジトリを追加する際にエラーが発生するほとんどのアクションが、実際のエラーメッセージではなく、「500 Server Error」というテキストのみのポップアップを表示するようになったようです)

「いいね!」 1

この修正(下記)でこの問題が解決すると思いましたが、まだ同じエラーが発生しています。

現在、2.9.0.beta11 +143 (795687160d) を使用しています。

@daniel この修正はこのトピックの問題に関連していますか?

「いいね!」 1

はい、そのコミットはGitLabからの取得を修正するためのものでした。SSHとHTTPの両方でGitLabリポジトリからクローンできるようになりました。何がうまくいかないのか、もう少し詳しく教えていただけますか?

@Jagster、これはまだ問題ですか?

「いいね!」 4

beta12 にアップデートした後も、これが失敗するのを確認しました。

URL の形式が重要であるようです。

https://gitlab.com/silentboatman/discourse-masonry-image-gallery/ → エラー
https://gitlab.com/silentboatman/discourse-masonry-image-gallery → エラー
https://gitlab.com/silentboatman/discourse-masonry-image-gallery.git → 正常に動作

つまり、最初の 2 つの形式のいずれかを持つテーマコンポーネントを削除して再追加し、構成をコピーする必要があります。しかし、これら 2 つの形式も標準でサポートされていると非常にクールです。

「いいね!」 6

はい、URLの末尾に.gitを追加すると機能するようです。素晴らしい発見です!

詳細はこちらです。discourse-masonry-image-galleryをインストールし、Discourseをアップデートしたところ、以下のエラーメッセージが表示されました。

例のURLの末尾には*.gitが付いていなかったので、.git*を付けずにインストールしたことを覚えています。

また、別のテーマをgitlabから(.gitなしで)インストールしようとして、以下のメッセージが表示されました。

上記のテストでは、discourse-agora-theme(これも公開されているgitlabリポジトリです)をインストールしようとしました。

「いいね!」 3

beta12と.gitを使用した後は問題なく動作します。ただし、.gitなしでは試していません。

「いいね!」 2

このコミットで修正されるはずです。

「いいね!」 7

はい、これでこの問題は解決しました。ありがとうございます!

「いいね!」 2