Sonata - SIP provisioning server

Wala ko kabalo kung unsay ikumpara sa provisioning. Basin naay iring? Kini daw posible nga wala kini, apan uban niini kini usa ka gamay nga mas maayo. Ilabi na kung kini molihok))

Pagporma sa problema:

  1. Gusto nakong i-set up ang mga SIP phone nga dali, dali, ug luwas. Kung nag-instalar sa usa ka telepono, ug labi pa kung gi-reconfigure kini.
  2. Daghang mga tigbaligya adunay ilang kaugalingon nga mga format sa config, ilang kaugalingon nga mga gamit sa paghimo og mga config, ug ilang kaugalingon nga mga paagi sa pagpanalipod sa mga config. Ug dili gyud ko gusto nga makig-atubang sa tanan.
  3. Daghang mga solusyon sa paghatag, a) naka-focus sa usa ka vendor o usa ka sistema sa telepono, b) medyo lisud nga ipatuman, daghang mga script, parameter, brrr...

Mahitungod sa punto 3, mohimo ako usa ka komento nga adunay maayo kaayo nga sistema sa paghatag alang sa FreePBX, alang sa FusionPBX, para sa Kazoo, diin ang mga templates alang sa mga telepono gikan sa lain-laing mga vendor anaa sa publiko. Adunay mga komersyal nga solusyon diin mahimo usab nimo i-configure ang operasyon sa mga telepono gikan sa lainlaing mga tiggama sa module sa paghatag, pananglitan, Yeastar PBX.

Ang HabrΓ© puno usab sa mga resipe kung giunsa ang pag-set up sa mga aparato gikan sa lainlaing mga tigbaligya: mga panahon, duha ka. Apan sama sa ilang giingon, ang tanan nga mga sistema adunay usa ka makamatay nga sayup. Mao nga maghimo mi ug kaugalingong bike.

imong kaugalingong format

Sama sa giingon nila sa xkcd, kung dili nimo gusto nga atubangon ang 14 nga mga format - abot sa ika-15. Busa, gigamit namo ang kinatibuk-ang mga setting alang sa bisan unsang telepono ug naghimo sa among kaugalingong json config format.

Usa ka butang nga sama niini:

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

Busa, sa bisan unsang telepono kinahanglan nimo nga i-configure ang lokal nga oras ug mga linya sa SIP. Ang tanan yano dinhi. Makita nimo ang dugang nga mga pananglitan dinhi.

imong kaugalingon nga paghatag sa server

Sa mga manwal sa tiggama kasagaran adunay usa ka punto diin kini nag-ingon: pagkuha og csv, isulat ang imong login-password-mac-address, paghimo og mga file gamit ang among proprietary script, ibutang kini sa ilawom sa Apache web server ug ang tanan mamaayo ra.

Ang sunod nga paragraph sa manwal kasagaran nagsulti kanimo nga mahimo usab nimo nga i-encrypt ang nahimo nga config file.

Apan kining tanan mga klasiko. Ang modernong pamaagi nga adunay smoothies ug Twitter nag-ingon nga kinahanglan nimo nga maghimo usa ka andam nga nahimo nga web server nga dili sama ka kusgan sa Apache, apan maghimo usa ka gamay nga butang. Paghimo ug pagpadala mga config gamit ang usa ka link.

Mohunong kita dinhi ug hinumdomi nga halos tanang SIP phones makadawat na karon og mga configs pinaagi sa http/https, mao nga wala na nato tagda ang ubang mga implementasyon (ftp, tftp, ftps). Pagkahuman, nahibal-an sa matag telepono ang kaugalingon nga MAC address. Busa, maghimo kami og duha ka mga link: usa ka personal - base sa yawe sa device, ang ikaduha nga heneral, nga nagtrabaho gamit ang kombinasyon sa usa ka komon nga token ug MAC address.

Usab, dili ako maghisgot sa zero-config, i.e. pag-set up sa telepono gikan sa scratch, i.e. imong gisaksak kini sa network ug kini nagsugod sa pagtrabaho. Dili, sa akong senaryo, imong i-plug kini sa network, buhata ang preliminary setup (i-set up kini aron madawat ang config gikan sa provisioning server), ug dayon imnon ang pina colada ug i-reconfigure ang telepono kung gikinahanglan pinaagi sa provisioning. Ang Pag-apod-apod sa Opsyon 66 mao ang responsibilidad sa DHCP server.

Pinaagi sa dalan, ako hingpit nga gikapoy sa pag-ingon nga "pagtagana", mao nga ang pulong gipamub-an sa "tagana", palihug ayaw ako sipa.

Ug usa pa ka butang: ang among provisioning server walay UI, i.e. user interface. Tingali, sa pagkakaron, apan dili sigurado, tungod kay... Wala ko magkinahanglan niini. Apan adunay usa ka API alang sa pagtipig / pagtangtang sa mga setting, pagkuha usa ka lista sa gisuportahan nga mga tigbaligya, mga modelo, ang tanan gihulagway sumala sa mga kanon sa detalye sa swagger.

Ngano nga API ug dili UI? Kay Naa na koy kaugalingon nga sistema sa telepono, unya naa koy tinubdan sa mga kredensyal, diin kinahanglan nako nga kuhaon kini nga datos, i-compile ang gikinahanglan nga json ug i-publish kini sa provisioning server. Ug ang provisioning server, sumala sa mga lagda nga gipiho sa json file, maghatag sa gikinahanglan nga device sa iyang config o dili kung ang device dili husto o wala makaabot sa criteria nga gitakda usab niini nga json.

Sonata - SIP provisioning server

Ingon niini ang nahimo sa provisioning microservice. Gitawag sonata, ang source code anaa sa GitHub, aduna usab andam nga docker nga imahe, pananglitan sa paggamit sa docker dinhi.

Pangunang mga bahin:

  • sa bisan unsang kaso, limitado ang pag-access sa config sa oras, sa default 10 minuto. Kung gusto nimo nga magamit pag-usab ang config, i-republish pag-usab ang configuration.

  • usa ka format para sa tanang vendors, ang tanang adjustment gitangtang sa sonata, nagpadala ka og standardized json, configure ang bisan unsang available nga ekipo.

  • ang tanan nga mga config nga gi-isyu sa mga aparato gi-log, ang tanan nga mga lugar nga adunay problema mahimong makita sa log ug makita ang mga sayup

  • Posible nga gamiton ang usa ka komon nga link nga adunay usa ka timaan; ang matag telepono makadawat sa kaugalingon nga config pinaagi sa pagtino sa mac address. O usa ka personal nga link pinaagi sa yawe.

  • Ang mga API alang sa pagdumala (pagdumala) ug paghatag sa mga config sa mga telepono (paghatag) gibahin sa mga pantalan

  • Mga pagsulay. Importante kaayo alang kanako ang pag-ayo sa format sa gi-isyu nga config ug pagtabon sa tanan nga naandan nga mga sitwasyon sa pag-isyu sa usa ka config nga adunay mga pagsulay. Aron kining tanan molihok nga klaro.

Kahinumduman:

Sa pagkakaron, ang pag-encrypt wala gigamit sa bisan unsang paagi sulod sa Sonata. Mga. mahimo ka siyempre magsugod sa paggamit sa https pinaagi sa pagbutang sa nginx sa atubangan sa sonata pananglitan. Apan ang proprietary nga mga pamaagi wala pa magamit. Ngano man? Batan-on pa ang proyekto, naglansad kini sa una nga gatos nga mga aparato. Ug, siyempre, nangolekta ko og mga ideya ug feedback. Dugang pa, aron mahimo ang tanan nga luwas, aron ang mga configs dili ma-sniff sa network, tingali angayan nga magsamok sa mga yawe sa pag-encrypt, tls ug hedgehog uban kanila, apan kini usa ka pagpadayon.

Kulang sa UI. Tingali kini usa ka hinungdanon nga disbentaha alang sa katapusan nga tiggamit, apan alang sa usa ka tagdumala sa sistema, ang usa ka utility sa console labi ka hinungdanon kaysa usa ka hingpit nga aplikasyon. Adunay mga plano nga maghimo usa ka gamit sa console, apan dili ako sigurado kung kinahanglan ba kini?

Unsa man ang sa katapusan?

Usa ka gamay ug yano nga web server alang sa paghatag daghang mga modelo sa telepono nga adunay API alang sa pagdumala.

Sa makausa pa, sa unsang paagi kini molihok?

  1. Pag-instalar sa sonata.
  2. Naghimo kami og json config ug gimantala kini sa sonata.
  3. Dayon makadawat kami ug provisioning link gikan sa sonata.
  4. Dayon among gipakita kini nga link sa telepono.
  5. Ang aparato nagkarga sa config

Adunay duha lamang ka lakang sa sunod nga operasyon:

  1. Naghimo kami og json config ug gimantala kini sa sonata
  2. Ang aparato nagkarga sa config

Unsang mga telepono ang i-promote?

Vendor Grandstream, Fanvil, Yealink. Ang mga config sa sulod sa vendor mas daghan o dili kaayo parehas, apan mahimong magkalainlain depende sa firmware - mahimo’g kinahanglan nga sulayan pa.

Unsa nga mga lagda ang imong mahimo?

Sa panahon. Mahimo nimong itakda ang oras hangtod nga magamit ang config.
Pinaagi sa mac address. Kung isumite ang config pinaagi sa personal nga link sa aparato, susihon usab ang adres sa mac.
Pinaagi sa ip. Pinaagi sa IP address gikan diin gihimo ang hangyo.

Unsaon pagpakig-uban sa sonata?

Pinaagi sa API, paghimo sa mga hangyo sa http. Ang API mahimong magamit sa imong pag-install. Kay Gisuportahan sa API ang detalye sa swagger, mahimo nimong gamiton online nga gamit alang sa mga hangyo sa pagsulay sa API.

OK, maayo. Nindot nga mga butang, unsaon man sa pagsulay niini?

Ang labing kadali nga paagi mao ang pag-deploy sa usa ka docker nga imahe base sa usa ka repository sonata-sample. Ang repository adunay mga panudlo sa pag-install.

Unsa kaha kung nahibal-an nako ang node.js?

Kung adunay ka kasinatian sa paggamit sa JavaScript, dayon mahibal-an nimo kung giunsa ang tanan nga nagtrabaho dinhi.

Aduna bay pag-uswag sa Sonata?

Nakab-ot nako ang akong mga tumong. Ang dugang nga pag-uswag usa ka butang sa akong mga buluhaton sa hilisgutan sa pag-automate sa pag-setup sa telepono. Adunay usab usa ka oportunidad sa pagpalapad sa mga config aron ma-configure ang mga buton sa telepono, idugang ang paghatag sa address book, tingali usa pa, isulat sa mga komento.

Summary ug mga pag-ila

Malipay ko nga adunay makaayo nga mga sugyot/pagsupak/komento ug mga pangutana, tungod kay... Mahimo nga may ginlaragway sia nga indi mahangpan.

Gipahayag usab nako ang akong pasalamat sa tanan nakong mga kauban nga mitabang, nagtambag, nagsulay, ug naghatag / nagdonar sa mga telepono alang sa mga pagsulay. Sa tinuud, daghang mga tawo nga akong nakigsulti sa trabaho ang nalambigit sa proyekto sa lainlaing mga ang-ang, AsterConf'e, sa mga chat ug email. Salamat sa mga ideya ug hunahuna.

Source: www.habr.com

Idugang sa usa ka comment