Sonata – SIP varustamise server

Ma ei tea, millega provisioning'it vĂ”rrelda. VĂ”ib-olla kassiga? Tundub, et ilma selleta vĂ”ib kĂŒll, aga sellega on natuke parem. Eriti kui ta töötab ))

Probleemi pĂŒstitus:

  1. Soovin SIP-telefone kiiresti, lihtsalt ja turvaliselt seadistada. Telefoni paigaldamisel ja eriti selle uue konfigureerimise puhul.
  2. Paljudel tootjatel on oma konfiguratsiooniformaadid, oma utiliidid konfiguratsioonide genereerimiseks, oma viisid konfiguratsioonide kaitsmiseks. Ja igaga tegelemine ei tÔota vÀga huvitav olla.
  3. Paljud provisioning'u lahendused, a) on suunatud ĂŒhele tootjale vĂ”i ĂŒhele telefonisĂŒsteemile, b) realiseeruvad ĂŒsna kohmakaid, hunnik skripte, parameetreid, jee...

Punkti 3 kohta annan kommentaari, et on suurepĂ€raseid provisioning sĂŒsteeme FreePBX jaoks, FusionPBX jaoks, Kazoo jaoks, kus on avatud ligipÀÀsuga mallid erinevate tootjate telefonide jaoks. On ka kommertslahendusi, kus saab samuti seadistada erinevate tootjate telefonide tööd provisioning moods, nĂ€iteks Yeastar PBX.

Habr's on samuti palju retsepte, kuidas seadistada erinevate tootjate aparatuure: ĂŒks, kaks. Aga nagu öeldakse, kĂ”igil sĂŒsteemidel on surmav puudus. Seega teeme oma jalgratta.

oma formaat

Nagu xkcd-s öeldakse, kui sul pole tahtmist tegeleda 14 formaadiga — mĂ”tle 15. vĂ€lja. Seega kasutame ĂŒldiseid seadistusi igale telefonile ja loome oma json-formaadi konfiguratsiooni.

Umbes selline:

{
   "key": "sdgjdeu9443908",
   "token": "590sfdsf8u984",
   "model": "gxp1620",
   "vendor": "grandstream",
   "mac": "001565113af8",
   "timezone_offset": "GMT+03",
   "ntp_server": "pool.ntp.org",
   "status": true,
   "accounts": [
      {
         "name": "Mobiilion",
         "line": 1,
         "sip_register": "sip.mobilonsip.ru",
         "sip_name": "sip102",
         "sip_user": "sip102",
         "sip_password": "4321",
         "sip_auth": "sip102"
      }
   ]
}

Nii et igas telefonis on vajalik seadistada kohalik aeg, sip-jooned. Siin on kÔik lihtne. Veel nÀiteid saab vaadata siin.

oma provisioning server

Tootja manuaalides on tavaliselt punkt, kus öeldakse: vÔtke csv, kirjutage sinna login-parool-maci-aadress, genereerige meie spetsiaalse skripti abil failid, pange need Apache veebiserverisse ja kÔik on hÀsti.

JĂ€rgmisel manuaali punktis rÀÀgitakse tavaliselt sellest, et genereeritud konfiguratsioonifaili on vĂ”imalik ka krĂŒpteerida.

Aga see on kĂ”ik klassika. Kaasaegne lĂ€henemine smuutide ja Twitteri mĂ”ttes ĂŒtleb, et tuleb luua valmis veebiserver, mis ei ole nii vĂ”imas kui Apache, vaid teeb ainult ĂŒhte vĂ€ikest asja. Kujundab ja annab konfigureeringud linkide kaudu.

Siin peatume ja meenutame, et peaaegu kĂ”ik SIP-telefonid saavad nĂŒĂŒd konfigureerimisi http/https kaudu, seega me teisi teostusi (ftp, tftp, ftps) ei kĂ€sitle. Igal telefonil on oma MAC-aadress. SeetĂ”ttu loome kaks linki: ĂŒks isiklik — seadme vĂ”tme kaudu, ja teine ĂŒldine, mis töötab koos ĂŒldise tokeni ja MAC-aadressiga.

Ma ei peatuks ka zero-config'i ehk telefoni seadistamise «nullist», st te pistate selle vĂ”rku ja see töötab. Ei, minu stsenaariumis, te pistate selle vĂ”rku, teete esialgse seadistamise (seadistate selle saama konfi teenuselt), ja seejĂ€rel joote pina coladat ja seadistate telefoni nagu vaja lĂ€bi provision'i. Option 66 jagamine on DHCP-serveri ĂŒlesanne.

Muide, olen tĂ€iesti tĂŒdinud öeldes «provisioning», seetĂ”ttu lĂŒhenes sĂ”na «provision», palun Ă€rge ilumise jalaga virutage.

Ja veel: meie provision-serveril ei ole UI-d, st kasutajaliidest. VÔib-olla kunagi, aga pole kindel, kuna mul seda ei ole vaja. Selle asemel on olemas API seadete salvestamiseks/kustutamiseks, toetatavate tootjate, mudelite loendi saamiseks, kÔik on kirjeldatud swagger spetsifikatsiooni reeglite jÀrgi.

Miks API, mitte UI? Kuna mul on juba oma telefonisĂŒsteem, siis mul on allikaid, kust vĂ”tta neid andmeid, koostada vajalik JSON ja avaldada provision-serveris. Ja provision-server juba reeglite jĂ€rgi, mis on mÀÀratletud JSON-failis, annab vajalikule seadmele selle konfi vĂ”i ei anna, kui seade ei ole Ă”ige vĂ”i ei vasta ka kriteeriumitele, mis on samuti antud selles JSON'is.

Sonata – SIP varustamise server

Nii et see on selline provision-mikroteenus. Nimeks sonata, algkood on saadaval GitHubis, samuti on olemas valmis dokkeri pilt, nÀide dockeri kasutamisest siin.

Peamised funktsioonid:

  • igaĂŒhel on igal juhul ajaliselt piiratud juurdepÀÀs konfigile, vaike aeg on 10 minutit. Kui soovite uuesti konfi kĂ€tte saada, avaldage konfiguratsioon taas.

  • ĂŒks formaat kĂ”igi tootjate jaoks, kogu kohandamine on viidud sonatasse, saadate standardiseeritud JSON-i, seadistate mis tahes saadaval olevat seadmet.

  • kĂ”ik seadmetele antud konfigid logitakse, kĂ”ik probleemsed kohad on logis vaadatavad ja vead nĂ€htavad.

  • vĂ”imalik kasutada ĂŒhte ĂŒldist linki koos tokeniga, iga telefon saab oma konfigureerimise, mĂ€rkides mac-aadressi. VĂ”i isiklik linki key jĂ€rgi.

  • API telefonide haldamiseks (management) ja konfigureerimise (provisioning) andmiseks on jagatud portide kaupa.

  • Testid. Minu jaoks oli vĂ€ga oluline fikseerida vĂ€lja antud konfigureerimise vorming ja katta kĂ”ik tavalised konfigureerimise andmise olukorrad testidega. Selleks, et kĂ”ik töötaks selgelt.

Miinused:

Praegu ei kasutata sonata raames krĂŒpteerimist. See tĂ€hendab, et muidugi saate alustada https-i kasutamist, paigaldades nĂ€iteks nginx sonata ette. Kuid kaubanduslikud meetodid pole veel kasutusele vĂ”etud. Miks? Projekt on veel noor, on konfigureeritud vaid paar sadu seadmeid. Ja kogun muidugi ideid ja tagasisidet. Edasi, et kĂ”ik oleks turvaline, et konfigureerimisi ei saaks vĂ”rgu pealt nuhkida, on tĂ”enĂ€oliselt mĂ”ttekas vaeva nĂ€hagi krĂŒptimisvĂ”tmete, TLS ja muude asjadega, kuid see on jĂ€tk.

UI puudumine. See vĂ”ib olla lĂ”ppkasutaja jaoks oluline miinus, kuid sĂŒsteemiadministraatori jaoks on tĂ”enĂ€oliselt tĂ€htsam kĂ€surea utiliit kui tĂ€ielik rakendus. KĂ€surea utiliidi loomine oli plaanides, kuid ei ole kindel, kas see on vajalik?

KokkuvÔttes?

VĂ€ike ja lihtne veebiserver mitme telefonimudeli konfigureerimiseks koos API-ga haldamiseks.

Kordame, kuidas see peaks töötama?

  1. Paigaldame sonata.
  2. Koostame json-konfigureerimise ja avaldame selle sonatas.
  3. SeejÀrel saame sonatalt linki konfigureerimiseks.
  4. SeejÀrel mÀrgime selle lingi telefoniaparaati.
  5. Seade tÔmbab konfigureerimise

jÀrgnevas kasutuses vaid kaks sammu:

  1. Koostame json-konfigureerimise ja avaldame selle sonatas.
  2. Seade tÔmbab konfigureerimise

Millised telefonid konfigureeritakse?

MĂŒĂŒjad Grandstream, Fanvil, Yealink. Konfigureerimised mĂŒĂŒja raames on enam-vĂ€hem ĂŒhte moodi, kuid vĂ”ivad sĂ”ltuda versioonist — vĂ”ib-olla on vajalik tĂ€iendav testimine.

Milliseid reegleid on vÔimalik seadistada?

Aja jÀrgi. Saate mÀÀrata aja, millal konfigureerimine on kÀttesaadav.
Mac-aadressi jÀrgi. Isikliku lingi kaudu konfigureerimise andmisel kontrollitakse samuti seadme mac-aadressi.
IP jÀrgi. IP-aadressi pÔhjal, kust pÀring tehti.

Kuidas sonataga suhelda?

API kaudu, tehes http pĂ€ringuid. API on teie installatsioonis saadaval. Kuna API toetab swagger spetsifikatsiooni, saate kasutada online-ĂŒlevaatusriista API testpĂ€ringute tegemiseks.

Ok, suurepÀrane. Asja on lahe, kuidas proovida?

Lihtsaim on kÀivitada docker-pilt, mis pÔhineb hoidlas sonata-sample. Hoidlas on paigaldusjuhend.

А ДслО Đ·ĐœĐ°ŃŽ node.js?

Kui sul on JavaScripti kasutamises kogemusi, siis sa saad kiiresti aru, kuidas siin kÔik toimib.

Kas sonata areneb edasi?

Olen osaliselt oma eesmĂ€rke saavutanud. Edasiarendus on seotud minu ĂŒlesannetega telefonide seadistamise automatiseerimise teemal. On veel vĂ”imalus laiendada konfigureerimist telefoninuppude seadistamiseks, lisada teenuse osutamise kontaktide aadressiraamat, vĂ”ib-olla veel midagi — kirjuta kommentaarides.

KokkuvÔte ja tÀnusÔnad

Olen avatud konstruktiivsetele ettepanekutele/vastuvĂ€idetele/kommentaaridele ja kĂŒsimustele, kuna vĂ”ib olla, et olen midagi ebaselgelt kirjeldanud.

TÀnan kÔiki kolleege, kes aitasid, nÔustasid, testisid, pakkusid/kingitasid testimiseks telefone. TÔeliselt on projekti seotud mitmed inimesed, kellega ma olen töötanud, vestelnud, AsterConfvestluste ja e-kirjade kaudu. AitÀh ideede ja mÔtete eest.

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster