
مستودع Spring Cloud Gateway يوضح استغلال CVE-2022-22947 لاختبار أمان API وتحليل الثغرات.
//// لا تقم بتحرير هذا الملف. لقد تم إنشاؤه آلياً. سيتم فقدان التغييرات اليدوية لهذا الملف عند إعادة إنشائه. قم بتحرير الملفات الموجودة في مجلد src/main/asciidoc/ بدلاً من ذلك. ////
image::https://circleci.com/gh/spring-cloud/spring-cloud-gateway/tree/master.svg?style=svg["CircleCI", link="https://circleci.com/gh/spring-cloud/spring-cloud-gateway/tree/master"] image::https://codecov.io/gh/spring-cloud/spring-cloud-gateway/branch/master/graph/badge.svg["Codecov", link="https://codecov.io/gh/spring-cloud/spring-cloud-gateway/branch/master"] image::https://api.codacy.com/project/badge/Grade/a6885a06921e4f72a0df0b7aabd6d118["Codacy code quality", link="https://www.codacy.com/app/spring-cloud/spring-cloud-gateway?utm_source=github.com&utm_medium=referral&utm_content=spring-cloud/spring-cloud-gateway&utm_campaign=Badge_Grade"]
هذا المشروع يوفر بوابة API (API Gateway) مبنية فوق نظام Spring البيئي، وتشمل: Spring 5 وSpring Boot 2 وProject Reactor. تهدف Spring Cloud Gateway إلى توفير طريقة بسيطة وفعالة لتوجيه الطلبات إلى واجهات برمجة التطبيقات (APIs) وتقديم خدمات عرضية لها مثل: الأمان والمراقبة/المقاييس والمرونة.
== الميزات
DiscoveryClient من Spring Cloud لتكوين المسارات== البناء
:jdkversion: 1.8
=== التجميع الأساسي والاختبار
لبناء المصدر، ستحتاج إلى تثبيت JDK {jdkversion}.
يستخدم Spring Cloud أداة Maven لمعظم أنشطة البناء، ويجب أن تكون قادراً على البدء بسرعة عن طريق استنساخ المشروع الذي تهتم به وكتابة:
ملاحظة: يمكنك أيضاً تثبيت Maven (>=3.3.3) بنفسك وتشغيل الأمر mvn بدلاً من ./mvnw في الأمثلة أدناه. إذا قمت بذلك، فقد تحتاج أيضاً إلى إضافة -P spring إذا كانت إعدادات Maven المحلية لديك لا تحتوي على تعريفات المستودعات للقطع الأثرية ما قبل الإصدار من Spring.
ملاحظة: كن على علم أنك قد تحتاج إلى زيادة مقدار الذاكرة المتاحة لـ Maven عن طريق تعيين متغير بيئة MAVEN_OPTS بقيمة مثل -Xmx512m -XX:MaxPermSize=128m. نحاول تغطية ذلك في إعدادات .mvn، لذا إذا وجدت أنك مضطر للقيام بذلك لنجاح البناء، فيرجى رفع تذكرة لإضافة الإعدادات إلى التحكم في المصدر.
المشاريع التي تتطلب برمجيات وسيطة (مثل Redis) للاختبار تتطلب عموماً تثبيت وتشغيل نسخة محلية من Docker.
=== التوثيق
وحدة spring-cloud-build تحتوي على ملف تعريف "docs"، وإذا قمت بتفعيله، سيحاول بناء مصادر asciidoc من src/main/asciidoc. كجزء من هذه العملية، سيبحث عن ملف README.adoc ويعالجه عن طريق تحميل جميع التضمينات، ولكن دون تحليله أو عرضه، فقط نسخه إلى ${main.basedir} (الافتراضي هو ${basedir}، أي جذر المشروع). إذا حدثت أي تغييرات في README، فستظهر بعد بناء Maven كملف معدّل في المكان الصحيح. فقط قم بتنفيذ الالتزام (commit) وادفع التغيير.
=== العمل مع الكود إذا لم تكن لديك تفضيلات لبيئة تطوير متكاملة (IDE)، نوصي باستخدام https://www.springsource.com/developer/sts[Spring Tools Suite] أو https://eclipse.org[Eclipse] عند العمل مع الكود. نستخدم إضافة https://eclipse.org/m2e/[m2eclipse] في Eclipse لدعم Maven. يجب أن تعمل بيئات التطوير والأدوات الأخرى أيضاً دون مشاكل طالما تستخدم Maven 3.3.3 أو أفضل.
==== تفعيل ملف تعريف Maven الخاص بـ Spring تتطلب مشاريع Spring Cloud تفعيل ملف تعريف Maven "spring" لحل مستودعات الإصدارات التجريبية والإصدارات اللحظية من Spring. استخدم بيئة التطوير المفضلة لديك لتعيين هذا الملف التعريفي كفعال، وإلا قد تواجه أخطاء في البناء.
==== الاستيراد إلى Eclipse باستخدام m2eclipse نوصي بإضافة https://eclipse.org/m2e/[m2eclipse] في Eclipse عند العمل مع Eclipse. إذا لم يكن m2eclipse مثبتاً لديك بالفعل، فهو متاح من "سوق Eclipse".
ملاحظة: الإصدارات القديمة من m2e لا تدعم Maven 3.3، لذا بمجرد استيراد المشاريع إلى Eclipse، ستحتاج أيضاً إلى إخبار m2eclipse باستخدام الملف التعريفي الصحيح للمشاريع. إذا رأيت العديد من الأخطاء المختلفة المتعلقة بملفات POM في المشاريع، تحقق من أن لديك تثبيتاً محدّثاً. إذا لم تتمكن من ترقية m2e، أضف ملف التعريف "spring" إلى ملف settings.xml الخاص بك. بدلاً من ذلك، يمكنك نسخ إعدادات المستودع من ملف التعريف "spring" في ملف pom الرئيسي إلى ملف settings.xml الخاص بك.
==== الاستيراد إلى Eclipse بدون m2eclipse إذا كنت تفضل عدم استخدام m2eclipse، يمكنك إنشاء بيانات تعريف مشروع Eclipse باستخدام الأمر التالي:
$ ./mvnw eclipse:eclipse
يمكن استيراد مشاريع Eclipse المُنشأة عن طريق اختيار import existing projects من قائمة file.
== المساهمة
:spring-cloud-build-branch: master
تم إصدار Spring Cloud بموجب ترخيص Apache 2.0 غير المقيد، ويتبع عملية تطوير قياسية على Github، باستخدام متتبع Github للمشكلات ودمج طلبات السحب (pull requests) إلى master. إذا كنت ترغب في المساهمة حتى بأمر بسيط، فلا تتردد، ولكن اتبع الإرشادات أدناه.
=== توقيع اتفاقية المساهمة (Contributor License Agreement) قبل قبول أي تصحيح أو طلب سحب غير بسيط، سنحتاج منك توقيع https://cla.pivotal.io/sign/spring[اتفاقية المساهمة (CLA)]. توقيع اتفاقية المساهم لا يمنح أي شخص حقوق الالتزام (commit) في المستودع الرئيسي، ولكنه يعني أنه يمكننا قبول مساهماتك، وستحصل على سمة المؤلف إذا فعلنا ذلك. قد يُطلب من المساهمين النشطين الانضمام إلى الفريق الأساسي، ومنحهم القدرة على دمج طلبات السحب.
=== مدونة السلوك يلتزم هذا المشروع بـ https://github.com/spring-cloud/spring-cloud-build/blob/master/docs/src/main/asciidoc/code-of-conduct.adoc[مدونة السلوك] الخاصة بـ Contributor Covenant. من خلال المشاركة، يُتوقع منك الالتزام بهذه المدونة. يرجى الإبلاغ عن السلوك غير المقبول إلى [email protected].
=== اتفاقيات الكود والترتيبات المنزلية لا شيء من هذه الأمور ضروري لطلب السحب، ولكنها ستساعد جميعها. يمكن إضافتها أيضاً بعد طلب السحب الأصلي ولكن قبل الدمج.
eclipse-code-formatter.xml من مشروع https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/spring-cloud-dependencies-parent/eclipse-code-formatter.xml[Spring Cloud Build]. إذا كنت تستخدم IntelliJ، يمكنك استخدام https://plugins.jetbrains.com/plugin/6546[إضافة Eclipse Code Formatter] لاستيراد نفس الملف..java الجديدة تحتوي على تعليق Javadoc بسيط للفئة مع علامة @author على الأقل تحدد هويتك، ويفضل أن يكون هناك فقرة واحدة على الأقل حول الغرض من الفئة..java الجديدة (انسخ من الملفات الموجودة في المشروع).@author في ملفات .java التي تعدلها بشكل جوهري (أكثر من تغييرات تجميلية).Fixes gh-XXXX في نهاية رسالة الالتزام (حيث XXXX هو رقم المشكلة).=== Checkstyle
يأتي Spring Cloud Build مع مجموعة من قواعد checkstyle. يمكنك العثور عليها في وحدة spring-cloud-build-tools. الملفات الأكثر بروزاً تحت الوحدة هي:
<1> قواعد Checkstyle الافتراضية <2> إعداد رأس الملف <3> قواعد الإلغاء الافتراضية
==== تهيئة Checkstyle
قواعد Checkstyle معطلة افتراضياً. لإضافة checkstyle إلى مشروعك، فقط حدد الخصائص والإضافات التالية.