Соната - СИП сервер за обезбеђивање

Не знам са чиме да упоредим обезбеђивање. Можда са мачком? Чини се да је могуће и без тога, али са њим је мало боље. Поготово ако ради))

Формулација проблема:

  1. Желим да брзо, лако и безбедно подесим СИП телефоне. Приликом инсталирања телефона, а још више када га поново конфигуришете.
  2. Многи добављачи имају сопствене конфигурационе формате, сопствене услужне програме за генерисање конфигурација и сопствене начине заштите конфигурација. И не желим да имам посла са свима.
  3. Многа решења за обезбеђивање, а) су фокусирана на једног добављача или један телефонски систем, б) су прилично гломазна за имплементацију, много скрипти, параметара, бррр...

У вези са тачком 3, даћу коментар да постоје одлични системи обезбеђивања за ФрееПБКС, за ФусионПБКС, за Казоо, где су шаблони за телефоне различитих произвођача јавно доступни. Постоје комерцијална решења где такође можете да конфигуришете рад телефона различитих произвођача у модулу за обезбеђивање, на пример, Иеастар ПБКС.

Хабре је такође пун рецепата о томе како да подесите уређаје различитих произвођача: време, два. Али како кажу, сви системи имају фаталну ману. Тако да ћемо направити свој бицикл.

свој формат

Како кажу у ккцд-у, ако не желите да се бавите 14 формата - доћи до 15. Због тога користимо општа подешавања за било који телефон и правимо сопствени јсон конфигурациони формат.

Овако нешто:

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

Дакле, у било ком телефону морате да конфигуришете локално време и СИП линије. Овде је све једноставно. Можете видети више примера овде.

обезбеђивање вашег сопственог сервера

У упутствима произвођача обично постоји тачка у којој пише: узмите цсв, запишите своју лозинку за пријаву-мац-адресу, генеришите датотеке помоћу наше власничке скрипте, ставите их под Апацхе веб сервер и све ће бити у реду.

Следећи пасус упутства вам обично говори да такође можете да шифрујете генерисану конфигурациону датотеку.

Али ово су све класици. Савремени приступ са смутијем и Твитером каже да треба да направите готов веб сервер који неће бити моћан као Апач, али ће радити само једну малу ствар. Генеришите и пошаљите конфигурације користећи везу.

Зауставимо се овде и запамтимо да скоро сви СИП телефони сада могу да примају конфигурације преко хттп/хттпс, тако да не разматрамо друге имплементације (фтп, тфтп, фтпс). Затим, сваки телефон зна своју МАЦ адресу. Због тога ћемо направити две везе: једну личну - на основу кључа уређаја, другу општу, која ради користећи комбинацију заједничког токена и МАЦ адресе.

Такође, нећу се задржавати на зеро-цонфигу, тј. подешавање телефона од нуле, тј. укључили сте га у мрежу и почео је да ради. Не, у мом сценарију, ви га прикључите на мрежу, урадите прелиминарно подешавање (подесите га да прима конфигурацију са сервера за обезбеђивање), а затим попијете пина цоладу и поново конфигуришете телефон по потреби кроз провизију. Опција дистрибуције 66 је одговорност ДХЦП сервера.

Иначе, потпуно сам уморан од изговора „обезбеђивање“, па је реч скраћена у „обезбеђивање“, молим вас немојте ме шутнути.

И још нешто: наш сервер за обезбеђивање нема кориснички интерфејс, тј. кориснички интерфејс. Можда, за сада, али нисам сигуран, јер... не треба ми. Али постоји АПИ за чување/брисање подешавања, добијање листе подржаних произвођача, модела, све је описано према канонима спецификације сваггер.

Зашто АПИ, а не кориснички интерфејс? Јер Већ имам свој телефонски систем, онда имам извор акредитива, где само треба да узмем ове податке, компајлирам неопходан јсон и објавим га на серверу за обезбеђивање. А сервер за обезбеђивање, у складу са правилима наведеним у јсон датотеци, даће потребном уређају његову конфигурацију или је неће дати ако уређај није исправан или не испуњава критеријуме наведене у овом јсон-у.

Соната - СИП сервер за обезбеђивање

Овако је испао микросервис за обезбеђивање. Цаллед соната, изворни код је доступан на ГитХуб-у, такође постоји спремна доцкер слика, пример употребе доцкер-а овде.

Кључне карактеристике:

  • у сваком случају, ограничен приступ конфигурацији по времену, подразумевано 10 минута. Ако желите да поново учините конфигурацију доступном, поново објавите конфигурацију.

  • један формат за све добављаче, сва подешавања се уклањају у сонати, шаљете стандардизовани јсон, конфигуришете сву доступну опрему.

  • све конфигурације издате уређајима се евидентирају, сва проблематична подручја се могу видети у евиденцији и могу се видети грешке

  • Могуће је користити једну заједничку везу са токеном; сваки телефон добија сопствену конфигурацију навођењем мац адресе. Или лични линк преко кључа.

  • АПИ-ји за управљање (управљање) и обезбеђивање конфигурација за телефоне (омогућавање) су подељени по портовима

  • Тестови. Било ми је јако важно да поправим формат издатог конфига и покријем све уобичајене ситуације издавања конфига тестовима. Тако да све ово функционише јасно.

Против:

До сада се шифровање ни на који начин не користи у Сонати. Оне. наравно можете почети да користите хттпс тако што ћете, на пример, ставити нгинк испред сонате. Али власничке методе још нису коришћене. Зашто? Пројекат је још млад, лансирао је својих првих сто уређаја. И, наравно, прикупљам идеје и повратне информације. Даље, да би све било безбедно, да се конфигови не би могли нањушити на мрежи, вероватно се вреди мучити са кључевима за шифровање, тлс-ом и јежом са њима, али ово ће бити наставак.

Недостатак корисничког интерфејса. Можда је ово значајан недостатак за крајњег корисника, али за администратора система, услужни програм конзоле је важнији од пуноправне апликације. Било је планова да се направи услужни програм за конзолу, али нисам сигуран да ли је потребан?

Резултат?

Мали и једноставан веб сервер за обезбеђивање неколико модела телефона са АПИ-јем за управљање.

Још једном, како би ово требало да функционише?

  1. Инсталирање сонате.
  2. Креирамо јсон конфигурацију и објављујемо је у сонати.
  3. Затим добијамо везу за обезбеђивање од сонате.
  4. Затим указујемо на ову везу у телефону.
  5. Уређај учитава конфигурацију

Постоје само два корака у следећој операцији:

  1. Креирамо јсон конфигурацију и објављујемо је у сонати
  2. Уређај учитава конфигурацију

Који телефони ће бити промовисани?

Продавци Грандстреам, Фанвил, Иеалинк. Конфигурације унутар добављача су мање-више исте, али се могу разликовати у зависности од фирмвера - можда ће бити потребно додатно тестирати.

Која правила можете поставити?

По времену. Можете одредити време до којег ће конфигурација бити доступна.
По мац адреси. Приликом слања конфигурације путем личне везе уређаја, мац адреса ће такође бити проверена.
Би ип. По ИП адреси са које је поднет захтев.

Како комуницирати са сонатом?

Преко АПИ-ја, прављење хттп захтева. АПИ ће бити доступан у вашој инсталацији. Јер АПИ подржава спецификацију сваггер, коју можете користити онлајн услужни програм за тестне захтеве за АПИ.

Ок супер. Сјајне ствари, како би било да пробате?

Најлакши начин је да примените доцкер слику засновану на спремишту соната-узорак. Репозиторијум садржи упутства за инсталацију.

Шта ако знам ноде.јс?

Ако имате искуства са коришћењем ЈаваСцрипт-а, брзо ћете схватити како све овде функционише.

Да ли ће бити развоја Сонате?

Делимично сам остварио своје циљеве. Даљи развој је ствар мојих задатака на тему аутоматизације подешавања телефона. Такође постоји могућност да проширите конфигурације да бисте конфигурисали дугмад телефона, додали обезбеђивање адресара, можда нешто друго, напишите у коментарима.

Резиме и признања

Биће ми драго да имам конструктивне предлоге/замерке/коментаре и питања, јер... Може бити да је нешто неразумљиво описао.

Такође изражавам захвалност свим мојим колегама који су помогли, саветовали, тестирали и обезбедили/донирали телефоне за тестирање. У стварности, многи људи са којима сам комуницирао на послу су укључени у пројекат у различитом степену, АстерЦонф'е, у ћаскањима и имејловима. Хвала на идејама и размишљањима.

Извор: ввв.хабр.цом

Додај коментар