Sonata - server ta' forniment ta' SIP

Ma nafx ma' xiex se nqabbel il-proviżjonament. Forsi ma qattus? Jidher possibbli mingħajrha, iżda magħha huwa ftit aħjar. Speċjalment jekk taħdem))

Formulazzjoni tal-problema:

  1. Irrid inwaqqaf telefowns SIP malajr, faċilment u mingħajr periklu. Meta tinstalla telefon, u aktar u aktar meta tikkonfigurah mill-ġdid.
  2. Ħafna bejjiegħa għandhom il-formati tal-konfigurazzjoni tagħhom stess, l-utilitajiet tagħhom stess biex jiġġeneraw il-konfigurazzjonijiet, u l-modi tagħhom kif jipproteġu l-konfigurazzjonijiet. U ma tantx irrid nittratta ma 'kulħadd.
  3. Ħafna soluzzjonijiet ta' forniment, a) huma ffukati fuq bejjiegħ wieħed jew sistema waħda tat-telefon, b) huma pjuttost ingombranti biex jiġu implimentati, ħafna skripts, parametri, brrr...

Rigward il-punt 3, se nagħmel kumment li hemm sistemi eċċellenti ta' forniment для FreePBX, għal FusionPBX, għal Kazoo, fejn mudelli għat-telefowns minn diversi bejjiegħa huma pubblikament disponibbli. Hemm soluzzjonijiet kummerċjali fejn tista 'wkoll tikkonfigura l-operat tat-telefowns minn manifatturi differenti fil-modulu ta' forniment, pereżempju, Yeastar PBX.

На Хабре также полно рецептов как настроить аппараты различных вендоров: ħin, два. Imma kif jgħidu, is-sistemi kollha għandhom difett fatali. Allura aħna ser nagħmlu r-rota tagħna stess.

format tiegħek stess

Kif jgħidu f'xkcd, jekk ma tridx tittratta 14-il format - toħroġ mal-15. Għalhekk, nużaw settings ġenerali għal kwalunkwe telefon u nagħmlu l-format tal-konfigurazzjoni json tagħna stess.

Xi ħaġa bħal din:

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

Għalhekk, fi kwalunkwe telefon għandek bżonn tikkonfigura l-ħin lokali u l-linji SIP. Kollox huwa sempliċi hawn. Tista 'tara aktar eżempji hawn.

il-provvista tas-server tiegħek stess

Fil-manwali tal-manifattur normalment ikun hemm punt fejn jgħid: ħu csv, ikteb l-indirizz tal-login-password-mac-address tiegħek, iġġenera l-fajls bl-użu tal-iskript proprjetarju tagħna, poġġihom taħt is-server tal-web Apache u kollox ikun tajjeb.

Il-paragrafu li jmiss tal-manwal normalment jgħidlek li tista 'wkoll tikkripta l-fajl tal-konfigurazzjoni ġġenerat.

Iżda dawn huma kollha klassiċi. L-approċċ modern bi smoothies u Twitter jgħid li għandek bżonn tagħmel web server lest li mhux se jkun b'saħħtu daqs Apache, iżda se jagħmel biss ħaġa waħda żgħira. Iġġenera u ibgħat konfigurazzjonijiet billi tuża link.

Ejja nieqfu hawn u ftakar li kważi t-telefowns SIP kollha issa jistgħu jirċievu konfigurazzjonijiet permezz ta’ http/https, għalhekk mhux qed nikkunsidraw implimentazzjonijiet oħra (ftp, tftp, ftps). Imbagħad, kull telefon jaf l-indirizz MAC tiegħu stess. Għalhekk, se nagħmlu żewġ links: wieħed personali - ibbażat fuq iċ-ċavetta tal-apparat, it-tieni ġenerali, li jaħdem bl-użu ta 'kombinazzjoni ta' token komuni u indirizz MAC.

Ukoll, mhux se nitkellem fuq zero-config, i.e. it-twaqqif tat-telefon mill-bidu, i.e. daħħaltha fin-netwerk u bdiet taħdem. Le, fix-xenarju tiegħi, inti plaggha fin-netwerk, tagħmel is-setup preliminari (issettjaha biex tirċievi l-konfigurazzjoni mis-server tal-forniment), u mbagħad tixrob pina colada u tikkonfigura mill-ġdid it-telefon kif meħtieġ permezz tal-forniment. Id-distribuzzjoni tal-Għażla 66 hija r-responsabbiltà tas-server DHCP.

Mill-mod, jien kompletament għajjien li ngħid "provvista", għalhekk il-kelma tqassar għal "provvista", jekk jogħġbok taqbadx lili.

U ħaġa oħra: is-server tal-provvista tagħna m'għandux UI, i.e. interface tal-utent. Forsi, għalissa, imma mhux ċert, għax... M'għandix bżonnha. Iżda hemm API għall-iffrankar/tħassir ta 'settings, jkollna lista ta' bejjiegħa appoġġjati, mudelli, kollox huwa deskritt skond il-kanoni ta 'l-ispeċifikazzjoni swagger.

Għaliex API u mhux UI? Għax Diġà għandi s-sistema tat-telefon tiegħi stess, allura għandi sors ta 'kredenzjali, fejn għandi bżonn biss nieħu din id-dejta, niġbor il-json meħtieġ u nippubblikaha fuq is-server tal-forniment. U s-server tal-forniment, skont ir-regoli speċifikati fil-fajl json, se jagħti lill-apparat meħtieġ il-konfigurazzjoni tiegħu jew mhux se jagħtih jekk l-apparat ma jkunx korrett jew ma jissodisfax il-kriterji speċifikati wkoll f'dan il-json.

Sonata - server ta' forniment ta' SIP

Hekk irriżulta l-mikroservizz tal-forniment. Imsejjaħ sonata, il-kodiċi tas-sors huwa disponibbli fuq GitHub, hemm ukoll immaġni docker lesta, eżempju ta' użu ta' docker hawn.

Karatteristiċi ewlenin:

  • fi kwalunkwe każ, aċċess limitat għall-konfigurazzjoni mill-ħin, awtomatikament 10 minuti. Jekk trid terġa' tagħmel il-konfigurazzjoni disponibbli, erġa' ppubblika l-konfigurazzjoni.

  • format wieħed għall-bejjiegħa kollha, l-aġġustamenti kollha jitneħħew fis-sonata, tibgħat json standardizzat, tikkonfigura kwalunkwe tagħmir disponibbli.

  • Il-konfigurazzjonijiet kollha maħruġa lill-apparati huma illoggjati, iż-żoni problematiċi kollha jistgħu jidhru fir-reġistru u l-iżbalji jistgħu jidhru

  • Huwa possibbli li tuża rabta komuni waħda b'token; kull telefon jirċievi l-konfigurazzjoni tiegħu stess billi jispeċifika l-indirizz mac. Jew rabta personali permezz taċ-ċavetta.

  • APIs għall-ġestjoni (ġestjoni) u l-forniment ta' konfigurazzjonijiet għat-telefowns (provvista) huma maqsuma bil-portijiet

  • Testijiet. Kien importanti ħafna għalija li nirranġa l-format tal-konfigurazzjoni maħruġa u nkopri s-sitwazzjonijiet kollha tas-soltu ta 'ħruġ ta' konfigurazzjoni bit-testijiet. Sabiex dan kollu jaħdem b'mod ċar.

Cons:

S'issa, il-kriptaġġ ma jintuża bl-ebda mod fi ħdan Sonata. Dawk. ovvjament tista' tibda tuża https billi tpoġġi nginx quddiem is-sonata pereżempju. Iżda metodi proprjetarji għadhom ma ntużawx. Għaliex? Il-proġett għadu żagħżugħ, nieda l-ewwel mitt apparat tiegħu. U, ovvjament, niġbor ideat u feedback. Barra minn hekk, sabiex tagħmel kollox sikur, sabiex il-konfigurazzjonijiet ma jkunux jistgħu jiġu mxammra fuq in-netwerk, probabbilment ta 'min jolqot b'ċwievet ta' encryption, tls u l-qanfud magħhom, iżda din se tkun kontinwazzjoni.

Nuqqas ta' UI. Forsi dan huwa żvantaġġ sinifikanti għall-utent aħħari, iżda għal amministratur tas-sistema, utilità tal-console hija aktar importanti minn applikazzjoni sħiħa. Kien hemm pjanijiet biex issir utilità tal-console, imma m'inix ċert jekk huwiex meħtieġ?

Ir-riżultat?

Web server żgħir u sempliċi għall-forniment ta' diversi mudelli tat-telefon b'API għall-ġestjoni.

Għal darb'oħra, dan kif suppost jaħdem?

  1. Installazzjoni ta 'sonata.
  2. Aħna noħolqu konfigurazzjoni json u nippubblikawha f'sonata.
  3. Imbagħad nirċievu link tal-provvista minn sonata.
  4. Imbagħad nindikaw din il-link fit-telefon.
  5. L-apparat qed jgħabbi l-konfigurazzjoni

Hemm biss żewġ passi fl-operazzjoni sussegwenti:

  1. Aħna noħolqu konfigurazzjoni json u nippubblikawha f'sonata
  2. L-apparat qed jgħabbi l-konfigurazzjoni

Liema telefowns se jiġu promossi?

Bejjiegħa Grandstream, Fanvil, Yealink. Il-konfigurazzjonijiet fi ħdan il-bejjiegħ huma bejn wieħed u ieħor l-istess, iżda jistgħu jvarjaw skont il-firmware - jista 'jkun meħtieġ li tittestja addizzjonalment.

X'regoli tista' tistabbilixxi?

Biż-żmien. Tista' tispeċifika ż-żmien sa meta l-konfigurazzjoni tkun disponibbli.
Permezz tal-indirizz mac. Meta tissottometti l-konfigurazzjoni permezz tal-link personali tal-apparat, l-indirizz mac jiġi ċċekkjat ukoll.
Permezz ip. Permezz tal-indirizz IP minn fejn saret it-talba.

Как взаимодействовать c sonata?

Permezz tal-API, tagħmel talbiet http. L-API se tkun disponibbli fl-installazzjoni tiegħek. Għax L-API tappoġġja l-ispeċifikazzjoni swagger, tista 'tuża utilità onlajn għal talbiet tat-test lill-API.

OK, kbir. Jittieħed jibred, kif dwar tipprova dan?

L-eħfef mod huwa li tuża immaġni docker ibbażata fuq repożitorju sonata-kampjun. Ir-repożitorju fih struzzjonijiet għall-installazzjoni.

X'jiġri jekk naf node.js?

Jekk għandek esperjenza bl-użu tal-JavaScript, allura malajr issib kif kollox jaħdem hawn.

Se jkun hemm żvilupp Sonata?

Lħaqt parzjalment l-għanijiet tiegħi. Żvilupp ulterjuri huwa kwistjoni tal-kompiti tiegħi dwar is-suġġett ta 'awtomatizzazzjoni tas-setup tat-telefon. Hemm ukoll opportunità biex tespandi l-konfigurazzjonijiet biex tikkonfigura l-buttuni tat-telefon, iżżid il-provvista tal-ktieb tal-indirizzi, forsi xi ħaġa oħra, ikteb fil-kummenti.

Sommarju u rikonoxximenti

Inkun kuntent li jkolli suġġerimenti/oġġezzjonijiet/kummenti u mistoqsijiet kostruttivi, għax... Jista 'jkun li huwa ddeskriva xi ħaġa inkomprensibbli.

Nesprimi wkoll il-gratitudni tiegħi lill-kollegi tiegħi kollha li għenu, taw pariri, ittestjaw, u pprovdew/taw telefowns għat-testijiet. Fir-realtà, ħafna nies li kkomunikajt magħhom fuq ix-xogħol huma involuti fil-proġett fi gradi differenti, AsterConf'e, fi chats u emails. Grazzi għall-ideat u l-ħsibijiet.

Sors: www.habr.com

Żid kumment