Skip to Content

Flarum

التكامل الرسمي لـ ProxyTracer مع منصة Flarum. يضيف هذا الامتداد استخبارات IP المؤسسية لمجتمعك، ويكتشف تلقائياً شبكات VPN والبروكسيات ومراكز البيانات وعقد Tor المعروفة، ويمنحك خيار منعهم من التسجيل، أو تسجيل الدخول، أو عرض منتدى Flarum بالكامل.

يمكن العثور على الكود المصدري الكامل على Github. يتم توزيع الامتداد عبر Packagist.

الميزات

  • تحكم دقيق يسمح للمشرفين بفرض التحقق من IP أثناء تسجيل المستخدمين الجدد، أو مصادقة المستخدمين الحاليين، أو عالمياً لجميع زوار الموقع.
  • تخزين مؤقت مدمج باستخدام واجهة Laravel Cache الأصلية في Flarum يخزن تقييمات عناوين IP الحديثة، مما يقلل استدعاءات API الخارجية ويضمن صفر زمن تأخير.
  • في حال انقضاء مهلة API أو انقطاع الشبكة، يمنح الامتداد الأولوية لوصول المستخدم (fail-open) لمنع حالات الحظر واسعة النطاق. يمكن تبديل هذا السلوك في الإعدادات.
  • دعم مدمج للقائمة البيضاء لعناوين IP المحددة ونطاقات شبكات CIDR (مثل 192.168.1.0/24).

التثبيت

  1. اتصل بخادمك عبر SSH وتوجه إلى مجلد جذر Flarum (حيث يوجد ملف composer.json):
    cd /var/www/flarum
  2. ثبت الامتداد عبر Composer:
    composer require proxytracer/flarum-proxytracer
  3. امسح الذاكرة المؤقتة لـ Flarum لتجميع أصول الواجهة الأمامية الجديدة:
    php flarum cache:clear

التكوين:

  1. احصل على مفتاح API قياسي من لوحة تحكم ProxyTracer.
  2. انتقل إلى لوحة إدارة Flarum: الإدارة ← الميزات ← ProxyTracer لفتح نافذة الإعدادات.
  3. أدخل مفتاح API الخاص بك في حقل API Key.
  4. قم بتفعيل معلمات الحماية بتبديل Block Signups و Block Logins و/أو Block All Site Access.
  5. أضف أي عناوين IP أو نطاقات CIDR موثوقة إلى IP Whitelist (سطر لكل عنوان).
  6. (اختياري) اضبط مهلة API وحدود انتهاء صلاحية التخزين المؤقت بما يناسب متطلبات حركة المرور لديك.
  7. (اختياري) خصص رسالة الحظر التي تظهر للمستخدمين المحظورين. على سبيل المثال، يمكنك إضافة إرشادات للتواصل مع إدارة الموقع في حال اعتقدوا أن الحظر غير مبرر.

Settings Screenshot

تكوين الشبكة: Cloudflare والبروكسيات العكسية

لكي يعمل ProxyTracer بفعالية، يجب أن يتلقى تطبيق Flarum عنوان IP الحقيقي للعميل. إذا كانت بنيتك التحتية تستخدم Cloudflare أو بروكسي عكسي آخر، فقد يسجل Flarum افتراضياً عنوان عقدة البروكسي (مثل خوادم حافة Cloudflare)، مما يجعل عمل ProxyTracer غير دقيق.

يرجى اتباع إرشادات التكوين أدناه المطابقة لبنية خادمك لضمان التمرير الدقيق لـ IP.

التكامل المباشر مع Cloudflare (التثبيت القياسي)

إذا كان خادم Flarum الخاص بك يتصل مباشرة بالإنترنت ويستخدم Cloudflare حصرياً لـ DNS والبروكسي الحافي، يمكنك استخدام تجاوز Cloudflare المدمج في الامتداد.

داخل إعدادات ProxyTracer في Flarum، ما عليك سوى تفعيل خيار Extract IPs from Cloudflare Headers.

سيستخرج ProxyTracer تلقائياً عنوان IP الحقيقي للعميل من ترويسة CF-Connecting-IP الخاصة بـ Cloudflare. ملاحظة: قم بتفعيل هذا الإعداد فقط إذا كان خادمك يواجه Cloudflare مباشرة. قد يسمح تفعيل هذا في إعداد لا يستخدم Cloudflare للمستخدمين الخبثاء بتجاوز القيود بتزييف ترويسات IP.

بنية البروكسي متعددة الطبقات (Cloudflare + بروكسي عكسي محلي)

ينطبق هذا إذا كان مثيل Flarum موجهاً عبر لوحة إدارة خادم محلية أو بروكسي عكسي (مثل Nginx Proxy Manager أو CloudPanel أو Traefik أو Plesk) موجود خلف Cloudflare. في بنية البروكسي العكسي متعددة الطبقات (أو المزدوجة)، لا يكفي التبديل البسيط لأن حركة المرور تسلم لـ Flarum بواسطة واجهة شبكتك المحلية وليس مباشرة من Cloudflare.

يجب عليك تكوين البروكسي العكسي المحلي لاستخراج IP الحقيقي للعميل من ترويسة CF-Connecting-IP، ولكن فقط لحركة المرور القادمة من عناوين IP الموثوقة لـ Cloudflare. تمرير هذه الترويسة دون التحقق من المصدر يسمح للمستخدمين الخبثاء بتجاوز الحدود والحظر بتزييف عنوان IP الخاص بهم.

مثال Nginx: أولاً، حدد نطاقات IP لـ Cloudflare كبروكسيات موثوقة في تكوين كتلة الخادم لديك (خارج كتلة location). يوفر تثبيت عناوين IP هذه على مستوى Nginx أعلى مستوى من السرعة والأمان.
# عناوين IPv4 لـ Cloudflare، راجع [https://www.cloudflare.com/ips/](https://www.cloudflare.com/ips/) set_real_ip_from 173.245.48.0/20; set_real_ip_from 103.21.244.0/22; set_real_ip_from 103.22.200.0/22; set_real_ip_from 103.31.4.0/22; set_real_ip_from 141.101.64.0/18; set_real_ip_from 108.162.192.0/18; set_real_ip_from 190.93.240.0/20; set_real_ip_from 188.114.96.0/20; set_real_ip_from 197.234.240.0/22; set_real_ip_from 198.41.128.0/17; set_real_ip_from 162.158.0.0/15; set_real_ip_from 104.16.0.0/13; set_real_ip_from 104.24.0.0/14; set_real_ip_from 172.64.0.0/13; set_real_ip_from 131.0.72.0/22; # عناوين IPv6 لـ Cloudflare set_real_ip_from 2405:b500::/32; set_real_ip_from 2405:8100::/32; set_real_ip_from 2803:f800::/32; set_real_ip_from 2c0f:f248::/32; set_real_ip_from 2a06:98c0::/29; real_ip_header CF-Connecting-IP;

بعد ذلك، حدد تعليمة location /. بفضل التكوين أعلاه، سيحل Nginx الآن $remote_addr بأمان إلى عنوان IP الحقيقي للعميل فقط إذا مر الطلب بالفعل عبر Cloudflare. عدل ترويسات تمرير IP كالتالي:

location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; ... }

احفظ التكوين وأعد تحميل خدمة Nginx (systemctl reload nginx).

الوصول في حالات الطوارئ

💡
أغلقت على نفسك؟ إذا قمت بحظر عنوان IP الخاص بك بالخطأ أثناء تكوين ProxyTracer (على سبيل المثال، كنت متصلاً بـ VPN وكان خيار "حظر الكل" مفعلاً)، يمكنك استعادة الوصول بتعطيل الامتداد مباشرة عبر SSH:
cd /var/www/flarum php flarum extension:disable proxytracer-proxytracer php flarum cache:clear
(إذا كنت تستخدم Docker، شغّل هذه الأوامر داخل حاوية PHP لديك). بدلاً من ذلك، يمكنك تعطيله عبر قاعدة البيانات: افتح جدول settings، وحدد مفتاح proxytracer.block_all، وغيّر قيمته إلى 0، ثم شغّل php flarum cache:clear.

الترخيص

هذا البرنامج مرخص بموجب رخصة جنو أفيرو العمومية الإصدار 3.0 (AGPLv3). راجع ملف LICENSE للتفاصيل الكاملة.

آخر تحديث في