Sonata - SIP Bestëmmung Server

Ech weess net wat d'Bestëmmung mat ze vergläichen. Vläicht mat enger Kaz? Et schéngt méiglech ouni et, awer mat et ass e bësse besser. Besonnesch wann et funktionnéiert))

Formuléierung vum Problem:

  1. Ech wëll SIP Telefone séier, einfach a sécher opstellen. Wann Dir en Telefon installéiert, an nach méi wann Dir en nei konfiguréiert.
  2. Vill Ubidder hunn hir eege Konfiguratiounsformater, hir eege Utilities fir Konfiguratiounen ze generéieren an hir eege Weeër fir Konfiguratiounen ze schützen. An ech wëll net wierklech mat jidderengem ëmgoen.
  3. Vill Bestëmmungsléisungen, a) konzentréieren sech op ee Verkeefer oder en Telefonsystem, b) si ganz ëmständlech fir ëmzesetzen, vill Scripten, Parameteren, brrr...

Wat de Punkt 3 ugeet, wäert ech e Kommentar maachen, datt et exzellente Bestëmmungssystemer gëtt fir FreePBX, fir FusionPBX, fir Kazoo, wou Schabloune fir Telefone vu verschiddene Verkeefer ëffentlech verfügbar sinn. Et gi kommerziell Léisungen, wou Dir och d'Operatioun vun Telefone vu verschiddene Hiersteller am Bestëmmungsmodul konfiguréiere kënnt, zum Beispill Yeastar PBX.

Habré ass och voller Rezepter wéi een Apparater vu verschiddene Verkeefer opstellt: Zäiten, два. Awer wéi se soen, all Systemer hunn e fatale Feeler. Also maache mir eisen eegene Vëlo.

Ären eegene Format

Wéi se an xkcd soen, wann Dir net mat 14 Formater këmmere wëllt - kommen mam 15. Dofir benotze mir allgemeng Astellunge fir all Telefon a maachen eisen eegene json Config Format.

Sou eppes:

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

Also, an all Telefon musst Dir Lokalzäit a SIP Linnen konfiguréieren. Alles ass einfach hei. Dir kënnt méi Beispiller gesinn hei.

Ären eegene Serverbestëmmung

An den Handbuch vum Hiersteller gëtt et normalerweis e Punkt wou et seet: huelt eng Csv, schreift Är Login-Passwuert-Mac-Adress erof, generéiert Dateien mat eisem propriétaire Skript, setzt se ënner dem Apache Webserver an alles wäert gutt sinn.

De nächste Paragraphe vum Handbuch seet Iech normalerweis datt Dir och déi generéiert Konfiguratiounsdatei verschlëssele kënnt.

Mä dëst sinn all Klassiker. Déi modern Approche mat Smoothies an Twitter seet datt Dir e fäerdege Webserver maache musst, deen net sou staark ass wéi Apache, awer nëmmen eng kleng Saach wäert maachen. Generéiere a schéckt Configuratiounen mat engem Link.

Loosst eis hei ophalen an drun erënneren datt bal all SIP Telefone elo Konfiguratiounen iwwer http/https kréien kënnen, sou datt mir net aner Implementatioune berücksichtegen (ftp, tftp, ftps). Dann kennt all Telefon seng eege MAC Adress. Dofir wäerte mir zwee Linken maachen: eng perséinlech - baséiert op dem Apparatschlëssel, déi zweet allgemeng, déi mat enger Kombinatioun vun engem gemeinsamen Token an enger MAC Adress funktionnéiert.

Och wäert ech net op Zero-Config wunnen, d.h. den Telefon vun Null opzestellen, d.h. Dir hutt et an de Reseau ugeschloss an et huet ugefaang ze schaffen. Nee, a mengem Szenario pluggt Dir et an d'Netz, maacht de virleefege Setup (ariicht et op fir d'Konfiguratioun vum Bestëmmungsserver ze kréien), an drénkt dann Pina Colada an rekonfiguréiert den Telefon wéi néideg duerch d'Bestëmmung. Verdeelung Optioun 66 ass d'Verantwortung vum DHCP Server.

Iwwregens sinn ech komplett midd fir "Provisioning" ze soen, sou datt d'Wuert op "Provision" verkierzt gouf, gitt mir net.

An nach eng Saach: eise Provisioning Server huet keen UI, d.h. Benotzer Interface. Vläicht, fir de Moment, awer net sécher, well ... Ech brauch et net. Awer et gëtt eng API fir Astellungen ze späicheren / ze läschen, eng Lëscht vun ënnerstëtzte Verkeefer, Modeller ze kréien, alles gëtt beschriwwen no de Kanonen vun der Swagger Spezifizéierung.

Firwat API an net UI? Well Ech hu scho mäin eegenen Telefonsystem, dann hunn ech eng Quell vun Umeldungsinformatiounen, wou ech just dës Donnéeën muss huelen, den néidege json kompiléieren an se um Provisioning Server publizéieren. An de Versuergungsserver, laut de Regelen, déi an der json Datei spezifizéiert sinn, gëtt dem erfuerderlechen Apparat seng Konfiguratioun oder gëtt et net wann den Apparat net korrekt ass oder net de Critèren entsprécht, och an dësem json spezifizéiert.

Sonata - SIP Bestëmmung Server

Dëst ass wéi d'Provisioning-Mikroservice erausgeet. Geruff Sonate, de Quellcode ass op GitHub verfügbar, et gëtt och prett docker Bild, Docker Notzung Beispill hei.

Schlëssel Fonctiounen:

  • an all Fall, limitéiert Zougang zu der Configuratioun vun Zäit, Par défaut 10 Minutten. Wann Dir d'Konfiguratioun erëm verfügbar wëllt maachen, publizéieren d'Konfiguratioun erëm.

  • ee Format fir all Ubidder, all Upassunge ginn an Sonata geläscht, Dir schéckt standardiséierte json, konfiguréiert all verfügbar Ausrüstung.

  • all Konfiguratioun, déi op Apparater erausginn ass, sinn protokolléiert, all Problemberäicher kënnen am Logbuch gekuckt ginn a Feeler kënne gesi ginn

  • Et ass méiglech ee gemeinsame Link mat engem Token ze benotzen; all Telefon kritt seng eege Configuratioun andeems Dir d'Mac Adress spezifizéiert. Oder e perséinleche Link iwwer Schlëssel.

  • APIs fir Gestioun (Gestioun) a Versuergung vu Konfiguratiounen op Telefonen (Provisioning) ginn duerch Ports gedeelt

  • Tester. Et war ganz wichteg fir mech d'Format vun der erausginn Config ze fixéieren an all déi üblech Situatioune fir eng Konfiguratioun mat Tester ze decken. Sou datt dëst alles kloer funktionnéiert.

Muecht:

Bis elo gëtt d'Verschlësselung op keng Manéier bannent Sonata benotzt. Déi. Dir kënnt natierlech ufänken https ze benotzen andeems Dir nginx virum Sonata zum Beispill setzt. Awer propriétaire Methoden sinn nach net benotzt ginn. Firwat? De Projet ass nach jonk, et huet seng éischt honnert Apparater lancéiert. An natierlech sammelen ech Iddien a Feedback. Weider, fir alles sécher ze maachen, sou datt d'Konfiguratiounen net am Netz geschnufft kënne ginn, ass et wahrscheinlech derwäert ze stéieren mat Verschlësselungsschlësselen, tls an den Igel mat hinnen, awer dëst wäert eng Fortsetzung sinn.

Mangel u UI. Vläicht ass dëst e wesentlechen Nodeel fir den Endbenotzer, awer fir e Systemadministrator ass e Konsol-Utility méi wichteg wéi eng vollwäerteg Applikatioun. Et waren Pläng fir e Konsol Utility ze maachen, awer ech sinn net sécher ob et néideg ass?

Wat am Ende?

E klengen an einfache Webserver fir verschidde Telefonsmodeller mat enger API fir Gestioun ze versuergen.

Nach eng Kéier, wéi soll dat funktionéieren?

  1. Installatioun Sonata.
  2. Mir kreéieren eng json Config a publizéieren se an der Sonata.
  3. Da kréie mir e Provisioning Link vun der Sonata.
  4. Da weise mir dëse Link am Telefon un.
  5. Den Apparat lued d'Konfiguratioun

Et ginn nëmmen zwee Schrëtt an der spéider Operatioun:

  1. Mir kreéieren eng json Config a publizéieren se an der Sonata
  2. Den Apparat lued d'Konfiguratioun

Wéi eng Telefone ginn gefördert?

Verkeefer Grandstream, Fanvil, Yealink. D'Konfiguratiounen am Verkeefer si méi oder manner d'selwecht, awer kënnen ofhängeg vun der Firmware ënnerscheeden - et kann néideg sinn zousätzlech ze testen.

Wéi eng Regele kënnt Dir setzen?

No der Zäit. Dir kënnt d'Zäit uginn bis déi d'Konfiguratioun verfügbar ass.
Mat mac Adress. Wann Dir d'Konfiguratioun iwwer de perséinleche Link vum Apparat ofgitt, gëtt d'Mac Adress och iwwerpréift.
Vun ip. Vun der IP Adress aus wou d'Ufro gemaach gouf.

Wéi interagéiere mat Sonata?

Via API, mécht http Ufroen. D'API wäert an Ärer Installatioun verfügbar sinn. Well D'API ënnerstëtzt d'Swagger Spezifizéierung, Dir kënnt benotzen online Utility fir Test Ufroen un der API.

OK, super. Cool Saachen, wéi wier et ze probéieren?

Deen einfachste Wee ass en Docker-Bild op Basis vun engem Repository z'installéieren Sonate-Prouf. De Repository enthält Installatiounsinstruktiounen.

Wat wann ech weess node.js?

Wann Dir Erfahrung mat JavaScript hutt, da wäert Dir séier erausfannen wéi alles hei funktionnéiert.

Gëtt et eng Sonata Entwécklung?

Ech hunn meng Ziler deelweis erreecht. Weiderentwécklung ass eng Saach vu menge Aufgaben am Thema vun der Automatiséierung vun der Telefonsopstellung. Et gëtt och eng Geleeënheet fir d'Konfiguratiounen auszebauen fir Telefonknäppercher ze konfiguréieren, Adressbuchversuergung ze addéieren, vläicht soss eppes, schreift an de Kommentaren.

Resumé an Unerkennung

Ech wäert frou konstruktiv Virschléi/Objekter/Kommentaren a Froen ze hunn, well... Et kann och sinn, datt hien eppes onverständlech beschriwwen huet.

Ech drécken och meng Dankbarkeet un all meng Kollegen aus, déi gehollef hunn, beroden, getest an Telefone fir Tester zur Verfügung gestallt / gespent hunn. A Wierklechkeet si vill Leit mat deenen ech op der Aarbecht kommunizéiert hunn an de Projet a verschiddene Grad involvéiert, AsterConf'e, an Chats an E-Mailen. Merci fir d'Iddien a Gedanken.

Source: will.com

Setzt e Commentaire