خادم توفير سوناتا - SIP

أنا لا أعرف ما أقارن به. ربما مع قطة؟ يبدو من الممكن بدونه ، ولكن معه أفضل قليلاً. خاصة إذا كان يعمل))


بيان المشكلة:


  1. أريد تهيئة هواتف SIP بسرعة وبأمان وبأمان. عند تثبيت الهاتف ، وأكثر من ذلك عند إعادة تكوينه.
  2. لدى العديد من البائعين تنسيقات التكوين الخاصة بهم وأدواتهم المساعدة لإنشاء التكوينات وطرقهم الخاصة لحماية التكوينات. لكنني لا أريد حقًا التعامل مع الجميع.
  3. تركز العديد من حلول التوفير ، أ) على بائع واحد أو نظام هاتف واحد ، ب) أنها مرهقة إلى حد ما في تنفيذها ، مجموعة من النصوص ، المعلمات ، ر ...

في النقطة 3 ، سأعلق على أن هناك أنظمة ممتازة لـ FreePBX ، و FusionPBX ، و Kazoo ، حيث توجد قوالب متاحة للجمهور لهواتف البائعين المختلفين. توجد حلول تجارية حيث يمكن أيضًا في الوحدة النمطية تكوين أداء هواتف مختلف الشركات المصنعة ، على سبيل المثال ، Yeastar PBX.


على Habré أيضا مليئة وصفات كيفية تكوين أجهزة من مختلف البائعين: واحد ، اثنان . ولكن كما يقولون ، جميع النظم لديها عيب قاتل. لذلك اصنع الدراجة الخاصة بك.


الشكل الخاص


كما يقولون في xkcd ، لا ترغب في التعامل مع 14 تنسيقات - فكر في الخامس عشر . لذلك ، نحن نستخدم الإعدادات العامة لأي هاتف ونقوم بعمل تهيئة json-format الخاصة بنا.


شيء مثل هذا:


{ "key": "sdgjdeu9443908", "token": "590sfdsf8u984", "model": "gxp1620", "vendor": "grandstream", "mac": "001565113af8", "timezone_offset": "GMT+03", "ntp_server": "pool.ntp.org", "status": true, "accounts": [ { "name": "", "line": 1, "sip_register": "sip.mobilonsip.ru", "sip_name": "sip102", "sip_user": "sip102", "sip_password": "4321", "sip_auth": "sip102" } ] } 

لذلك ، في أي هاتف ، تحتاج إلى تكوين الوقت المحلي ، وارتشف الخطوط. كل شيء بسيط هنا. يمكن الاطلاع على المزيد من الأمثلة هنا .


الخادم الخاص


في أدلة المصنّعين ، عادةً ما تكون هناك نقطة تقول: تأخذ csv ، اكتب عنوان تسجيل الدخول - كلمة المرور - الخشخاش هناك ، قم بإنشاء ملفات باستخدام البرنامج النصي لشركتنا ، ضعها تحت خادم الويب Apache وستكون جيدة.


عادة ما تخبرك الفقرة التالية من الدليل بما يمكنك تشفير ملف التكوين الذي تم إنشاؤه.


ولكن هذا كل شيء كلاسيكي. تقول الطريقة الحديثة مع العصائر والتغريد إنك تحتاج إلى إنشاء خادم ويب جاهز لن يكون بنفس قوة Apache ، ولكن لن يفعل سوى شيء واحد صغير. شكل واعطاء التكوينات حسب المرجع.


هنا نتوقف ونتذكر أن جميع هواتف SIP تقريبًا يمكنها الآن تلقي التكوينات عبر http / https ، لذلك لا نعتبر تطبيقات أخرى (ftp ، tftp ، ftps). ثم ، يعرف كل هاتف عنوان الخشخاش الخاص به. لذلك ، سنقوم بإنشاء رابطين: واحد شخصي - على مفتاح الجهاز ، والثاني ، والذي يعمل على مجموعة من العناوين الشائعة والخشخاش الشائعة.


أيضًا ، لن أسهب في التهيئة الصفرية ، أي إعداد الهاتف من نقطة الصفر ، أي لقد علقتها في الشبكة وحصلت على قفزة. لا ، في السيناريو الخاص بي ، قمت بتثبيته في الشبكة وقمت بتكوين أولي (تم تكوينه لاستلام التكوين من الخادم) ، ثم اشرب بعض الشوكولاتة وأعد تكوين الهاتف حسب الحاجة من خلال الخدمة. يعتبر توزيع الخيار 66 هو مصدر قلق خادم DHCP.


بالمناسبة ، لقد تعرضت للتعذيب تمامًا لأقول "التوفير" ، لذا تم تقليل الكلمة إلى "التوفير" ، لا ترفس ، من فضلك ، مع قدميك.


وهناك شيء آخر: خادمنا لا يحتوي على واجهة مستخدم ، أي واجهة المستخدم. ربما الآن ، ولكن لست متأكدا ، ل لا احتاج ولكن هناك واجهة برمجة تطبيقات لحفظ / حذف الإعدادات ، والحصول على قائمة من البائعين المدعومين ، والطرز ، وكل شيء موصوف وفقًا لشرائع مواصفات التباهي.


لماذا واجهة برمجة التطبيقات ، وليس واجهة المستخدم؟ لأن لديّ بالفعل نظام هاتفي الخاص ، إذن ، لديّ مصدر بيانات اعتماد ، حيث أحتاج فقط إلى أخذ هذه البيانات ، وتكوين ملف json اللازم ونشره على الخادم. وبالفعل يكون الخادم آمنًا وفقًا للقواعد المحددة في ملف json ، فسيقوم بإعطاء التكوين للجهاز الضروري أو لن يعطيه أي خطأ إذا كان الجهاز خاطئًا ، أو لا يفي بالمعايير المحددة أيضًا في هذا json.



هنا هو مثل هذا الحكم microservice تحولت. يطلق عليه سوناتا ، الكود المصدري متاح على جيثب ، وهناك أيضا صورة عامل ميناء جاهزة ، مثال على استخدام عامل ميناء هنا .


الميزات الرئيسية:


  • في أي حال ، الوصول المحدود إلى التكوين في الوقت المحدد ، افتراضيا 10 دقائق. إذا كنت تريد إتاحة التكوين مرة أخرى ، فأعد نشر التكوين مرة أخرى.


  • تنسيق واحد لجميع البائعين ، تتم إزالة جميع توليف في سوناتا ، يمكنك إرسال json موحدة ، يمكنك تكوين أي معدات متوفرة.


  • يتم تسجيل جميع التكوينات الصادرة للأجهزة ، ويمكن عرض جميع المناطق المشكلة في السجل ومعرفة الأخطاء


  • من الممكن استخدام رابط واحد مشترك مع الرمز المميز ، يتلقى كل هاتف التكوين الخاص به عن طريق تحديد عنوان mac. أو رابط شخصي على المفتاح.


  • يتم تقسيم واجهات برمجة التطبيقات للإدارة والتوفير عبر المنافذ


  • الاختبارات. كان من المهم للغاية بالنسبة لي إصلاح تنسيق التكوين الصادر وتغطية جميع المواقف المعتادة لإصدار التكوين مع الاختبارات. لجعل كل شيء يعمل بشكل واضح.



سلبيات:


حتى الآن ، لم يتم استخدام تشفير سوناتا. أي بالطبع ، يمكنك البدء في استخدام https عن طريق وضع nginx ، على سبيل المثال ، قبل sonata. ولكن هنا هي أساليب الملكية لم تشارك بعد. لماذا؟ المشروع لا يزال صغيرا ، انقلب تقريبا مائة الأجهزة. وبالطبع أقوم بجمع الأفكار والتعليقات. علاوة على ذلك ، من أجل جعل كل شيء آمنًا بحيث لا يمكن استنشاق التكوينات على الشبكة ، فمن المحتمل أن يكون الأمر عناءً باستخدام مفاتيح التشفير و tls و hedgehog معهم ، لكن هذا سيكون استمرارًا.


عدم وجود واجهة المستخدم. ربما يكون هذا ناقصًا مهمًا للمستخدم النهائي ، ولكن بالنسبة لمسؤول النظام ، تعد الأداة المساعدة لوحدة التحكم أكثر أهمية من التطبيق الكامل. كانت هناك خطط لجعل أداة مساعدة وحدة التحكم ، ولكن لست متأكدا ما إذا كانت هناك حاجة لذلك؟


ما هي النتيجة؟


خادم ويب صغير وبسيط لتوفير العديد من طرازات الهواتف مع واجهة برمجة التطبيقات للإدارة.


مرة أخرى ، كيف ينبغي لهذا العمل؟


  1. تثبيت سوناتا.
  2. نقوم بتكوين json-config ونشره في سوناتا.
  3. ثم نحصل على رابط من سوناتا لتقديمه.
  4. ثم نشير إلى هذا الرابط في جهاز الهاتف.
  5. الجهاز يشدد التكوين

هناك خطوتان فقط في العملية التالية:


  1. نحن تشكيل التكوين json ونشرها في سوناتا
  2. الجهاز يشدد التكوين

ما نوع الهواتف التي يتم تحميلها؟


البائعين Grandstream ، Fanvil ، Yealink. التمايزات داخل البائع متشابهة إلى حد ما ، ولكنها قد تختلف وفقًا للبرنامج الثابت - قد يكون من الضروري إجراء اختبار إضافي.


ما هي القواعد التي يمكن وضعها؟


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


كيف تتفاعل مع سوناتا؟


من خلال API ، مما يجعل طلبات HTTP. ستكون واجهة برمجة التطبيقات متوفرة في عملية التثبيت. لأن تدعم واجهة برمجة التطبيقات (API) مواصفات swagger ، ثم يمكنك استخدام الأداة المساعدة عبر الإنترنت لطلبات الاختبار إلى واجهة برمجة التطبيقات.


حسناً ، عظيم. شيء رائع ، كيف نحاول؟


أسهل طريقة هي نشر صورة عامل ميناء استنادًا إلى مستودع عينات سوناتا . يحتوي المستودع على إرشادات التثبيت.


وإذا كنت أعرف node.js؟


إذا كانت لديك خبرة في استخدام جافا سكريبت ، فستكتشف بسرعة كيف يعمل كل شيء هنا.


هل سيتطور سوناتا؟


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


الملخص والاعترافات


سأكون سعيدًا باقتراحات / اعتراضات / تعليقات وأسئلة بناءة قد يكون جيدا شيء وصفها بشكل غير مفهوم.


كما أشكر جميع الزملاء الذين ساعدوا ونصحوا واختبروا وأمنوا / وهبوا من أجل الاختبارات. في الواقع ، شارك الكثير من الأشخاص الذين تحدثت معهم في العمل ، وفي غرف الدردشة ورسائل البريد الإلكتروني في المشروع إلى حد مختلف. شكرا للأفكار والأفكار.

Source: https://habr.com/ru/post/ar445350/


All Articles