
خادم ويب متعدد المهام يجمع بين Redfish وKVM وGUI وDBus لنظام OpenBMC
يحاول هذا المكوّن أن يكون خادم ويب مضمّنًا "يفعل كل شيء" لنظام OpenBMC.
ينفّذ خادم الويب عدة واجهات متميزة:
يدعم bmcweb على مستوى البروتوكول http وhttps. يتم دعم TLS عبر OpenSSL. يتم دعم HTTP/1 وHTTP/2 باستخدام تسجيل ALPN لاتصالات TLS وترويسة ترقية h2c لاتصالات http.
يدعم Bmcweb بروتوكولات مصادقة متعددة:
يمكن تمكين أو تعطيل كل نوع من أنواع المصادقة هذه سواء عبر تغييرات سياسة وقت التشغيل (من خلال واجهات برمجة تطبيقات Redfish ذات الصلة) أو عبر خيارات وقت التهيئة. يتم توجيه جميع آليات المصادقة التي تدعم اسم المستخدم/كلمة المرور إلى libpam، للسماح بالتخصيص في تطبيقات المصادقة.
يتم تحديد جميع عمليات التفويض في bmcweb في وقت التوجيه، ولكل مسار، وتتوافق مع سجل الامتيازات PrivilegeRegistry الخاص بـ Redfish.
*ملاحظة: يتم تعيين الوظائف غير التابعة لـ Redfish إلى أقرب مستوى امتياز مكافئ في Redfish.
يتم إعداد bmcweb وفقًا ملفات بناء meson. الخيارات المتاحة موثقة في meson.options.
meson setup builddir
ninja -C builddir
إذا لم يتم العثور على أي من التبعيات على النظام المضيف أثناء الإعداد، سيقوم meson بتنزيلها تلقائيًا عبر تبعيات wrap المذكورة في bmcweb/subprojects.
يعتمد bmcweb على بعض البيانات الموجودة على النظام لتخزين البيانات الثابتة الداخلية للعملية. يمكن الاطلاع على تفاصيل البيانات المخزنة بالضبط ومتى يتم قراءتها/كتابتها من مساحة الاسم persistent_data.
يستخدم bmcweb /tmp/bmcweb لتخزين الملفات المؤقتة أثناء تحميل النماذج متعددة الأجزاء. يتم تنظيف هذا الدليل تلقائيًا بواسطة systemd عند إعادة تشغيل الخدمة عبر توجيه TemporaryFileSystem في ملف الخدمة.
عند تمكين دعم SSL وعدم العثور على شهادة قابلة للاستخدام، سيقوم bmcweb بتوليد شهادة موقعة ذاتيًا قبل تشغيل الخادم. يُرجى الاطلاع على الكود المصدري لـ bmcweb للحصول على تفاصيل حول المعلمات التي يتم بناء هذه الشهادة بها.
يدعم bmcweb أشكالًا مختلفة من ضغط http، بما في ذلك zstd وgzip. يتم فحص ترويسات العميل لتحديد ما إذا كانت الحمولات المضغوطة مدعومة.
bmcweb قادر على تجميع الموارد من وحدات BMC التابعة. راجع AGGREGATION.md لمزيد من المعلومات حول كيفية تمكين هذه الميزة واستخدامها.