Ù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:
- Vogliu cunfigurà i telefoni SIP rapidamente, facilmente è in modu sicuru. Quandu si stallanu un telefunu, è ancu di più quandu u ricunfigurate.
- 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.
- 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
Habré hè ancu pienu di ricette nantu à cumu cunfigurà i dispositi da parechji venditori:
u vostru propriu furmatu
Cumu dicenu in xkcd, sè ùn vulete micca trattà cù 14 formati -
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
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.
Hè cusì chì u microserviziu di pruvisione hè risultatu. Chjamatu
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?
- Installazione di sonata.
- Creemu una cunfigurazione json è publichemu in sonata.
- Allora ricevemu un ligame di pruvisione da a sonata.
- Allora indichemu stu ligame in u telefunu.
- U dispusitivu carica a cunfigurazione
Ci hè solu dui passi in u funziunamentu dopu:
- Creemu una cunfigurazione json è publichemu in sonata
- 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à
OK, grande. Roba cool, chì ne dite di pruvà?
A manera più faciule hè di implementà una maghjina docker basatu annantu à un repository
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,
Source: www.habr.com