Sonata - Servitore di provisioning SIP

Ùn sò micca cun quale paragunà a pruvisione. Forse cù un gattu? Sembra pussibule senza ellu, ma cun ellu hè un pocu megliu. In particulare s'ellu funziona))

Formulazione di u prublema:

  1. Vogliu cunfigurà i telefoni SIP rapidamente, facilmente è in modu sicuru. Quandu si stallanu un telefunu, è ancu di più quandu u ricunfigurate.
  2. Parechji venditori anu i so propri formati di cunfigurazione, e so utilità per generà cunfigurazioni, è i so modi di prutezzione di e cunfigurazioni. È ùn vogliu micca veramente trattà cù tutti.
  3. Parechje suluzioni di pruvisione, a) sò focalizati nantu à un venditore o un sistema di telefunu, b) sò abbastanza ingombranti da implementà, assai scripts, paràmetri, brrr...

In quantu à u puntu 3, aghju da fà un cummentariu chì ci sò eccellenti sistemi di pruvista per FreePBX, per FusionPBX, per Kazoo, induve mudelli per i telefoni di diversi venditori sò dispunibuli publicamente. Ci sò suluzioni cummirciali induve pudete ancu cunfigurà u funziunamentu di i telefoni di diversi fabricatori in u modulu di pruvista, per esempiu, Yeastar PBX.

Habré hè ancu pienu di ricette nantu à cumu cunfigurà i dispositi da parechji venditori: i tempi, два. Ma cumu dicenu, tutti i sistemi anu un difettu fatale. Allora faremu a nostra propria bicicletta.

u vostru propriu furmatu

Cumu dicenu in xkcd, sè ùn vulete micca trattà cù 14 formati - vene cù u 15. Per quessa, avemu usatu paràmetri generale per ogni telefunu è fà u nostru propiu formatu di cunfigurazione json.

Qualcosa cum'è questu:

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

Dunque, in ogni telefunu avete bisognu di cunfigurà l'ora locale è e linee SIP. Tuttu hè simplice quì. Pudete vede più esempi ccà.

a vostra propria pruvisione di u servitore

In i manuali di u fabricatore ci hè di solitu un puntu induve dice: pigliate un csv, scrivite u vostru login-password-mac-address, generate fugliali cù u nostru script privatu, metteli sottu à u servitore web Apache è tuttu sarà bè.

U prossimu paràgrafu di u manuale di solitu vi dice chì pudete ancu criptà u schedariu di cunfigurazione generatu.

Ma questi sò tutti i classici. L'approcciu mudernu cù smoothies è Twitter dice chì avete bisognu di fà un servitore web prontu chì ùn serà micca putente cum'è Apache, ma farà solu una piccula cosa. Generate è mandà cunfigurazioni cù un ligame.

Firmemu quì è ricurdate chì quasi tutti i telefoni SIP ponu avà riceve cunfigurazioni via http/https, per quessa, ùn avemu micca cunsideratu altre implementazioni (ftp, tftp, ftps). Allora, ogni telefonu cunnosce u so indirizzu MAC. Dunque, faremu dui ligami: unu persunale - basatu nantu à a chjave di u dispusitivu, u sicondu generale, chì travaglia cù una cumminazione di un token cumuni è un indirizzu MAC.

Inoltre, ùn aghju micca aspittà nantu à zero-config, i.e. stallà u telefunu da zero, i.e. l'avete cunnessu à a reta è hà cuminciatu à travaglià. Innò, in u mo scenariu, u plug in a reta, fate a cunfigurazione preliminare (configurate per riceve a cunfigurazione da u servitore di pruvisione), è poi beie pina colada è cunfigurà u telefunu cum'è necessariu per via di a provisioning. L'opzione di distribuzione 66 hè a responsabilità di u servitore DHCP.

A propositu, sò cumplettamente stancu di dì "provisioning", cusì a parolla hè stata accurtata in "provisione", per piacè ùn mi chjappà micca.

È una cosa più: u nostru servitore di pruvisione ùn hà micca una UI, i.e. interfaccia d'utilizatore. Forse, per avà, ma micca sicuru, perchè... Ùn aghju micca bisognu. Ma ci hè una API per salvà / sguassate i paràmetri, ottene una lista di venditori supportati, mudelli, tuttu hè descrittu secondu i canoni di a specificazione di swagger.

Perchè API è micca UI? Perchè Aghju digià u mo propiu sistema di telefuninu, allora aghju una fonte di credenziali, induve solu bisognu di piglià queste dati, compile u json necessariu è pubblicà nantu à u servitore di provisioning. È u servitore di pruvisione, secondu e regule specificate in u schedariu json, darà à u dispositivu necessariu a so cunfigurazione o ùn li darà micca se u dispusitivu ùn hè micca currettu o ùn risponde micca à i criteri specificati ancu in questu json.

Sonata - Servitore di provisioning SIP

Hè cusì chì u microserviziu di pruvisione hè risultatu. Chjamatu sonata, u codice fonte hè dispunibule nantu à GitHub, ci hè ancu immagine docker pronta, esempiu di usu di docker ccà.

Funzioni chjave:

  • in ogni casu, accessu limitatu à a cunfigurazione per u tempu, per difettu 10 minuti. Se vulete rende a cunfigurazione dispunibule di novu, ripubblicà a cunfigurazione di novu.

  • un furmatu per tutti i venditori, tutti l'aghjustamenti sò sguassati in sonata, mandate json standardizatu, cunfigurà ogni equipamentu dispunibule.

  • tutte e cunfigurazioni emesse à i dispositi sò registrate, tutte e zone problematiche ponu esse vedute in u logu è l'errori ponu esse vistu

  • Hè pussibule aduprà un ligame cumunu cù un token; ogni telefunu riceve a so propria cunfigurazione specificando l'indirizzu mac. O un ligame persunale via chjave.

  • L'API per a gestione (gestione) è l'approvvigionamentu di e cunfigurazioni à i telefoni (provisioning) sò divisi per porti

  • Testi. Era assai impurtante per mè di riparà u formatu di a cunfigurazione emessa è copre tutte e situazioni abituale di emissione di una cunfigurazione cù testi. Cusì chì tuttu questu travaglia chjaramente.

Cons:

So far, criptografia ùn hè usatu in ogni modu in Sonata. Quelli. pudete naturalmente principià cù https mettendu nginx davanti à a sonata per esempiu. Ma i metudi privati ​​ùn sò micca stati ancu utilizati. Perchè? U prugettu hè sempre ghjovanu, hà lanciatu i so primi centu dispusitivi. E, sicuru, aghju recullatu idee è feedback. In più, per fà tuttu sicuru, in modu chì i cunfigurazioni ùn ponu esse sniffed in a reta, hè prubabilmente vale a pena chjavi di criptografia, tls è u riccio cun elli, ma questu serà una continuazione.

Mancanza di UI. Forsi questu hè un svantaghju significativu per l'utilizatore finale, ma per un amministratore di sistema, una utilità di cunsola hè più impurtante chè una applicazione cumpleta. Ci sò stati piani per fà una utilità di cunsola, ma ùn sò micca sicuru s'ellu hè necessariu?

Ciò à a fine?

Un servitore web chjucu è simplice per furnisce parechji mudelli di telefunu cù una API per a gestione.

Una volta, cumu si deve travaglià questu?

  1. Installazione di sonata.
  2. Creemu una cunfigurazione json è publichemu in sonata.
  3. Allora ricevemu un ligame di pruvisione da a sonata.
  4. Allora indichemu stu ligame in u telefunu.
  5. U dispusitivu carica a cunfigurazione

Ci hè solu dui passi in u funziunamentu dopu:

  1. Creemu una cunfigurazione json è publichemu in sonata
  2. U dispusitivu carica a cunfigurazione

Chì telefoni seranu prumuvuti?

Venditori Grandstream, Fanvil, Yealink. I cunfigurazioni in u venditore sò più o menu listessi, ma ponu differisce secondu u firmware - pò esse necessariu di pruvà in più.

Chì regule pudete stabilisce?

Per tempu. Pudete specificà u tempu finu à chì a cunfigurazione serà dispunibule.
Per indirizzu mac. Quandu sottumettenu a cunfigurazione via u ligame persunale di u dispusitivu, l'indirizzu mac serà ancu verificatu.
Per ip. Per indirizzu IP da induve a dumanda hè stata fatta.

Cumu interagisce cù Sonata?

Via API, facendu richieste http. L'API serà dispunibule in a vostra installazione. Perchè L'API sustene a specificazione di swagger, pudete aduprà utilità in linea per e dumande di teste à l'API.

OK, grande. Roba cool, chì ne dite di pruvà?

A manera più faciule hè di implementà una maghjina docker basatu annantu à un repository sonata-sample. U repository cuntene struzzioni di installazione.

E se cunnosci node.js?

Sè avete sperienza cù JavaScript, allora capirete rapidamente cumu tuttu funziona quì.

Ci sarà un sviluppu Sonata ?

Aghju parzialmente rializatu i mo scopi. U più sviluppu hè una materia di i mo compiti nantu à u tema di l'automatizazione di a cunfigurazione di u telefunu. Ci hè ancu l'uppurtunità di espansione a cunfigurazione per cunfigurà i buttuni di u telefuninu, aghjunghje l'approvvigionamentu di u libru d'indirizzu, forsi qualcosa altru, scrivite in i cumenti.

Riassuntu è ricunniscenza

Seraghju felice di avè suggerimenti / obiezioni / cumenti è dumande custruttivi, perchè ... Pò esse bè chì hà descrittu qualcosa incomprensibile.

Aghju ancu espresu a mo gratitùdine à tutti i mo culleghi chì anu aiutatu, cunsigliatu, pruvatu è furnitu / donatu telefoni per teste. In realtà, assai persone cù quale aghju cumunicatu à u travagliu sò implicati in u prugettu à varii gradi, AsterConf'e, in chats è email. Grazie per l'idee è i pinsamenti.

Source: www.habr.com

Add a comment