Sonata - SIP úthlutunarþjónn

Ég veit ekki hvað ég á að bera úthlutun saman við. Kannski með kött? Það virðist mögulegt án þess, en með því er það aðeins betra. Sérstaklega ef það virkar))

Samsetning vandamálsins:

  1. Ég vil setja upp SIP síma fljótt, auðveldlega og örugglega. Þegar þú setur upp síma, og enn frekar þegar þú endurstillir hann.
  2. Margir söluaðilar hafa sín eigin stillingarsnið, sín eigin tól til að búa til stillingar og sínar eigin leiðir til að vernda stillingar. Og ég vil eiginlega ekki eiga við alla.
  3. Margar úthlutunarlausnir, a) beinast að einum söluaðila eða einu símakerfi, b) eru frekar fyrirferðarmiklar í framkvæmd, mikið af skriftum, breytum, brrr...

Varðandi 3. lið mun ég gera athugasemd við að það eru frábær úthlutunarkerfi fyrir FreePBX, fyrir FusionPBX, fyrir Kazoo, þar sem sniðmát fyrir síma frá ýmsum söluaðilum eru aðgengileg almenningi. Það eru viðskiptalausnir þar sem þú getur líka stillt rekstur síma frá mismunandi framleiðendum í úthlutunareiningunni, til dæmis Yeastar PBX.

Habré er líka fullt af uppskriftum um hvernig á að setja upp tæki frá ýmsum söluaðilum: tími, два. En eins og þeir segja, öll kerfi hafa banvænan galla. Svo við búum til okkar eigin hjól.

þitt eigið snið

Eins og þeir segja í xkcd, ef þú vilt ekki takast á við 14 snið - komdu með þann 15. Þess vegna notum við almennar stillingar fyrir hvaða síma sem er og gerum okkar eigið json config snið.

Eitthvað eins og þetta:

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

Svo í hvaða síma sem er þarftu að stilla staðartíma og SIP línur. Hér er allt einfalt. Þú getur séð fleiri dæmi hér.

þinn eigin miðlaraútvegun

Í handbókum framleiðandans er venjulega punktur þar sem segir: taktu csv, skrifaðu niður innskráningarlykilorð-mac-addressið þitt, búðu til skrár með því að nota sérforskriftina okkar, settu þær undir Apache vefþjóninn og allt verður í lagi.

Næsta málsgrein handbókarinnar segir þér venjulega að þú getir líka dulkóðað stillingarskrána sem myndaðar eru.

En þetta eru allt klassík. Nútíma nálgunin með smoothies og Twitter segir að þú þurfir að búa til tilbúinn vefþjón sem verður ekki eins öflugur og Apache, heldur gerir bara eitt lítið. Búðu til og sendu stillingar með því að nota tengil.

Við skulum stoppa hér og muna að næstum allir SIP símar geta nú tekið á móti stillingum í gegnum http/https, þannig að við erum ekki að íhuga aðrar útfærslur (ftp, tftp, ftps). Þá veit hver sími sitt eigið MAC vistfang. Þess vegna munum við búa til tvo tengla: einn persónulegan - byggt á tækislyklinum, hinn almenni, sem virkar með því að nota blöndu af sameiginlegu tákni og MAC vistfangi.

Einnig mun ég ekki dvelja við zero-config, þ.e. setja upp símann frá grunni, þ.e. þú tengdir það við netið og það byrjaði að virka. Nei, í atburðarásinni minni tengirðu það við netið, gerir bráðabirgðauppsetninguna (stillir það upp til að fá stillinguna frá vistunarþjóninum) og drekkur síðan pina colada og endurstillir símann eftir þörfum í gegnum vistunina. Dreifing valkosts 66 er á ábyrgð DHCP þjónsins.

Við the vegur, ég er alveg þreytt á að segja "útvegun", svo orðið var stytt í "útvegun", vinsamlegast ekki sparka í mig.

Og eitt enn: úthlutunarþjónninn okkar er ekki með notendaviðmót, þ.e. notendaviðmót. Kannski, í bili, en ekki viss, því... Ég þarf þess ekki. En það er API til að vista/eyða stillingum, fá lista yfir studda söluaðila, gerðir, öllu er lýst í samræmi við kanónurnar í swagger forskriftinni.

Af hverju API en ekki UI? Vegna þess að Ég er nú þegar með mitt eigið símakerfi, þá er ég með heimildaruppsprettu, þar sem ég þarf bara að taka þessi gögn, safna saman nauðsynlegu json og birta þau á veitingaþjóninum. Og úthlutunarþjónninn, samkvæmt reglum sem tilgreindar eru í json skránni, mun gefa nauðsynlegu tæki stillingu eða mun ekki gefa það ef tækið er ekki rétt eða uppfyllir ekki skilyrðin sem einnig eru tilgreind í þessu json.

Sonata - SIP úthlutunarþjónn

Svona reyndist úthlutunarörþjónustan. Hringt sónata, frumkóði er fáanlegur á GitHub, það er líka tilbúinn docker mynd, Docker notkun dæmi hér.

Lykil atriði:

  • í öllum tilvikum, takmarkaður aðgangur að stillingunni eftir tíma, sjálfgefið 10 mínútur. Ef þú vilt gera stillinguna aðgengilega aftur skaltu endurbirta stillinguna aftur.

  • eitt snið fyrir alla söluaðila, allar breytingar eru fjarlægðar í sónötunni, þú sendir staðlað json, stillir hvaða búnað sem er tiltækur.

  • allar stillingar sem gefnar eru út á tæki eru skráðar, hægt er að skoða öll vandamálasvæði í skránni og villur sjást

  • Það er hægt að nota einn algengan hlekk með tákni; hver sími fær sína eigin stillingu með því að tilgreina mac vistfangið. Eða persónulegan hlekk með lykli.

  • API fyrir stjórnun (stjórnun) og útvegun stillinga í síma (útvegun) er skipt eftir höfnum

  • Próf. Það var mjög mikilvægt fyrir mig að laga sniðið á útgefnum stillingum og ná yfir allar venjulegar aðstæður við að gefa út stillingar með prófum. Svo að þetta virki allt skýrt.

Gallar:

Enn sem komið er er dulkóðun ekki notuð á nokkurn hátt innan Sonata. Þeir. þú getur auðvitað byrjað að nota https með því að setja nginx fyrir framan sónötuna til dæmis. En einkaréttaraðferðir hafa ekki enn verið notaðar. Hvers vegna? Verkefnið er enn ungt, það hefur sett fyrstu hundrað tæki sín á markað. Og auðvitað safna ég hugmyndum og athugasemdum. Ennfremur, til að gera allt öruggt, þannig að ekki sé hægt að sniffa stillingarnar á netinu, er líklega þess virði að skipta sér af dulkóðunarlyklum, tls og broddgelti með þeim, en þetta verður framhald.

Skortur á HÍ. Kannski er þetta verulegur ókostur fyrir endanotandann, en fyrir kerfisstjóra er stjórnborðsforrit mikilvægara en fullbúið forrit. Það voru áform um að búa til leikjatölvutæki, en ég er ekki viss um hvort það sé þörf?

Niðurstaðan?

Lítill og einfaldur vefþjónn til að útvega nokkrar símagerðir með API fyrir stjórnun.

Enn og aftur, hvernig á þetta að virka?

  1. Að setja upp sónötu.
  2. Við búum til json config og birtum hana í sónötu.
  3. Síðan fáum við úthlutunartengil frá sónötunni.
  4. Þá gefum við til kynna þennan hlekk í símanum.
  5. Tækið er að hlaða uppstillingunni

Það eru aðeins tvö skref í síðari aðgerð:

  1. Við búum til json config og birtum hana í sónötu
  2. Tækið er að hlaða uppstillingunni

Hvaða símar verða kynntir?

Söluaðilar Grandstream, Fanvil, Yealink. Stillingar innan seljanda eru meira og minna þær sömu, en geta verið mismunandi eftir fastbúnaði - það gæti verið nauðsynlegt að prófa til viðbótar.

Hvaða reglur er hægt að setja?

Með tímanum. Þú getur tilgreint þann tíma sem stillingin verður tiltæk.
Eftir mac heimilisfang. Þegar stillingarnar eru sendar inn í gegnum persónulegan hlekk tækisins verður mac vistfangið einnig athugað.
Eftir ip. Eftir IP-tölu þaðan sem beiðnin var gerð.

Hvernig á að hafa samskipti við Sonata?

Með API, sem gerir http beiðnir. API verður aðgengilegt í uppsetningunni þinni. Vegna þess að API styður swagger forskriftina, þú getur notað gagnsemi á netinu fyrir prófunarbeiðnir í API.

Allt í lagi, frábært. Flott efni, hvernig væri að prófa það?

Auðveldasta leiðin er að setja upp bryggjumynd byggða á geymslu sónötu-sýnishorn. Geymslan inniheldur uppsetningarleiðbeiningar.

Hvað ef ég þekki node.js?

Ef þú hefur reynslu af því að nota JavaScript muntu fljótt komast að því hvernig allt virkar hér.

Verður Sonata þróun?

Ég náði markmiðum mínum að hluta. Frekari þróun er spurning um verkefni mín varðandi sjálfvirka uppsetningu síma. Það er líka tækifæri til að stækka stillingar til að stilla símahnappa, bæta við vistfangaskrá, kannski eitthvað annað, skrifaðu í athugasemdirnar.

Samantekt og viðurkenningar

Ég mun vera feginn að hafa uppbyggilegar tillögur/mótmæli/athugasemdir og spurningar, því... Það getur vel verið að hann hafi lýst einhverju óskiljanlega.

Ég lýsi einnig þakklæti mínu til allra samstarfsmanna minna sem hjálpuðu, ráðlögðu, prófuðu og útveguðu/gáfu síma fyrir próf. Í raun og veru eru margir sem ég átti samskipti við í vinnunni sem taka þátt í verkefninu í mismiklum mæli, AsterConfe, í spjalli og tölvupósti. Takk fyrir hugmyndirnar og pælingarnar.

Heimild: www.habr.com

Bæta við athugasemd