Sonata - SIP təminat serveri

Təminatı nə ilə müqayisə edəcəyimi bilmirəm. Bəlkə bir pişiklə? Onsuz mümkün görünür, amma onunla bir az daha yaxşıdır. Xüsusilə işləyirsə))

Problemin formalaşdırılması:

  1. Mən SIP telefonlarını tez, asan və təhlükəsiz qurmaq istəyirəm. Telefonu quraşdırarkən və daha çox onu yenidən konfiqurasiya edərkən.
  2. Bir çox satıcıların öz konfiqurasiya formatları, konfiqurasiya yaratmaq üçün öz yardım proqramları və konfiqurasiyaları qorumaq üçün öz üsulları var. Və mən əslində hamı ilə məşğul olmaq istəmirəm.
  3. Bir çox təminat həlləri, a) bir satıcıya və ya bir telefon sisteminə yönəldilir, b) həyata keçirmək olduqca çətin olur, çoxlu skriptlər, parametrlər, brrr...

3-cü bəndlə əlaqədar olaraq, əla təchizat sistemlərinin olduğunu qeyd edəcəyəm FreePBX üçün, FusionPBX üçün, Kazoo üçün, burada müxtəlif satıcıların telefonları üçün şablonlar ictimaiyyətə açıqdır. Təminat modulunda müxtəlif istehsalçıların telefonlarının işini konfiqurasiya edə biləcəyiniz kommersiya həlləri var, məsələn, Yeastar PBX.

Habré, həmçinin müxtəlif təchizatçıların cihazlarının necə qurulacağına dair reseptlərlə doludur: vaxt, два. Ancaq necə deyərlər, bütün sistemlərin ölümcül bir qüsuru var. Beləliklə, öz velosipedimizi düzəldəcəyik.

öz formatınız

Xkcd-də deyildiyi kimi, 14 formatla məşğul olmaq istəmirsinizsə - 15-i ilə gəlin. Buna görə də biz istənilən telefon üçün ümumi parametrlərdən istifadə edirik və öz json konfiqurasiya formatımızı yaradırıq.

Bu kimi bir şey:

{
   "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"
      }
   ]
}

Beləliklə, istənilən telefonda yerli vaxtı və SIP xətlərini konfiqurasiya etməlisiniz. Burada hər şey sadədir. Daha çox nümunə görə bilərsiniz burada.

öz serverinizin təminatı

İstehsalçının təlimatlarında adətən belə bir nöqtə var: csv götürün, login-parol-mac-ünvanınızı yazın, mülkiyyət skriptimizdən istifadə edərək fayllar yaradın, onları Apache veb serverinin altına qoyun və hər şey yaxşı olacaq.

Təlimatın növbəti paraqrafı adətən sizə yaradılan konfiqurasiya faylını şifrələyə biləcəyinizi söyləyir.

Ancaq bunların hamısı klassikdir. Smoothies və Twitter ilə müasir yanaşma deyir ki, siz Apache qədər güclü olmayacaq, ancaq kiçik bir iş görəcək hazır veb server yaratmalısınız. Linkdən istifadə edərək konfiqurasiyaları yaradın və göndərin.

Gəlin burada dayanaq və xatırlayaq ki, demək olar ki, bütün SIP telefonları indi http/https vasitəsilə konfiqurasiyaları qəbul edə bilər, buna görə də digər tətbiqləri (ftp, tftp, ftps) nəzərdən keçirmirik. Sonra hər telefon öz MAC ünvanını bilir. Buna görə də, biz iki əlaqə quracağıq: biri şəxsi - cihaz açarı əsasında, ikincisi ümumi, ümumi işarə və MAC ünvanının birləşməsindən istifadə etməklə işləyir.

Həm də sıfır konfiqurasiya üzərində dayanmayacağam, yəni. telefonun sıfırdan qurulması, yəni. siz onu şəbəkəyə qoşdunuz və işləməyə başladı. Xeyr, mənim ssenarimdə siz onu şəbəkəyə qoşursunuz, ilkin quraşdırmanı yerinə yetirirsiniz (təminat serverindən konfiqurasiyanı qəbul etmək üçün onu qurun) və sonra pina colada içirsiniz və təchizat vasitəsilə telefonu lazım olduqda yenidən konfiqurasiya edirsiniz. Variant 66-nın paylanması DHCP serverinin məsuliyyətidir.

Yeri gəlmişkən, "təminat" deməkdən tamamilə yoruldum, ona görə də söz "təminat" olaraq qısaldıldı, lütfən, məni təpikləmə.

Və daha bir şey: təchizat serverimizdə UI yoxdur, yəni. istifadəçi interfeysi. Bəlkə də, hələlik, amma əmin deyiləm, çünki... Mənə lazım deyil. Ancaq parametrləri saxlamaq / silmək, dəstəklənən satıcıların, modellərin siyahısını əldə etmək üçün bir API var, hər şey ləzzətli spesifikasiyanın qanunlarına uyğun olaraq təsvir edilmişdir.

Niyə UI yox, API? Çünki Mənim artıq öz telefon sistemim var, o zaman mən etimadnamə mənbəyim var, burada sadəcə bu məlumatları götürməli, lazımi json-u tərtib etməliyəm və onu təminat serverində dərc etməliyəm. Və təminat serveri, json faylında göstərilən qaydalara uyğun olaraq, tələb olunan cihaza öz konfiqurasiyasını verəcək və ya cihaz düzgün deyilsə və ya bu json-da göstərilən meyarlara cavab vermirsə, onu verməyəcək.

Sonata - SIP təminat serveri

Təminat mikroservisi belə oldu. Zəng etdi sonata, mənbə kodu GitHub-da mövcuddur, həmçinin var hazır doker şəkli, docker istifadə nümunəsi burada.

Əsas Xüsusiyyətlər:

  • hər halda, konfiqurasiyaya zamanla məhdud giriş, standart olaraq 10 dəqiqə. Əgər konfiqurasiyanı yenidən əlçatan etmək istəyirsinizsə, konfiqurasiyanı yenidən dərc edin.

  • bütün təchizatçılar üçün bir format, bütün düzəlişlər sonatada silinir, siz standart json göndərirsiniz, hər hansı mövcud avadanlıqları konfiqurasiya edirsiniz.

  • cihazlara verilən bütün konfiqurasiyalar qeyd olunur, bütün problem sahələri jurnalda görünə bilər və səhvlər görünə bilər

  • Token ilə bir ümumi keçiddən istifadə etmək mümkündür, hər telefon mac ünvanını göstərərək öz konfiqurasiyasını alır. Və ya açar vasitəsilə şəxsi link.

  • İdarəetmə (idarəetmə) və telefonlara konfiqurasiyanın təmin edilməsi (təminat) üçün API-lər portlara bölünür.

  • Testlər. Verilmiş konfiqurasiyanın formatını düzəltmək və konfiqurasiyanın verilməsinin bütün adi hallarını testlərlə əhatə etmək mənim üçün çox vacib idi. Beləliklə, bütün bunlar aydın şəkildə işləyir.

Eksiler:

Bu günə qədər Sonata daxilində şifrələmə heç bir şəkildə istifadə edilmir. Bunlar. məsələn, sonatanın qarşısına nginx qoyaraq, əlbəttə ki, https istifadə etməyə başlaya bilərsiniz. Amma özəl üsullardan hələ də istifadə olunmayıb. Niyə? Layihə hələ gəncdir, ilk yüz cihazını işə salıb. Və təbii ki, fikirlər və rəylər toplayıram. Bundan əlavə, hər şeyi təhlükəsiz etmək üçün konfiqurasiyaların şəbəkədə iylənməməsi üçün yəqin ki, şifrələmə açarları, tls və onlarla kirpi ilə narahat olmağa dəyər, lakin bu, davamı olacaq.

UI olmaması. Bəlkə də bu, son istifadəçi üçün əhəmiyyətli bir çatışmazlıqdır, lakin sistem administratoru üçün konsol yardım proqramı tam hüquqlu bir tətbiqdən daha vacibdir. Konsol yardım proqramı yaratmaq planları var idi, amma bunun lazım olub olmadığına əmin deyiləm?

Nəticədə?

İdarəetmə üçün API ilə bir neçə telefon modelini təmin etmək üçün kiçik və sadə veb server.

Bir daha deyirəm, bu necə işləməlidir?

  1. Sonata quraşdırılır.
  2. Biz json konfiqurasiyasını yaradırıq və onu sonatada dərc edirik.
  3. Sonra sonatadan təminat linki alırıq.
  4. Sonra bu əlaqəni telefonda göstəririk.
  5. Cihaz konfiqurasiyanı yükləyir

Sonrakı əməliyyatda yalnız iki addım var:

  1. Biz json konfiqurasiyasını yaradırıq və onu sonatada dərc edirik
  2. Cihaz konfiqurasiyanı yükləyir

Hansı telefonlar təşviq ediləcək?

Satıcılar Grandstream, Fanvil, Yealink. Satıcı daxilindəki konfiqurasiyalar az və ya çox eynidir, lakin proqram təminatından asılı olaraq fərqlənə bilər - əlavə olaraq sınaqdan keçirmək lazım ola bilər.

Hansı qaydaları təyin edə bilərsiniz?

Zamanla. Siz konfiqurasiyanın mövcud olacağı vaxtı təyin edə bilərsiniz.
mac ünvanı ilə. Konfiqurasiyanı cihazın şəxsi linki vasitəsilə təqdim edərkən, mac ünvanı da yoxlanılacaq.
ip ilə. Sorğunun edildiyi yerdən IP ünvanı ilə.

Sonata ilə necə əlaqə qurmaq olar?

API vasitəsilə http sorğuları edir. API quraşdırmanızda mövcud olacaq. Çünki API ləzzətli spesifikasiyanı dəstəkləyir, siz istifadə edə bilərsiniz onlayn yardım proqramı API-yə test sorğuları üçün.

OK, əla. Gözəl şeylər, sınamağa necə?

Ən asan yol, repozitoriya əsasında docker şəklini yerləşdirməkdir sonata nümunəsi. Anbarda quraşdırma təlimatları var.

node.js-i bilsəm nə olar?

Əgər JavaScript-dən istifadə təcrübəniz varsa, onda siz burada hər şeyin necə işlədiyini tez anlayacaqsınız.

Sonata inkişafı olacaqmı?

Məqsədlərimə qismən nail oldum. Daha da inkişaf etdirmək, telefonun quraşdırılmasının avtomatlaşdırılması mövzusunda mənim tapşırıqlarıma aiddir. Telefon düymələrini konfiqurasiya etmək üçün konfiqurasiyaları genişləndirmək, ünvan kitabçasını təmin etmək, bəlkə də başqa bir şey əlavə etmək, şərhlərdə yazmaq imkanı da var.

Xülasə və təşəkkürlər

Konstruktiv təkliflər/etirazlar/şərhlər və suallarım olsa şad olaram, çünki... Ola bilər ki, o, nəyisə anlaşılmaz şəkildə təsvir edib.

Mən də kömək edən, məsləhət verən, sınaqdan keçirən və testlər üçün telefon verən/bağışlayan bütün həmkarlarıma təşəkkürümü bildirirəm. Əslində, işdə ünsiyyət qurduğum bir çox insan müxtəlif dərəcələrdə layihədə iştirak edir, AsterConf'e, söhbətlərdə və e-poçtlarda. Fikir və fikirlər üçün təşəkkür edirik.

Mənbə: www.habr.com

Добавить комментарий