Themes/components من GitLab تعطي خطأ 500 عند التثبيت/التحديث

متابعة للمناقشة من Masonry Image Gallery:

العنوان يخبر كل شيء، أعتقد.

بعد أن قمت بإعادة البناء من 2.9.0.beta11 (208d22cfc2)، كل الثيمات أو المكونات من GitLab تعطي خطأ 500 عند محاولة التثبيت أو التحديث.

هل هذا خطأ أم مشكلة أمنية؟ إعداداتي لا تحتوي على أي شيء غريب وهي أساسية جدًا.

قد يكون هذا مرتبطًا. ظهر عندما كنت أحاول اختبار تثبيت ثيم:

رسالة (تم الإبلاغ عن نسختين)

فشل في معالجة الاستجابة المختطفة بشكل صحيح: 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 تعمل بشكل جيد.

نعم. وما زالت تعمل إذا تم تثبيتها من ملف مضغوط. الاتصال بـ Gitlab من Discourse هو المشكلة الآن.

لا ولا.

بالتأكيد. يمكنك تجربة Masonry Image Gallery — الرابط موجود في المنشور الأول.

لا أعرف شيئًا ولكن لدي شعور بأن تطبيع عنوان URL (أو شيء مشابه) سيغير gitlab إلى github ولهذا السبب المستودع مفقود.

إعجابَين (2)

على الأرجح بسبب إصلاحات حماية SSRF.

يقوم Gitlab بإعادة توجيه git clone من https://gitlab.com/silentboatman/discourse-masonry-image-gallery إلى https://gitlab.com/silentboatman/discourse-masonry-image-gallery.git/ (ملاحظة، ينتهي بـ .git/) باستخدام 301، ولكن يتم استدعاء git باستخدام -c http.followRedirects=false لذلك يفشل.

إدخال https://gitlab.com/silentboatman/discourse-masonry-image-gallery.git/ كعنوان URL للمستودع مباشرة لا يعمل لأنه يتم التراجع عنه إلى https://gitlab.com/silentboatman/discourse-masonry-image-gallery بواسطة FinalDestination.resolve(@uri.to_s) لأنه، لن تصدق، عند طلبه خارج 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. لقد جربته للتو وأنا قادر على استنساخ مستودعات gitlab الآن، سواء عبر SSH أو عبر HTTP. هل يمكنك تقديم المزيد من التفاصيل حول ما تفعله بالضبط والذي لا يعمل؟

@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 – يعمل

هذا يعني أنك ستحتاج إلى إزالة وإعادة إضافة مكونات السمات التي تحتوي على أحد التنسيقين الأولين، ونسخ الإعدادات. ولكن سيكون من الرائع جدًا إذا تم دعم هذين التنسيقين أيضًا.

6 إعجابات

نعم، يبدو أن إضافة .git في نهاية عنوان URL تعمل. اكتشاف رائع!

إليك المزيد من التفاصيل. قمت بتثبيت discourse-masonry-image-gallery وبعد تحديث Discourse تلقيت رسالة الخطأ التالية.

أتذكر أنني قمت بتثبيته من عنوان URL بدون .git في النهاية نظرًا لأن عنوان URL للمثال لا ينتهي بـ .git.

لقد حاولت أيضًا تثبيت سمة أخرى من gitlab (بدون .git) وتلقيت الرسالة التالية.

في الاختبار أعلاه، حاولت تثبيت discourse-agora-theme، وهو أيضًا مستودع gitlab عام.

3 إعجابات

بعد الإصدار التجريبي 12 واستخدام .git، يعمل الأمر بشكل جيد. لم أجرب بدون .git، مع ذلك.

إعجابَين (2)

هذا الالتزام يجب أن يصلح ذلك:

7 إعجابات

نعم، هذا يحل هذه المشكلة. شكرًا!

إعجابَين (2)