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

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

صياغة المشكلة:

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

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

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

الشكل الخاص

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

تقريبًا مثل هذا:

{
   "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 ، اكتب عنوان mac-password الخاص بتسجيل الدخول هناك ، وقم بإنشاء ملفات باستخدام البرنامج النصي الخاص بنا ، وضعها تحت خادم الويب Apache وسيكون الأمر جيدًا.

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

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

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

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

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

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

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

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

هنا تحولت مثل هذه الخدمات المصغرة. مُسَمًّى السوناتة لحن موسيقي، الكود المصدري متاح على جيثب ، وهناك أيضًا الانتهاء من صورة عامل ميناء، مثال على استخدام عامل ميناء هنا.

دلائل الميزات:

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

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

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

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

  • يتم تقسيم واجهة برمجة التطبيقات للإدارة (الإدارة) وإصدار التكوينات للهواتف (التزويد) حسب المنافذ

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

سلبيات:

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

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

النتيجة؟

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

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

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

في العملية اللاحقة ، خطوتان فقط:

  1. نحن نشكل تكوين json وننشره في sonata
  2. يقوم الجهاز بتشديد التكوين

ما الهواتف التي يتم الترويج لها؟

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

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

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

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

من خلال API ، تقديم طلبات http. ستكون API متاحة في التثبيت الخاص بك. لأن تدعم واجهة برمجة التطبيقات مواصفات اختيال ، يمكنك استخدامها فائدة عبر الإنترنت لطلبات اختبار API.

حسنا عظيم. الشيء رائع ، كيف تجرب؟

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

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

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

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

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

ملخص وشكر وتقدير

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

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

المصدر: www.habr.com

إضافة تعليق