Nuk e di se me çfarë ta krahasoj provisioning. Ndoshta me një mace? Në dukje, mund të bëhet edhe pa të, por me të është pak më mirë. Sidomos nëse ajo punon ))
Formulimi i problemit:
- Dua të konfiguroj telefonat SIP shpejt, lehtësisht, dhe sigurt. Gjatë instalimit të telefonit dhe sidomos gjatë rikonstruksionit të tij.
- Shumë ofrues kanë formatet e tyre të konfiguratave, utils për të gjeneruar konfiguratat e tyre, mënyra të tyre për të mbrojtur konfiguratat. Dhe nuk është shumë kënaqësi të merresh me secilin prej tyre.
- ShumĂ« zgjidhje pĂ«r provisioning, a) janĂ« tĂ« orientuara ndaj njĂ« ofruesi ose njĂ« sistemi telefoni, b) realizohen mjaft tĂ« rĂ«ndĂ«, shumĂ« skripte, parametra, brrrâŠ
Për pikën 3, do të jap një koment, që ka sisteme të shkëlqyera provizioni , , , ku ka modele për telefonat e ofruesve të ndryshëm të aksesueshme publikisht. Ka gjithashtu zgjidhje komerciale, ku gjithashtu mund të konfiguroni në modulin e provizionit funksionimin e telefonave nga prodhues të ndryshëm, për shembull, PBX Yeastar.
Në Habr gjithashtu ka shumë receta për si të konfigurosh paisjet e ofruesve të ndryshëm: , . Por siç thonë, të gjitha sistemet kanë një mangësi fatale. Prandaj, do të bëjmë biçikletën tonë.
formatin tonë
Siç thotĂ« nĂ« xkcd, nĂ«se nuk dĂ«shiron tĂ« merresh me 14 formate â . Prandaj, ne pĂ«rdorim cilĂ«simet e pĂ«rbashkĂ«ta pĂ«r çdo telefon dhe do tĂ« krijojmĂ« formatin tonĂ« json pĂ«r konfig.
Dikush si ky:
{
"key": "sdgjdeu9443908",
"token": "590sfdsf8u984",
"model": "gxp1620",
"vendor": "grandstream",
"mac": "001565113af8",
"timezone_offset": "GMT+03",
"ntp_server": "pool.ntp.org",
"status": true,
"accounts": [
{
"name": "Mobilon",
"line": 1,
"sip_register": "sip.mobilonsip.ru",
"sip_name": "sip102",
"sip_user": "sip102",
"sip_password": "4321",
"sip_auth": "sip102"
}
]
}Pra, në çdo telefon është e nevojshme të konfiguroni orën lokale dhe linjat sip. Këtu gjithçka është e thjeshtë. Mund të shihni edhe shembuj .
serverin tonë të provizionit
Në manualet e prodhuesve zakonisht ka një pikë ku thonë: merrni csv, shkruani atje emrin e përdoruesit-password-MAC-adresën, me skriptin tonë të markës krijoni skedarët, vendosni ata nën serverin e uebit Apache dhe do të jetë mirë.
Në pikën tjetër të manualit zakonisht flitet se gjithashtu mund të enkriptohet skedari i gjeneruar i konfigurimit.
Por kjo është e gjitha klasike. Qasja moderne me smoothie dhe twitter tregon se duhet të krijohet një server i gatshëm për web, i cili nuk do të jetë kaq i fuqishëm si Apache, por do të bëjë një gjë të vogël. Të formojë dhe të dorëzojë konfiguratat në link.
Këtu ndalemi dhe kujtojmë se pothuajse të gjithë telefonat SIP tani mund të marrin konfigurata përmes http/https, prandaj realizime të tjera (ftp, tftp, ftps) nuk shqyrtohen. Pastaj, çdo telefon e njeh adresën e tij MAC. Prandaj, do të krijojmë dy lidhje: një personale - nëpërmjet çelësit të pajisjes, tjetra e përgjithshme që punon me kombinimin e çelësit të përgjithshëm dhe adresës MAC.
Gjithashtu, nuk do të ndalem në zero-config, pra, konfigurimin e telefonit "nga fillimi", pra ju e vendosni atë në rrjet dhe ai papritmas fillon të punojë. Jo, në skenarin tim, ju e vendosni në rrjet, bëni konfigurimin paraprak (konfiguroni atë për të marrë konfigurimin nga serveri i provizionit), dhe pastaj pini një pinacolada dhe ri-konfiguroni telefonin siç duhet përmes provizionit. Të shpërndash Opsion 66 është përgjegjësia e serverit DHCP.
Për më tepër, jam vërtet i lodhur të them "provisioning", prandaj fjala u shkurtua në "provizion", mos më shqetësoni, ju lutem.
Dhe gjithashtu: serveri ynë i provizionit nuk ka UI, pra, ndërfaqe përdoruesi. Ndoshta për momentin, por nuk jam i sigurt, sepse nuk më nevojitet. Por ka një API për ruajtjen/fshirjen e konfigurimeve, marrjen e listës së ofruesve të mbështetur, modeleve, gjithçka e përshkruar sipas kanonëve të specifikimit swagger.
Pse API dhe jo UI? Sepse unë tashmë kam sistemin tim të telefonisë, kështu që kam një burim të kredencialeve, ku mjafton të marr këto të dhëna, të kompozoj json të nevojshëm dhe ta publikoj në serverin e provizionit. Dhe pastaj serveri i provizionit, sipas rregullave të përcaktuara në skedarin json, do t'i japë pajisjes përkatëse konfigurimin e saj ose nuk do ta japë, nëse pajisja nuk është e saktë ose nuk i përmbahet kriterieve, të cilat gjithashtu janë të përcaktuara në këtë json.

Kështu që, ky është një mikro-shërbim provizionin. E quajtur , kodi burimor është i disponueshëm në GitHub, ka gjithashtu , shembuj përdorimi të dockerit .
Veçoritë kryesore:
nĂ« çdo rast, akses i kufizuar nĂ« konfigurim nĂ« kohĂ«, me default 10 minuta. NĂ«se dĂ«shironi ta bĂ«ni pĂ«rsĂ«ri konfigurimin tĂ« disponueshĂ«m â ribotoni konfigurimin pĂ«rsĂ«ri.
një format për të gjithë ofruesit, të gjitha përshtatjet janë hequr në sonata, dërgoni një json të standardizuar, konfiguroni çdo pajisje të disponueshme.
të gjitha konfiguratat e lëshuara ndaj pajisjeve regjistrohen, të gjitha vendet problematike mund të shqyrtohen në log dhe të shihen gabimet.
është e mundur përdorimi i një lidhjeje të vetme me token, çdo telefon merr konfigurimin e vet, duke treguar adresën mac. Ose një lidhje personale sipas çelësit.
API për menaxhimin dhe dhënien e konfigurimeve për telefonat është ndarë sipas porteve.
Teste. Ishte shumë e rëndësishme për mua të regjistroja formatin e konfigurimit që jepet dhe të mbulonim të gjitha situatat e zakonshme të dhënies së konfigurimit me teste. Kështu që gjithçka funksionon qartë.
Disavantazhet:
Aktualisht nuk përdoret asnjë enkriptim në kuadër të sonata. Domethënë, sigurisht, mund të filloni të përdorni https, duke vendosur, për shembull, nginx para sonata. Por mënyrat e markës deri tani nuk janë angazhuar. Pse? Projekti është ende i ri, ka provizionuar ndoshta një qind pajisje. Dhe sigurisht, po mblidhja ide, feedback. Më vonë, për të bërë gjithçka në mënyrë të sigurt, që konfigurimet të mos kenë mundësi të shihen në rrjet, ndoshta duhet të shqetësohemi për çelësat e enkriptimit, tls dhe të tjerë, por kjo do të jetë një vazhdim.
Mungesa e UI. Ndoshta, ky është një disavantazh i rëndësishëm për përdoruesin përfundimtar, por për administratorin e sistemit ndoshta është më e rëndësishme një utilitar konsolë se sa një aplikacion i plotë. Bëja një utilitar konsolë ishte në planet, por nuk jam i sigurt nëse është e nevojshme?
ĂfarĂ« doli pĂ«rfundimisht?
Një server i vogël dhe i thjeshtë web për provizionimin e disa modeleve telefonash me API për menaxhim.
Përsëri, si duhet të funksionojë kjo?
- Instalojmë sonata.
- Formojmë konfigurimin json dhe e publikojmë në sonata.
- Pastaj marrim nga sonata lidhjen për provizionim.
- Më pas këtë lidhje e vendosim në aparatin telefonik.
- Aparati merr konfigurimin
në përdorimin e mëpasshëm vetëm dy hapa:
- Formojmë konfigurimin json dhe e publikojmë në sonata.
- Aparati merr konfigurimin
Cilat telefona provizionohen?
VendorĂ«t Grandstream, Fanvil, Yealink. Konfigurimet brenda çfarĂ«do vendori janĂ« mĂ« shumĂ«-mĂ« pak tĂ« njĂ«jta, por mund tĂ« ndryshojnĂ« nĂ« varĂ«si tĂ« versionit tĂ« firmware â ndoshta do tĂ« jetĂ« e nevojshme tĂ« bĂ«het njĂ« testim shtesĂ«.
Cilat rregulla mund të përcaktohen?
Për kohën. Mund të tregoni një kohë deri në të cilën konfigurimi do të jetë i disponueshëm.
Për adresën mac. Kur jepet konfigurimi përmes një lidhjeje personale do të kontrollohet gjithashtu adresa mac.
Për ip. Sipër adresës ip nga e cila është bërë kërkesa.
Si të bashkëveproni me sonata?
Përmes API, duke bërë kërkesa http. API do të jetë në dispozicion në instaluar tuaj. Duke qenë se API mbështet specifikimin e swagger, mund të përdorni për kërkesa testuese ndaj API.
Mirë, shkëlqyer. Një gjë interesante, si të provoj?
Më e lehta është të zhvilloni imazhin docker mbi bazën e depozitës . Në depozitë ka një udhëzues për instalimin.
Đ Đ”ŃлО Đ·ĐœĐ°Ń node.js?
Nëse keni përvojë në përdorimin e JavaScript, do të kuptoni shpejt se si funksionon gjithçka këtu.
Do të ketë zhvillim të sonata?
Pjesërisht unë arrita disa nga qëllimet e mia. Zhvillimi i ardhshëm është një çështje e detyrave të mia në lidhje me automatizimin e konfigurimit të telefonave. Ka ende mundësi për të zgjeruar konfigurimet për të përcaktuar butonat e telefonit, për të shtuar provizion adresash, ndoshta diçka tjetër, shkruani në komentet.
Përmbledhje dhe falënderime
Do të isha i lumtur për propozime/kundërpropozita/komente dhe pyetje, sepse mund të ketë diçka që nuk kam përshkruar qartë.
Gjithashtu dĂ«shiroj tĂ« falĂ«nderoj tĂ« gjithĂ« kolegĂ«t, qĂ« ndihmuan, konsultuan, testuan, dhuruan telefonat pĂ«r prova. Realisht, shumĂ« njerĂ«z, me tĂ« cilĂ«t kam komunikuar nĂ« punĂ«, nĂ« âe, nĂ« biseda dhe email. Faleminderit pĂ«r idetĂ« dhe mendimet.
Burimi: habr.com
