استكشاف الأخطاء وإصلاحها
يساعد هذا الدليل مسؤولي WHMCS على تشخيص المشكلات الشائعة في Extendy GeoShield باستخدام الإعدادات الحالية، وسجل أحداث تسجيل الدخول، ونتائج اختبار المزود، وملخصات WHMCS Activity Log الآمنة.
لا يتضمن هذا الدليل خطوات إصلاح مدمّرة لقاعدة البيانات، أو حذفاً يدوياً للجداول، أو تغييرات على كود الإضافة.
ابدأ بهذه الفحوصات
قبل التحقيق في عرض محدد، تأكد مما يلي:
- Extendy GeoShield مفعّل في WHMCS.
- تم ضبط Addon Enabled على Yes في صفحة إعدادات Extendy GeoShield.
- حدث تسجيل الدخول المعني بعد تفعيل الإضافة.
- يحتوي سجل أحداث تسجيل الدخول على صف لذلك الدخول.
- حقول الحدث Decision وAlert Sent وAlert Error وIP Address وCountry وProvider وIP Source Used وIP Source Verified تطابق توقعاتك.
لمرجع الإعدادات، راجع دليل الإعداد.
لحقول الأحداث، راجع سجل أحداث تسجيل الدخول.
لا يظهر حدث تسجيل دخول
أسباب محتملة ومتحقق منها:
- Addon Enabled مضبوط على No.
- حدث تسجيل الدخول قبل تفعيل Extendy GeoShield.
- الإجراء لم يكن حدث تسجيل دخول عادي إلى منطقة العملاء تعالجه الإضافة.
- لم تتمكن الإضافة من تسجيل الحدث بأمان وكتبت فقط ملخصاً آمناً في WHMCS Activity Log.
الفحوصات:
- تأكد أن Addon Enabled هو Yes.
- تأكد أنك تراجع النطاق الزمني الصحيح في سجل أحداث تسجيل الدخول.
- تحقق مما إذا كان تنظيف الاحتفاظ قد أزال صفوف أحداث أقدم.
- تحقق من WHMCS Activity Log بحثاً عن ملخص آمن مثل عدم تمكن الإضافة من تسجيل حدث دخول عميل.
الإجراء التصحيحي:
- فعّل الإضافة واختبر باستخدام تسجيل دخول مضبوط إلى منطقة العم لاء.
- إذا كانت الصفوف القديمة مفقودة، راجع الاحتفاظ بالبيانات.
يوجد حدث تسجيل دخول لكن لم يتم إرسال بريد تنبيه
تسجيل حدث دخول لا يعني بالضرورة وجوب إرسال بريد.
أسباب محتملة ومتحقق منها:
- تم تثبيط قرار الحدث بسبب منطق الدولة الموثوقة.
- وجد Smart Mode أن الدولة معروفة بالفعل للسياق الحالي.
- تم تثبيط الحدث بسبب فترة تهدئة التنبيه.
- فشل اكتشاف الدولة وAlert When Country Detection Fails مضبوط على No.
- لم يكن هناك سياق Client Account آمن متاح للحدث.
- البريد الأساسي في Client Profile مفقود أو غير صالح.
- قالب بريد Extendy GeoShield المحدد يحتوي على مستلمين منسوخين مكوّنين.
- فشل WHMCS
SendEmailأو تم إيقافه قبل التسليم.
الفحوصات:
- راجع Decision وDecision Reason وAlert Sent وAlert Template وAlert Error في سجل أحداث تسجيل الدخول.
- تأكد أن الحدث يحتوي على
decision_result = alert_requiredعندما تتوقع إرسال بريد. - تأكد أن الحدث يحتوي على سياق
client_idآمن. - تأكد أن البريد الأساسي في WHMCS Client Profile موجود وصالح.
- تأكد أن قالب بريد Extendy GeoShield ذي الصلة لا يحتوي على مستلمين منسوخين مكوّنين.
- تأكد أن تسليم البريد في WHMCS يعمل في بيئة WHMCS لديك.
الإجراء التصحيحي:
- عدّل الدول الموثوقة، أو وضع التنبيه، أو فترة التهدئة، أو إعدادات فشل اكتشاف الدولة حسب الحاجة.
- عالج مشكلات سياق العميل المفقود أو بريد Client Profile.
- أزل المستلمين المنسوخين من قوالب تنبيه Extendy GeoShield.
- استخدم استكشاف أخطاء بريد WHMCS لمشكلات التسليم النهائية.
توثيق ذو صلة:
تم تثبيط بريد التنبيه
الأحداث المثبطة لا تزال مفيدة. فهي تُظهر أن الإضافة قيّمت تسجيل الدخول وقررت أن البريد غير مطلوب.
تشمل فئات قرارات التثبيط الشائعة:
- دولة موثوقة;
- دولة معروفة في Smart Mode;
- فشل اكتشاف الدولة عندما تكون تنبيهات فشل الاكتشاف معطلة;
- فترة التهدئة.
الفحوصات:
- راجع Decision وDecision Reason في سجل أحداث تسجيل الدخول.
- راجع إعدادات Alert Mode وAlert Cooldown.
- راجع الدول الموثوقة وSmart Mode.
الإجراء التصحيحي:
- إذا كان التثبيط متوقعاً، فلا يلزم اتخاذ إجراء.
- إذا لم يكن التثبيط متوقعاً، راجع نموذج الثقة بالدول وإعداد فترة التهدئة.
مستلم البريد ليس بريد WHMCS User
هذا متوقع في نموذج المستلم الحالي للـ MVP.
يرسل Extendy GeoShield رسا ئل التنبيه إلى البريد الأساسي في WHMCS Client Profile لسياق Client Account المحدد بأمان.
يبقى بريد WHMCS User هو ممثل تسجيل الدخول ويُدرج في محتوى البريد كـ user_email.
إذا لم يتوفر سياق Client Account آمن، فلا يتم إرسال بريد في MVP الحالي.
توثيق ذو صلة:
تبدو قوالب البريد مفقودة
يستخدم Extendy GeoShield قوالب WHMCS General التالية:
Extendy GeoShield - Login Alert
Extendy GeoShield - Smart New Country Alert
تضمن الإضافة هذه القوالب أثناء التفعيل وعند تحميل صفحة إدارة الإضافة.
ينشئ منطق ضمان القو الب صفوف اللغة الرئيسية/الافتراضية المفقودة، ولا يكرر القوالب الموجودة عمداً ولا يستبدل محتوى القوالب الموجودة.
الفحوصات:
- افتح صفحة إضافة Extendy GeoShield في WHMCS Admin.
- تحقق من قوالب بريد WHMCS بحثاً عن أسماء القوالب الدقيقة أعلاه.
- تأكد أن نوع القالب متوافق مع إرسال بريد WHMCS General.
الإجراء التصحيحي:
- إذا كان قالب مفقوداً، افتح صفحة إدارة الإضافة أو أعد تفعيل الإضافة من WHMCS Admin لتشغيل منطق ضمان القوالب الآمن.
- لا تنشئ قوالب مكررة بأسماء مختلفة قليلاً.
الدولة Unknown أو يفشل بحث GeoIP
أسباب محتملة ومتحقق منها:
- لم يتم اختيار مزود GeoIP.
- بيانات اعتماد المزود مفقودة، أو غير صالحة، أو تم مسحها.
- عنوان IP المحدد للعميل فارغ أو ليس عنوان IP عاماً صالحاً.
- فشل طلب المزود، أو انتهت مهلته، أو رُفض، أو لم يُرجع بيانات دولة قابلة للاستخدام.
- تم تغيير إعداد المزود المحدد في النموذج لكن لم يتم حفظه قبل الاختبار.
الفحوصات:
- تأكد أن GeoIP Provider مضبوط على IPinfo أو MaxMind.
- تأكد أن بيانات اعتماد المزود ذات الصلة محفوظة.
- استخدم GeoIP Provider Test Connection مع عنوان IP عام وحقيقي للاختبار.
- راجع IP Address وProvider وCountry وCountry Code في سجل أحداث تسجيل الدخول.
- راجع Alert When Country Detection Fails.
الإجراء التصحيحي:
- احفظ إعداد المزود المطلوب قبل استخدام Test Connection.
- أعد إدخال بيانات الاعتماد أو امسحها وأعد إدخالها حسب الحاجة.
- أصلح إعداد مصدر IP إذا لم يكن هناك عنوان IP عام للعميل.
- إذا كنت تريد تنبيهات عند فشل اكتشاف الدولة، اضبط Alert When Country Detection Fails على Yes.
توثيق ذو صلة:
يفشل اختبار اتصال IPinfo
الفحوصات:
- تأكد أن GeoIP Provider محفوظ كـ IPinfo.
- تأكد أن IPinfo API token مخزن.
- تأكد أن عنوان IP الاختباري عنوان IP عام صالح.
- تذكر أن الرمز يُرسل باستخدام رأس HTTP باسم
Authorization: Bearer، وليس في عنوان URL.
الإجراء التصحيحي:
- احفظ إعداد مزود IPinfo.
- أعد إدخال الرمز إذا لزم الأمر.
- اختبر مرة أخرى باستخدام عنوان IP عام.
لا يوثق Extendy GeoShield ولا يتحكم بحدود حساب IPinfo، أو الفوترة، أو الاحتفاظ، أو التسجيل من جانب المزود.
يفشل اختبار اتصال MaxMind
الفحوصات:
- تأكد أن GeoIP Provider محفوظ كـ MaxMind.
- تأكد أن كلاً من MaxMind Account ID وMaxMind License Key مخزنان.
- تأكد أن عنوان IP الاختباري عنوان IP عام صالح.
- تذكر أن التنفيذ الحالي يستخدم MaxMind GeoIP2 Country web service، وليس قاعدة بيانات MMDB محلية.
الإجراء التصحيحي:
- احفظ إعداد مزود MaxMind.
- أعد إدخال Account ID أو License Key إذا لزم الأمر.
- اختبر مرة أخرى باستخدام عنوان IP عام.
لا يدعم Extendy GeoShield حالياً استكشاف أخطاء ملفات قاعدة بيانات MaxMind المحلية.
تم اكتشاف عنوان IP غير صحيح للعميل
أسباب محتملة ومتحقق منها:
- Client IP Source المحدد لا يطابق طبولوجيا شبكتك.
- يتم استخدام وضع
REMOTE_ADDRخلف وكيل، لذلك يرى WHMCS عنوان الوكيل. - يتم تجاهل
X-Forwarded-Forلأن الطرف المباشر ليس وكيلاً موثوقاً مكوّناً. - يتم تجاهل
CF-Connecting-IPلأن الطرف المباشر غير معروف كـ Cloudflare. - تستخدم البيئة عناوين شبكة خاصة أو محلية ولا يتوفر عنوان IP عام صالح للعميل.
الفحوصات:
- راجع IP Source Used وIP Source Verified في سجل أحداث تسجيل الدخول.
- تأكد من Client IP Source في الإعدادات.
- لإعدادات الوكيل، راجع Trusted Proxy IPs / CIDRs.
الإجراء التصحيحي:
- استخدم
REMOTE_ADDRما لم يتطلب إعداد وكيل أو Cloudflare متحققاً رأساً معيناً. - استخدم
X-Forwarded-Forفقط مع نطاقات وكلاء موثوقين محددة بعناية. - استخدم
CF-Connecting-IPفقط عندما يكون WHMCS فعلياً خلف Cloudflare.
توثيق ذو صلة:
يتم تجاهل X-Forwarded-For
السلوك المتحقق منه:
- يتم النظر في
X-Forwarded-Forفقط عندما يطابقREMOTE_ADDRنطاق وكيل موثوق مكوّن. - يتم تقييم السلسلة من اليمين إلى اليسار.
- تتم إزالة قفزات الوكيل الموثوق من الجهة اليمنى.
- يتم اختيار أول عنوان IP عام صالح ليس وكيلاً.
- السلاسل المفقودة، أو المشوهة، أو الطويلة جداً، أو التي تحتوي فقط على وكلاء، أو الخاصة، أو المحجوزة، أو غير القابلة للاستخدام بأي شكل آخر ترجع بأمان.
الفحوصات:
- تأكد أن Client IP Source هو
X-Forwarded-For. - تأكد أ ن Trusted Proxy IPs / CIDRs يحتوي على عنوان أو نطاق الوكيل المباشر.
- تأكد أن سلسلة الرأس تحتوي على عنوان IP عام صالح للعميل.
لا تصلح هذا عبر الوثوق بنطاقات CIDR عريضة وعشوائية.
يتم تجاهل CF-Connecting-IP
السلوك المتحقق منه:
- يتم قبول
CF-Connecting-IPفقط عندما ينتميREMOTE_ADDRإلى نطاقات CIDR المضمنة الخاصة بـ Cloudflare. - وجود الرأس وحده لا يكفي.
- إذا لم يصل الطلب عبر نطاق Cloudflare متحقق منه، يرجع Extendy GeoShield بأمان.
الفحوصات:
- تأكد أن Client IP Source هو
CF-Connecting-IP. - تأكد أن اسم مضيف WHMCS ممرر فعلياً عبر Cloudflare.
- تأكد أن الوصول المباشر إلى الخادم الأصلي مقيد حيثما أمكن.
قائمة نطاقات Cloudflare مضمنة كلقطة تمت مراجعتها ولا يتم تحديثها تلقائياً أثناء تسجيل الدخول.
عنوان IP فارغ
يمك ن أن يحدث هذا عندما لا يتوفر عنوان IP عام صالح للعميل.
تشمل الحالات الشائعة:
- التطوير المحلي;
- الشبكات الخاصة;
- الحاويات أو طبولوجيا الوكلاء الداخلية;
- الرجوع إلى
REMOTE_ADDRعندما يكونREMOTE_ADDRخاصاً/محلياً/محجوزاً.
يمكن أن يبقى حدث تسجيل الدخول مسجلاً. وقد يفشل اكتشاف دولة GeoIP.
رابط الثقة يطلب من المستخدم تسجيل الدخول
هذا متوقع.
تتطلب روابط الثقة مصادقة WHMCS. فتح رابط ثقة أثناء عدم تسجيل الدخول يجب ألا يثق بدولة.
بعد تسجيل الدخول، يجب إعادة التحقق من إجراء الثقة مقابل الرمز وWHMCS User وسياق Client Account.
رابط الثقة غير صالح، أو منتهي الصلاحية، أو مستخدم سابقاً، أو مرفوض
تشمل الأسباب المتحقق منها:
- الرمز مفقود أو غير صالح;
- انتهت صلاحية الرمز;
- تم استخدام الرمز سابقاً;
- WHMCS User المسجل دخوله لا يطابق الرمز;
- سياق Client Account المحدد لا يطابق الرمز;
- تمت محاولة إجراء الثقة من جلسة admin masquerading.
تنتهي صلاحية روابط الثقة بعد 48 ساعة ويمكن استخدامها مرة واحدة فقط.
الإجراء التصحيحي:
- استخدم أحدث بريد تنبيه أمني.
- سجل الدخول بنفس WHMCS User الذي تلقى التنبيه الأمني.
- اختر سياق Client Account المطابق عندما يكون الرمز مربوطاً بعميل.
لا تتوقع أن استلام البريد أو فتحه بحد ذاته يثق بدولة.
Smart Mode لم يثق تلقائياً بدولة
هذا متوقع.
يسجل Smart Mode الدول المعروفة ويقيّمها، لكن الدولة الجديدة لا تصبح موثوقة تلقا ئياً لمجرد حدوث تسجيل دخول.
بالنسبة إلى تنبيهات Smart New Country المؤهلة، قد يتضمن البريد رابط ثقة. يتطلب إجراء الثقة تسجيل دخول WHMCS وتحققاً صارماً من الرمز/المستخدم/العميل.
الدولة دون سياق عميل لا تصبح تلقائياً موثوقة لكل Client Accounts المرتبطة.
توثيق ذو صلة:
لا يتم تنظيف الأحداث القديمة
أسباب محتملة ومتحقق منها:
- Retention مضبوط على Disabled (Automatic Cleanup Off).
- WHMCS cron لا يعمل.
- الصف ليس أقدم من حد القطع المحسوب لمدة 180 يوماً.
- لم يعمل التنظيف بعد أن أصبح الصف مؤهلاً.
الفحوصات:
- تأكد أن Retention مضبوط على 180 Days.
- تأكد أن WHMCS cron يعمل بشكل طبيعي.
- تحقق من WHMCS Activity Log بحثاً عن ملخصات تنظيف الاحتفاظ الآمنة.
يزيل تنظيف الاحتفاظ فقط الصفوف القديمة من mod_extendy_geoshield_events. ولا ينظف الدول المعروفة، أو رموز الثقة، أو الإعدادات، أو قوالب البريد، أو إدخالات WHMCS Activity Log، أو النسخ الاحتياطية.
تعطيل Retention لم يحذف الأحداث الموجودة
هذا متوقع.
Disabled (Automatic Cleanup Off) يعني أن التنظيف التلقائي معطل. وهو لا يحذف صفوف أحداث تسجيل الدخول الموجودة ولا يمنع الصفوف الجديدة من التراكم.
للتفاصيل، راجع الاحتفاظ بالبيانات.
تظهر بيانات اعتماد المزودين مخفية
هذا متوقع.
تُخزن بيانات اعتماد المزودين باستخدام آلية WHMCS Local API الموثقة EncryptPassword / DecryptPassword وتُعرض كقيم مخفية في واجهة الإدارة.
ترك حقل بيا نات الاعتماد فارغاً أثناء الحفظ يبقي القيمة المخزنة الحالية. استخدم إجراء المسح/الإزالة الصريح لإزالة بيانات اعتماد مخزنة.
لا تحاول استرجاع أو عرض أسرار المزودين المخزنة من واجهة الإدارة.
إلغاء التفعيل لم يزل البيانات المخزنة
هذا متوقع.
إلغاء التفعيل يحافظ على بيانات الإضافة. وهو ليس عملية إزالة كاملة.
لا يضيف Extendy GeoShield منطق إسقاط الجداول إلى إلغاء التفعيل ولا يعتمد على callback منفصل وموثق لإلغاء تثبيت إضافة WHMCS.
إجراء Manual Full Removal / Uninstall Procedure الكامل موضوع توثيق منفصل.