Sonata - server provisioning SIP

Kuring henteu weruh naon ngabandingkeun provisioning kalawan. Meureun jeung ucing? Sigana mungkin tanpa eta, tapi kalawan éta saeutik hadé. Utamana upami tiasa dianggo))

Rumusan masalah:

  1. Abdi hoyong nyetél telepon SIP gancang, gampang, sareng aman. Nalika masang telepon, komo deui nalika ngonpigurasikeun deui.
  2. Loba ngical paralatan gaduh format config sorangan, Utiliti sorangan pikeun ngahasilkeun configs, sarta cara sorangan ngajaga configs. Jeung kuring teu hayang pisan nungkulan dulur.
  3. Loba solusi provisioning, a) fokus kana hiji vendor atawa hiji sistem telepon, b) rada pajeujeut pikeun nerapkeun, loba naskah, parameter, brrr...

Ngeunaan titik 3, kuring bakal nyarios yén aya sistem penyediaan anu saé pikeun FreePBX, pikeun FusionPBX, pikeun Kazoo, dimana témplat pikeun telepon ti sagala rupa padagang sadia pikeun umum. Aya solusi komérsial dimana anjeun ogé tiasa ngonpigurasikeun operasi telepon ti pabrik béda dina modul provisioning, contona, Yeastar PBX.

Habré ogé pinuh ku resep ngeunaan cara nyetél alat tina sababaraha padagang: waktu, два. Tapi sakumaha anu aranjeunna nyarios, sadaya sistem ngagaduhan cacad anu parah. Jadi urang nyieun sapédah sorangan.

format anjeun sorangan

Sakumaha anu aranjeunna nyarios dina xkcd, upami anjeun henteu hoyong ngurus 14 format - datang nepi ka 15. Ku sabab kitu, kami nganggo setélan umum pikeun telepon naon waé sareng ngadamel format konfigurasi json urang sorangan.

Sapertos kieu:

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

Janten, dina telepon naon waé anjeun kedah ngonpigurasikeun waktos lokal sareng garis SIP. Sagalana basajan di dieu. Anjeun tiasa ningali deui conto di dieu.

provisioning server anjeun sorangan

Dina manual produsén biasana aya titik dimana nyebutkeun: nyandak csv a, nulis handap login-sandi-mac-alamat anjeun, ngahasilkeun file ngagunakeun Aksara proprietary urang, nempatkeun eta dina server web Apache tur sagalana bakal rupa.

Paragraf saterusna manual biasana ngabejaan Anjeun yen Anjeun ogé bisa encrypt file config dihasilkeun.

Tapi ieu sadayana klasik. Pendekatan modern sareng smoothies sareng Twitter nyarios yén anjeun kedah ngadamel pangladén wéb anu siap-siap anu henteu sakuat Apache, tapi ngan ukur ngalakukeun hiji hal anu alit. Ngahasilkeun sareng ngirim konfigurasi nganggo tautan.

Hayu urang eureun di dieu sarta inget yen ampir kabéh telepon SIP ayeuna bisa nampa configs via http / HTTPS, sangkan teu tempo palaksanaan séjén (ftp, tftp, ftps). Lajeng, unggal telepon terang alamat MAC sorangan. Ku alatan éta, urang bakal nyieun dua tumbu: hiji pribadi - dumasar kana konci alat, umum kadua, anu dianggo ngagunakeun kombinasi token umum jeung alamat MAC.

Ogé, abdi moal Huni on enol-config, i.e. nyetel telepon ti scratch, i.e. Anjeun nyolok kana jaringan sareng éta mimiti jalan. Henteu, dina skenario abdi, anjeun nyolok kana jaringan, ngalakukeun setelan awal (nyetél pikeun nampa config ti server provisioning), lajeng inuman pina colada na reconfigure telepon sakumaha diperlukeun ngaliwatan provisioning nu. Pilihan Distribusi 66 tanggung jawab server DHCP.

Ku jalan kitu, kuring geus bosen ngomong "provisioning", jadi kecap ieu disingget jadi "provisioning", punten ulah ditajong kuring.

Sareng hiji deui: server provisioning kami henteu gaduh UI, i.e. panganteur pamaké. Sugan, pikeun ayeuna, tapi teu yakin, sabab ... Abdi henteu peryogi. Tapi aya hiji API pikeun nyimpen / mupus setélan, meunang daptar ngical paralatan dirojong, model, sagalana dijelaskeun nurutkeun kana canons spésifikasi swagger.

Naha API sanes UI? Sabab Kuring geus boga sistem telepon sorangan, lajeng abdi gaduh sumber Kapercayaan, dimana kuring ngan perlu nyandak data ieu, compile nu json diperlukeun tur nyebarkeun eta dina server provisioning. Jeung server provisioning, nurutkeun aturan dieusian dina file json, bakal masihan alat diperlukeun config na atanapi moal masihan lamun alat nu teu bener atawa teu minuhan kriteria ogé dieusian dina json ieu.

Sonata - server provisioning SIP

Ieu kumaha provisioning microservice tétéla. Ditelepon sonata, Kodeu sumberna sayogi dina GitHub, aya ogé gambar docker siap, conto pamakéan docker di dieu.

fitur konci:

  • dina sagala hal, aksés kawates kana config ku waktu, sacara standar 10 menit. Lamun hayang nyieun config sadia deui, republish konfigurasi deui.

  • hiji format pikeun sakabéh ngical paralatan, kabéh pangaluyuan dihapus dina sonata, Anjeun ngirim json standardized, ngonpigurasikeun sagala parabot sadia.

  • sadaya configs dikaluarkeun ka alat nu diasupkeun, sadaya wewengkon masalah bisa ditempo dina log jeung kasalahan bisa ditempo

  • Kasebut nyaéta dimungkinkeun pikeun ngagunakeun hiji link umum kalawan token a; unggal telepon narima config sorangan ku nangtukeun alamat mac. Atawa link pribadi via konci.

  • API pikeun manajemén (manajemén) jeung provisioning of configs ka telepon (provisioning) dibagi ku palabuhan

  • Tés. Ieu pohara penting pikeun kuring pikeun ngalereskeun format tina config dikaluarkeun sarta nutupan sagala kaayaan biasa ngaluarkeun config kalawan tés. Sangkan ieu sadayana jalan jelas.

kontra:

Sajauh ieu, énkripsi henteu dianggo dina sagala cara dina Sonata. Jelema. Anjeun tangtosna tiasa ngamimitian nganggo https ku nempatkeun nginx di payuneun sonata contona. Tapi metode proprietary henteu acan dianggo. Naha? Proyék éta masih ngora, éta parantos ngaluncurkeun ratus alat anu munggaran. Sareng, tangtosna, kuring ngumpulkeun ideu sareng eupan balik. Salajengna, dina urutan sangkan sagalana aman, ku kituna configs teu bisa sniffed dina jaringan, meureun nya patut bothering konci enkripsi, TLS jeung landak sareng maranehna, tapi ieu bakal jadi tuluyan.

Kurangna UI. Panginten ieu mangrupikeun kalemahan anu penting pikeun pangguna akhir, tapi pikeun administrator sistem, utilitas konsol langkung penting tibatan aplikasi anu lengkep. Aya rencana pikeun nyieun utilitas konsol, tapi kuring henteu yakin upami diperyogikeun?

Naon hasilna?

Pangladén wéb anu leutik sareng sederhana pikeun nyayogikeun sababaraha model telepon kalayan API pikeun manajemén.

Sakali deui, kumaha ieu sakuduna dituju?

  1. Masang sonata.
  2. Urang nyieun config json sarta nyebarkeun eta di sonata.
  3. Teras we nampi link provisioning ti sonata.
  4. Teras we nunjukkeun tautan ieu dina telepon.
  5. alat nu loading config

Aya ngan dua léngkah dina operasi saterusna:

  1. Urang nyieun config json sarta nyebarkeun eta di sonata
  2. alat nu loading config

Telepon mana anu bakal diwanohkeun?

Ngical paralatan Grandstream, Fanvil, Yealink. Konfigurasi anu aya dina vendor langkung seueur sami, tapi tiasa bénten-béda gumantung kana firmware - panginten peryogi uji tambahan.

Aturan naon anjeun tiasa nyetél?

Ku waktu. Anjeun tiasa nangtukeun waktos dugi ka config bakal sadia.
Ku alamat mac. Nalika ngirimkeun config via link pribadi alat, alamat mac ogé bakal dipariksa.
Ku ip. Ku alamat IP ti mana pamundut dijieun.

Kumaha berinteraksi sareng sonata?

Via API, nyieun requests http. API bakal sadia dina instalasi Anjeun. Sabab API ngarojong spésifikasi swagger, anjeun tiasa nganggo utiliti online pikeun requests test ka API.

OKÉ, hébat. Barang keren, kumaha upami nyobian?

Cara panggampangna nyaéta nyebarkeun gambar docker dumasar kana gudang sonata-sampel. Repository ngandung parentah instalasi.

Kumaha lamun kuring nyaho node.js?

Upami anjeun gaduh pangalaman nganggo JavaScript, maka anjeun bakal gancang terang kumaha sadayana jalan di dieu.

Bakal aya ngembangkeun Sonata?

Kuring sawaréh ngahontal cita-cita kuring. Pangembangan salajengna nyaéta masalah tugas kuring dina topik automating setelan telepon. Aya ogé kasempetan pikeun dilegakeun configs pikeun ngonpigurasikeun tombol telepon, tambahkeun provisioning buku alamat, sugan hal sejenna, nulis dina komentar.

Ringkesan sareng pangakuan

Abdi bakal bungah gaduh saran / bantahan / koméntar sareng patarosan anu konstruktif, sabab ... Bisa jadi anjeunna ngajelaskeun hiji hal anu teu kaharti.

Kuring ogé ngucapkeun syukur ka sadaya kolega kuring anu ngabantosan, mamatahan, nguji, sareng nyayogikeun / nyumbang telepon pikeun tés. Kanyataanana, seueur jalma anu kuring komunikasi di tempat damel anu kalibet dina proyék pikeun tingkat anu béda-béda, AsterConf'e, dina obrolan sareng email. Hatur nuhun pikeun ide sareng pikiran.

sumber: www.habr.com

Tambahkeun komentar