عن المشروع

jiofiber-bridge هو مشروع قالب لاستخدام خط أرضي JioFiber (Jio Fiber Voice / JioCall عبر النطاق العريض) من أي مكان على هاتف SIP عادي، للمكالمات الصادرة والواردة معاً. تقدّم Jio الصوت عبر نواة IMS الخاصة بها من خلال عميل احتكاري يُسمى JUICE يعمل عادةً فقط على راوتر مزود الخدمة أو تطبيق JioCall. يشغّل هذا المشروع جسراً صغيراً بلا واجهة على نفس الشبكة المحلية للراوتر، ويسجّل في نواة IMS بالطريقة التي يسجّل بها جهاز JioCall حقيقي، ويعيد تقديم الخط كخط SIP عادي. وجّه Asterisk إلى ذلك الخط، فيمكن لهواتف مثل Zoiper أو Groundwire أو Linphone إجراء المكالمات واستقبالها على الخط الأرضي من أي شبكة. البنية: الجسر هو B2BUA يجب أن يكون على الشبكة المحلية المنزلية لأن نواة IMS تتحدث فقط مع الراوتر ويجب أن ينشأ RTP على واجهة الشبكة المحلية. أحد الطرفين يتحدث JUICE/IMS (إشارات TLS، صوت AMR/AMR-WB) مع الراوتر؛ والآخر خط SIP/PCMU عادي، مع تحويل AMR إلى PCMU عبر جسر المؤتمرات في pjproject. يعمل Asterisk على VPS عام صغير حيث تسجّل الهواتف؛ ويوحّد الأرقام المطلوبة، ويرنّ الهواتف عند المكالمات الواردة، وينقل معرّف المتصل. يتصل الجسر وAsterisk عبر شبكة تراكب خاصة (Tailscale أو WireGuard)، فلا يُكشف أي منفذ SIP من المنزل، ولا يكشف VPS سوى المسجّل المواجه للهواتف. يبرز README ثلاث مشكلات صعبة. أولاً الهوية: يستخدم تسجيل JUICE آلية RFC 5626 outbound مع +sip.instance بشكل محدد (أحرف كبيرة، بلا بادئة urn:uuid:)، إضافةً إلى كلمة مرور متغيرة لكل جهاز وجهاز مُدرج في القائمة البيضاء عبر تدفق OTP؛ ويصيغ pjsua الجاهز الـ instance بشكل مختلف فتُسقط النواة REGISTER بصمت. ثانياً الوسائط: تقدّم النواة AMR/AMR-WB مع mode-set وتتوقع ارتداده في SDP، وإلا تُقطع المكالمات بعد دقيقة إلى دقيقتين تقريباً. ثالثاً تشعّب المكالمات الواردة: لا ترنّ النواة إلا على جهات الاتصال التي أعلن تسجيلها مجموعة وسوم ميزات RCS/MMTEL كاملة وUser-Agent شبيه بـ JioCall؛ والتسجيل بـ mmtel فقط يجعل الصادر يعمل لكن الوارد لا يرن أبداً. تشمل المتطلبات جهاز Linux يعمل دائماً على الشبكة المحلية المنزلية بصلاحيات root، وVPS عام صغير لـ Asterisk 18+، وشبكة تراكب، وأدوات بناء مع ترويسات تطوير ترميز AMR، وتفاصيل حساب IMS (الهوية العامة، اسم مستخدم المصادقة، realm، عنوان المسجّل/الراوتر)، والقدرة على تفعيل OTP لإضافة الجهاز لدى المزود. يوفّر المستودع ملف مصدر B2BUA، وثلاث رقع لـ pjproject (mode-set لـ AMR، صيغة +sip.instance، حارس تجميع contact_params)، وملف بناء، وbridge.env.example، وسكربتات تسجيل وفحص صحة، وأداة مساعدة لاستعادة بيانات الاعتماد لكلمة مرور digest الثابتة لـ IMS upstream، وإعدادات Asterisk لـ pjsip/extensions/rtp، ووحدات systemd للجسر ومؤقت فحص صحة كل دقيقتين. تغطي خطوات الإعداد بناء pjproject المرقّع، وتهيئة bridge.env، وتزويد الجهاز (القائمة البيضاء وجلب كلمة المرور المتغيرة عند كل تشغيل)، وتشغيل الجسر كخدمة، وتهيئة نقاط نهاية Asterisk والخط، وتسجيل هواتف SIP، والمراقبة عبر فحص صحة يعيد تشغيل الجسر ويمكنه إرسال تنبيهات ntfy. يوثّق README أيضاً توحيد الأرقام (تحتاج الهواتف المحمولة خارج الشبكة بادئة STD 0 وإلا تُرجع النواة 484 Address Incomplete)، وترحيل DTMF وفق RFC 4733، ومعرّف المتصل الوارد عبر ترويسات X-Jio-Caller وP-Asserted-Identity/Remote-Party-ID، وIVR وارد اختياري مع تحذيرات صيغة WAV والمسارات المطلقة، وإرشادات لمراكز اتصال أخرى مثل Grandstream UCM وFreePBX (يجب أن يرد IVR بدلاً من تشغيل وسائط مبكرة)، ومخرج طوارئ EARLY_ANSWER. ويربط قسم الطرائف الأعراض بالأسباب، بما في ذلك إسقاط REGISTER الصامت، وموت المكالمات عند دقيقة إلى دقيقتين، وخطأ PJ_ETOOSMALL بعد فترات تشغيل طويلة، والصوت أحادي الاتجاه من RTP متعدد الواجهات، وعدم رنّ الوارد بسبب وسوم ميزات ناقصة. كل شيء قالب بلا أرقام أو عناوين IP أو كلمات مرور أو أسماء مضيفين حقيقية للمزود؛ والمشروع مرخّص بـ MIT ويتضمن إخلاء مسؤولية.