Sonata - SIP камсыздоо сервери

Мен камсыздоону эмне менен салыштырарымды билбейм. Балким, мышык менен? Ансыз мүмкүн көрүнөт, бирок аны менен бир аз жакшыраак. Айрыкча ал иштесе))

Проблеманын түзүлүшү:

  1. Мен SIP телефондорун тез, оңой жана коопсуз орноткум келет. Телефонду орнотуп жатканда, андан да көбүрөөк аны кайра конфигурациялоодо.
  2. Көптөгөн сатуучулардын өздөрүнүн конфигурация форматтары, конфигурацияларды түзүү үчүн өздөрүнүн утилиталары жана конфигурацияларды коргоонун өз жолдору бар. А мен ар ким менен мамиле түзгүм келбейт.
  3. Көптөгөн камсыздоо чечимдери, а) бир сатуучуга же бир телефон тутумуна багытталган, б) ишке ашыруу өтө оор, көптөгөн сценарийлер, параметрлер, brrr...

3-пунктуна байланыштуу, мен эң сонун камсыздоо системалары бар деп комментарий берем FreePBX үчүн, FusionPBX үчүн, Kazoo үчүн, бул жерде ар кандай сатуучулардын телефондорунун үлгүлөрү жалпыга жеткиликтүү. Коммерциялык чечимдер бар, аларда сиз ар кандай өндүрүүчүлөрдүн телефондорунун иштешин камсыздоо модулунда конфигурациялай аласыз, мисалы, Yeastar PBX.

Habré ошондой эле ар кандай сатуучулардан түзмөктөрдү кантип орнотуу боюнча рецепттерге толгон: убакыт, два. Бирок алар айткандай, бардык системалардын өлүмгө алып келе турган кемчилиги бар. Ошентип, биз өзүбүздүн велосипед жасайбыз.

өз форматыңыз

Алар xkcd айткандай, эгер сиз 14 формат менен иштегиңиз келбесе - 15 менен кел. Ошондуктан, биз каалаган телефон үчүн жалпы орнотууларды колдонобуз жана өзүбүздүн 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"
      }
   ]
}

Ошентип, каалаган телефондо сиз жергиликтүү убакытты жана SIP линияларын конфигурациялашыңыз керек. Бул жерде баары жөнөкөй. Сиз көбүрөөк мисалдарды көрө аласыз бул жерде.

өзүңүздүн сервериңизди камсыздоо

Өндүрүүчүнүн колдонмолорунда, адатта, мындай деген пункт бар: csv алып, логин-пароль-mac-дарегиңизди жазыңыз, биздин менчик скриптибизди колдонуп файлдарды жаратыңыз, аларды Apache веб-серверинин астына койуңуз жана баары жакшы болот.

Колдонмонун кийинки абзацында, адатта, түзүлгөн конфигурация файлын да шифрлей аласыз деп айтылат.

Бирок булардын баары классика. Smoothies жана Twitter менен заманбап мамиле сиз Apache сыяктуу күчтүү эмес, бир гана кичинекей нерсени жасай турган даяр веб-серверди жасашыңыз керек дейт. Шилтеме аркылуу конфигурацияларды түзүңүз жана жөнөтүңүз.

Келгиле, ушул жерден токтоп, дээрлик бардык SIP телефондору азыр http/https аркылуу конфигурацияларды ала аларын эстеп көрөлү, ошондуктан биз башка ишке ашырууларды (ftp, tftp, ftps) карап жаткан жокпуз. Андан кийин, ар бир телефон өзүнүн MAC дарегин билет. Ошондуктан, биз эки шилтеме жасайбыз: бири жеке - түзмөктүн ачкычынын негизинде, экинчиси жалпы белгинин жана MAC дарегинин айкалышы менен иштейт.

Ошондой эле, мен нөл-конфигурацияга токтолбойм, б.а. телефонду нөлдөн баштап орнотуу, б.а. сиз аны тармакка коштуңуз жана ал иштей баштады. Жок, менин сценарийимде, сиз аны тармакка туташтырасыз, алдын ала жөндөөлөрдү жасайсыз (аны конфигурациялоо серверинен конфигурацияны алуу үчүн орнотуңуз), андан кийин pina colada ичип, телефонду керектөө аркылуу кайра конфигурациялайсыз. 66-параметрди жайылтуу DHCP серверинин жоопкерчилигинде.

Баса, “камсыздоо” дегенден такыр тажадым, ошондуктан сөз “камсыздоо” болуп кыскарып кетти, мени теппей эле коюңуз.

Жана дагы бир нерсе: биздин камсыздоо серверибизде UI жок, б.а. колдонуучу интерфейси. Балким, азырынча, бирок так эмес, анткени... мага кереги жок. Бирок орнотууларды сактоо/жок кылуу, колдоого алынган сатуучулардын, моделдердин тизмесин алуу үчүн API бар, бардыгы сваггер спецификациясынын канондоруна ылайык сүрөттөлөт.

Эмне үчүн UI эмес, API? Анткени Менин жеке телефон тутумум бар, анда менде эсептик дайындардын булагы бар, анда мен бул маалыматтарды алып, керектүү json түзүшүм жана аны камсыздоо серверинде жарыялоом керек. Ал эми провизия сервери, json файлында көрсөтүлгөн эрежелерге ылайык, талап кылынган түзмөккө конфигурациясын берет же түзмөк туура эмес же ушул json файлында көрсөтүлгөн критерийлерге жооп бербесе, аны бербейт.

Sonata - SIP камсыздоо сервери

Камсыздоо микросервиси ушундай болду. Чакырылды сонатасы, булак коду GitHubда жеткиликтүү, ошондой эле бар даяр докер сүрөтү, докер колдонуу мисалы бул жерде.

Негизги өзгөчөлүктөрү:

  • кандай болгон күндө да, конфигурацияга убакыт боюнча чектелген мүмкүнчүлүк, демейки боюнча 10 мүнөт. Эгер конфигурацияны кайра жеткиликтүү кылгыңыз келсе, конфигурацияны кайра жарыялаңыз.

  • бардык сатуучулар үчүн бир формат, бардык оңдоолор сонатада алынып салынат, сиз стандартташтырылган json жөнөтөсүз, бардык жеткиликтүү жабдууларды конфигурациялайсыз.

  • түзмөктөргө берилген бардык конфигурациялар журналга жазылат, бардык көйгөйлүү аймактарды журналдан көрүүгө жана каталарды көрүүгө болот

  • Токен менен бир жалпы шилтемени колдонсо болот, ар бир телефон Mac дарегин көрсөтүү менен өзүнүн конфигурациясын алат. Же ачкыч аркылуу жеке шилтеме.

  • Телефондорго конфигурацияларды башкаруу (башкаруу) жана камсыздоо (провизиялоо) үчүн API'лер порттор боюнча бөлүнөт

  • Тесттер. Чыгарылган конфигурациянын форматын оңдоо жана конфигурацияны чыгаруунун бардык кадимки жагдайларын тесттер менен камтуу мен үчүн абдан маанилүү болду. Ошентип, мунун баары ачык-айкын иштейт.

жактары:

Буга чейин, шифрлөө Sonata ичинде эч кандай жол менен колдонулган эмес. Ошол. мисалы, сонатанын алдына nginx коюу менен, албетте, https колдоно баштасаңыз болот. Бирок менчик ыкмалары азырынча колдонула элек. Неге? Долбоор али жаш, ал өзүнүн алгачкы жүз аппараттарын ишке киргизди. Анан, албетте, идеяларды жана пикирлерди чогултам. Андан ары, бардыгын коопсуз кылуу үчүн, конфигурацияларды тармакта жыттап албаш үчүн, балким, шифрлөө ачкычтары, tls жана алар менен кирпи менен убара болуш керек, бирок бул уландысы болот.

UI жоктугу. Балким, бул акыркы колдонуучу үчүн олуттуу кемчилик, бирок системанын администратору үчүн толук кандуу тиркемеге караганда консолдук программа маанилүү. Консолдун утилитасын жасоо пландары бар болчу, бирок ал керекпи же жокпу билбейм?

Мунун натыйжасы кандай болот?

Башкаруу үчүн API менен бир нече телефон моделдерин камсыздоо үчүн чакан жана жөнөкөй веб-сервер.

Дагы бир жолу, бул кантип иштеши керек?

  1. Соната орнотулууда.
  2. Биз json конфигурациясын түзүп, аны сонатада жарыялайбыз.
  3. Андан кийин биз сонатадан камсыздоо шилтемесин алабыз.
  4. Анан бул шилтемени телефондо көрсөтөбүз.
  5. Түзмөк конфигурацияны жүктөөдө

Кийинки операцияда эки гана кадам бар:

  1. Биз json конфигурациясын түзүп, аны сонатада жарыялайбыз
  2. Түзмөк конфигурацияны жүктөөдө

Кайсы телефондор көтөрүлөт?

Сатуучулар Grandstream, Fanvil, Yealink. Сатуучунун ичиндеги конфигурациялар аздыр-көптүр окшош, бирок микропрограммага жараша айырмаланышы мүмкүн - кошумча текшерүү керек болушу мүмкүн.

Кандай эрежелерди орното аласыз?

Убакыт менен. Сиз конфигурация жеткиликтүү боло турган убакытты белгилей аласыз.
Mac дареги боюнча. Конфигурацияны аппараттын жеке шилтемеси аркылуу тапшырганда, Mac дареги да текшерилет.
By ip. Сурам жасалган жерден IP дареги боюнча.

Соната менен кантип иштешсе болот?

API аркылуу, http сурамдарын кабыл алуу. API орнотууңузда жеткиликтүү болот. Анткени API swagger спецификациясын колдойт, сиз колдоно аласыз онлайн утилитасы API'ге сыноо сурамдары үчүн.

Макул, сонун. Сонун нерселер, сынап көрөйүнбү?

Эң оңой жолу - репозиторийдин негизинде докер сүрөтүн жайгаштыруу соната-үлгү. Репозиторий орнотуу көрсөтмөлөрүн камтыйт.

Мен node.js билсем эмне болот?

Эгер сизде JavaScriptти колдонуу тажрыйбаңыз болсо, анда бул жерде баары кантип иштээрин тез түшүнөсүз.

Соната иштеп чыгуу болобу?

Мен максаттарыма жарым-жартылай жеттим. Андан ары өнүктүрүү - бул телефонду орнотууну автоматташтыруу темасы боюнча менин милдеттерим. Телефон баскычтарын конфигурациялоо үчүн конфигурацияларды кеңейтүү мүмкүнчүлүгү бар, даректер китебин камсыздоону кошуу, балким, башка нерсе, комментарийге жазыңыз.

Кыскача маалымат жана ыраазычылык

Мен конструктивдүү сунуштар/каршылыктар/комментарийлер жана суроолор болсо кубанычта болом, анткени... Балким, ал түшүнүксүз бир нерсени сүрөттөгөн болушу мүмкүн.

Ошондой эле жардам берген, кеңеш берген, сынап көргөн жана тесттер үчүн телефондорду берген/берген бардык кесиптештериме ыраазычылык билдирем. Чындыгында, мен жумушта баарлашкан көптөгөн адамдар долбоорго ар кандай деңгээлде катышып жатышат, AsterConf'e, чаттарда жана электрондук почталарда. Идеялар жана ойлор үчүн рахмат.

Source: www.habr.com

DDoS коргоосу, VPS VDS серверлери бар сайттар үчүн ишенимдүү хостинг сатып алыңыз 🔥 DDoS коргоосу, VPS VDS серверлери бар ишенимдүү веб-сайт хостингин сатып алыңыз | ProHoster