Jagster
(Jakke Flemming)
11월 2, 2022, 11:44오전
1
Masonry Image Gallery 토론을 이어갑니다:
제목이 모든 것을 말해 주는 것 같습니다.
2.9.0.beta11(208d22cfc2 )로 재빌드한 후, GitLab의 모든 테마나 컴포넌트를 설치하거나 업데이트하려고 하면 500 오류가 발생합니다.
이것은 버그인가요, 아니면 어떤 종류의 보안 문제인가요? 제 설정은 특별히 이상한 점이 없고 꽤 기본적인 구성입니다.
아래와 같은 문제가 관련이 있을 수 있습니다. 테마 하나를 설치하려고 테스트했을 때 발생했습니다:
Message (2 copies reported)
Failed to process hijacked response correctly : RemoteTheme::ImportError : Error cloning git repository, access is denied or repository is not found
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개의 좋아요
pfaffman
(Jay Pfaffman)
11월 2, 2022, 9:08오후
2
GitLab을 말씀하시는 건가요, 아니면 GitHub을 말씀하시는 건가요? 이전에 정상적으로 작동하던 테마 컴포넌트인가요? 일시적인 네트워크 문제일 수도 있습니다. 접근하려는 테마가 삭제되었거나 보호된 상태일 수도 있나요?
공개된 테마라면 다른 사용자가 접근을 시도해 볼 수 있도록 URL을 공유해 주실 수 있습니다.
Jagster
(Jakke Flemming)
11월 2, 2022, 9:13오후
3
GitLab입니다. GitHub 기반의 것들은 아무 문제 없습니다.
네. 그리고 zip 파일로 설치하면 여전히 작동합니다. 현재 문제는 Discourse에서 GitLab에 연결하는 것입니다.
아니요, 아니요.
물론입니다. Masonry Image Gallery를 시도해 보실 수 있습니다. 링크는 첫 번째 게시물에 있습니다.
제가 아는 것은 없지만, URL 정규화(또는 유사한 것)가 gitlab을 github으로 변경하고, 그래서 저장소가 누락되는 것 같다는 직감이 듭니다.
2개의 좋아요
RGJ
(Richard - Communiteq)
11월 2, 2022, 11:00오후
5
거의 확실하게 SSRF 보호 수정 때문일 것입니다.
Gitlab은 https://gitlab.com/silentboatman/discourse-masonry-image-gallery 에 대한 git clone을 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/ 를 직접 입력해도 작동하지 않습니다. git 외부에서 요청할 경우 리다이렉션이 반대 방향으로 이루어지기 때문에 FinalDestination.resolve(@uri.to_s)에 의해 https://gitlab.com/silentboatman/discourse-masonry-image-gallery 로 되돌려지기 때문입니다. 믿기 어렵겠지만, 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개의 좋아요
Jagster
(Jakke Flemming)
11월 2, 2022, 11:11오후
6
자, 이제 대 질문™을 던져 보겠습니다. 최근에는 무엇이 변했나요? 그리고 우리(여기서 '우리’란 저를 제외한 모든 사람을 의미합니다)는 어떻게 그 문제를 해결할 수 있을까요?
1개의 좋아요
RGJ
(Richard - Communiteq)
11월 3, 2022, 7:31오전
8
(또한, 저장소를 추가할 때 오류가 발생하는 대부분의 동작에서 실제 오류 메시지 대신 “500 Server Error” 텍스트만 표시되는 팝업이 나타나는 것 같습니다)
1개의 좋아요
아래의 수정이 이 문제를 해결할 것으로 생각했지만, 여전히 동일한 오류가 발생합니다.
현재 2.9.0.beta11 +143 (795687160d ) 버전을 사용 중입니다.
main ← gitlab-fetch-fix
merged 08:19PM - 03 Nov 22 UTC
This should fix fetching from gitlab.
@daniel 이 수정은 이 주제에서 언급된 문제와 관련이 있나요?
1개의 좋아요
daniel
(Daniel Waterworth)
11월 14, 2022, 10:10오후
11
네, 해당 커밋은 gitlab에서 데이터를 가져오는 문제를 수정하기 위한 것이었습니다. 방금 직접 테스트해 보니 이제 SSH와 HTTP를 통해 모두 gitlab 저장소를 클론할 수 있습니다. 정확히 어떤 작업을 수행할 때 문제가 발생하는지 좀 더 자세히 알려주실 수 있을까요?
@Jagster , 이 문제는 아직 발생하고 있나요?
4개의 좋아요
RGJ
(Richard - Communiteq)
11월 14, 2022, 10:35오후
12
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 → 작동
즉, 첫 두 가지 형식 중 하나를 가진 테마 구성 요소를 삭제한 후 다시 추가하고, 설정을 복사해야 합니다. 하지만 그 두 가지 형식도 기본적으로 지원되면 훨씬 좋겠습니다.
6개의 좋아요
네, URL 끝에 .git를 추가하면 작동하는 것 같습니다. 잘 발견하셨네요!
좀 더 자세한 내용을 공유합니다. discourse-masonry-image-gallery 를 설치했는데, Discourse를 업데이트한 후 다음과 같은 오류 메시지가 나타났습니다.
예시 URL이 .git 로 끝나지 않기 때문에, 처음에는 URL 끝에 .git 없이 설치했던 것으로 기억합니다.
또한 gitlab에서 다른 테마도 (.git 없이) 설치해 보았지만, 다음과 같은 메시지가 떴습니다.
위의 테스트에서는 discourse-agora-theme 도 설치해 보았는데, 이 역시 공개된 gitlab 저장소입니다.
3개의 좋아요
Jagster
(Jakke Flemming)
11월 15, 2022, 9:14오전
14
Daniel Waterworth:
여전히 문제가 되고 있나요?
beta12 버전과 .git를 함께 사용하니 정상적으로 작동합니다. .git 없이 테스트해 보지는 않았습니다.
2개의 좋아요
네, 그 방법으로 이 문제가 해결되었습니다. 감사합니다!
2개의 좋아요