مشاكل وحلول

مشكلة تفعيل الترخيص في بعض المواقع

عصام القلالي
20 يناير 2022

تعتبر مشكلة تفعيل الترخيص في بعض المواقع شائعة . إليك كيف يمكن التحقق من هذا المشكل :

أسباب المشكلة المتعلقة بالاستضافة:

  1. منع طلبات cURL:
    • نظام الترخيص يعتمد على cURL أو وسائل مشابهة لإرسال واستقبال البيانات بين الموقع الذي تحاول تفعيل الترخيص عليه والخادم الذي يستضيف الرخصة . إذا كانت شركة الاستضافة تمنع أو تحد من استخدام cURL أو توقف هذه الاتصالات الخارجية، فلن تتمكن من التحقق من صحة الترخيص وتفعيله.
  2. جدران الحماية (Firewall):
    • قد يكون لدى شركة الاستضافة جدار حماية يمنع طلبات الخروج إلى مواقع خارجية أو يمنع بعض أنواع الطلبات التي تُرسل باستخدام REST API. هذا قد يوقف الاتصال بين الموقع وسيرفر الترخيص.
  3. إعدادات DNS:
    • في بعض الأحيان، إعدادات DNS الخاصة بالخادم قد تكون مشكلة. الخادم الذي يستضيف الموقع قد لا يكون قادرًا على حل اسم المجال (domain name) الخاص بخادم الترخيص بشكل صحيح، مما يمنع الاتصال.
  4. قيود على استهلاك الموارد (Resource Limits):
    • بعض شركات الاستضافة تفرض قيودًا صارمة على موارد الخادم مثل الذاكرة أو وقت التنفيذ (execution time)، مما قد يؤدي إلى انقطاع الاتصال بواجهة الـ API عند محاولة تفعيل الترخيص.

كيفية التحقق والإصلاح:

  1. فحص دعم cURL:
    • تأكد من أن شركة الاستضافة الخاصة بك تدعم cURL، ويمكنك القيام بذلك عن طريق التحقق من phpinfo()، أو بسؤال فريق دعم الاستضافة بشكل مباشر.
  2. التحقق من جدار الحماية (Firewall):
    • إذا كان لديك الوصول إلى إعدادات جدار الحماية على الخادم، تحقق من أن الاتصال مع واجهة API الخاصة بالترخيص غير محظور.
    • يمكنك أيضًا طلب من شركة الاستضافة السماح بإرسال الطلبات إلى عنوان IP الخاص بخادم License.
  3. اختبار الاتصال بـ API:
    • قم بتشغيل اختبار يدوي باستخدام أداة مثل Postman أو عبر سكربت بسيط باستخدام cURL من موقعك لتأكيد إمكانية الاتصال بخادم الترخيص.
    • على سبيل المثال، استخدم كود PHP بسيط للتحقق من إمكانية الاتصال:
$url = 'https://your-license-server.com';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch);
if(curl_errno($ch)) {
    echo 'cURL Error: ' . curl_error($ch);
} else {
    echo 'Connection successful';
}
curl_close($ch);
  1. رفع حدود الموارد (Resource Limits):
    • تأكد من أن الإعدادات مثل max_execution_time وmemory_limit في PHP لديها قيم كافية حتى يتم تنفيذ الاتصال بالكامل. يمكنك تعديل هذه الإعدادات في ملف .htaccess أو php.ini إذا كان لديك صلاحيات الوصول.
  2. التواصل مع الاستضافة:
    • إذا لم تتمكن من الوصول لهذه الإعدادات بنفسك، يمكنك دائمًا التواصل مع فريق دعم الاستضافة وطلب فتح الاتصال عبر cURL، رفع القيود على استهلاك الموارد، أو السماح بطلبات API من موقع الترخيص.

حل هذه المشاكل يعتمد غالبًا على الشركة المضيفة، لذلك إذا كنت غير قادر على حل المشكلة بنفسك، من الجيد التواصل مع فريق دعمهم وشرح المشكلة بالتفصيل.

 

 

كيف يمكن أن تؤثر Cloudflare على تفعيل الترخيص:

  1. حظر الطلبات API بواسطة Cloudflare:
    • Cloudflare قد يمنع بعض الطلبات الخارجية (مثل طلبات cURL أو REST API) التي يتم إرسالها من موقعك إلى سيرفر الترخيص، خصوصًا إذا كان Cloudflare يشتبه في أن هذه الطلبات تشكل تهديدًا أمنيًا. قد يتم تفعيل أنظمة مثل Web Application Firewall (WAF) أو Bot Protection التي تمنع هذه الطلبات.
  2. التحقق من هوية الـ IP (IP Whitelisting):
    • إذا كان لديك قواعد صارمة على Cloudflare، فقد تحتاج إلى إضافة عناوين الـ IP الخاصة بسيرفر الترخيص إلى القائمة البيضاء (Whitelist) لتتمكن الطلبات من المرور بنجاح.
  3. استخدام SSL/HTTPS غير صحيح:
    • Cloudflare يعمل كوسيط لتحويل الاتصالات بين HTTP و HTTPS. إذا كان إعداد SSL في Cloudflare غير متوافق مع إعدادات الخادم (مثل استخدام خيار Flexible SSL بدلاً من Full SSL)، فقد يتم تعطيل الاتصال الآمن بين موقعك وسيرفر الترخيص، مما يؤدي إلى فشل تفعيل الترخيص.
  4. Cache/Proxy:
    • بعض إعدادات التخزين المؤقت (Caching) أو الـ Proxy في Cloudflare قد تتسبب في تأخير أو منع تحديثات البيانات الحيوية. إذا كان طلب API الخاص بالترخيص يتم تخزينه مؤقتًا بدلاً من إرساله بشكل مباشر إلى سيرفر الترخيص، قد يؤدي ذلك إلى فشل التحقق من الترخيص.

كيفية حل هذه المشاكل:

  1. تعطيل WAF أو إضافة استثناء:
    • إذا كنت تستخدم Web Application Firewall (WAF) في Cloudflare، قد تحتاج إلى تعطيله أو إضافة استثناء للسماح بتمرير الطلبات إلى سيرفر الترخيص. يمكنك إعداد قواعد مخصصة للسماح بطلبات API إلى عنوان URL الخاص بسيرفر الترخيص.
  2. إضافة IP إلى القائمة البيضاء (Whitelist):
    • تأكد من إضافة عناوين IP الخاصة بسيرفر الترخيص إلى قائمة Cloudflare البيضاء. يمكنك الحصول على عناوين IP الخاصة بالسيرفر من مطور الإضافة أو القالب الذي تستخدمه.
  3. التحقق من إعدادات SSL:
    • تأكد من أن إعدادات SSL في Cloudflare مناسبة. إذا كنت تستخدم Flexible SSL، قم بتحويله إلى Full SSL أو Full (Strict) لضمان أمان الاتصال بين موقعك وسيرفر الترخيص. هذا يحسن من استقرار الاتصال ويقلل من احتمالية حدوث أخطاء.
  4. تعطيل التخزين المؤقت (Cache):
    • قم بتعطيل التخزين المؤقت (Cache) للصفحات التي تتضمن طلبات API للتحقق من الترخيص. يمكنك القيام بذلك باستخدام Page Rules في Cloudflare. على سبيل المثال:
      • أضف قاعدة Page Rule تستثني عنوان URL الخاص بالتحقق من الترخيص من التخزين المؤقت.
      • استخدم خيار “Bypass Cache” للتأكد من أن طلبات API تصل مباشرة إلى سيرفر الترخيص دون تأخير.
  5. اختبار الإعدادات:
    • بعد تعديل إعدادات Cloudflare، قم بإجراء اختبار للاتصال كما تم ذكره في الرد السابق باستخدام cURL أو أي أداة لاختبار الوصول إلى سيرفر الترخيص من موقعك. يمكنك أيضًا تعطيل Cloudflare مؤقتًا (عن طريق تحويله إلى “Development Mode”) للتأكد من أن المشكلة تأتي من Cloudflare.

التواصل مع Cloudflare:

إذا لم تتمكن من حل المشكلة بعد اتخاذ الخطوات المذكورة، يمكنك التواصل مع دعم Cloudflare وطلب مساعدتهم في تحليل المشكلة. قدم لهم تفاصيل حول الطلبات التي يتم حظرها أو المشاكل المتعلقة بتفعيل الترخيص، وهم يمكنهم مساعدتك في ضبط إعدادات الحماية أو التخزين المؤقت لتجنب حظر الطلبات.