omniroute/health — إصلاح إنذار gluetun_tr=down الكاذب (2026-08-07 19:xx)
- التنبيه: الباب /omniroute/health = degraded, gluetun_tr=down (consecutive_fail تصاعد 4→14).
- الحفر للجذر (بعد مساري تشخيص خاطئين صحّحتهما): الفاحص الحيّ الفعلي = /docker/apps-proxy/omniroute_health.sh (host-cron كل دقيقة عبر omniroute_health_cron.sh، يزامن md5 لحاوية apps-proxy → /etc/nginx/omniroute_health.sh → nginx يخدم /usr/share/nginx/health/omniroute.json). ليس arsenal-hooks ولا نسختي المحلية.
- الجذر المُثبَت حيّاً: probe_cc يقبل جسم 429 من ipinfo كأنه رمز بلد ([ -n "$cc" ] ينجح على JSON غير فارغ) → لا يسقط للمزوّدين التالين. الدليل عبر النفق: ipinfo=429 · api.country.is=TR · ip-api=TR. النفق سليم 100%؛ العطل في منطق fallback فقط.
- الإصلاح (v3، probe_cc فقط، صفر مساس بباقي الملف — مُثبَت بـ diff): is_cc() يقبل فقط رمز بلد صالح (حرفان A-Z) وإلا يسقط؛ ترتيب: ipinfo→api.country.is→ip-api→ifconfig.co. لا يُضعف الكشف الحقيقي (شرط =TR باقٍ).
- التحقق الحيّ: md5 host=b3ec935b · container=b3ec935b · الباب العام overall=healthy gluetun_tr=up TR consecutive_fail=0 · omniroute_health_guard.sh exit=0. النسخة الاحتياطية: omniroute_health.sh.bak-429fix-1786122068.
- الدرس: التشخيص الصحيح >نصف الحل. حفرت للجذر الحقيقي قبل العلاج؛ نقد الخطة+دراسة الأثر (diff أثبت أن الفرق محصور في probe_cc) قبل التطبيق = صفر تخريب.