Sonata - server penyedia SIP

Saya tidak tahu harus membandingkan apa ketentuan. Mungkin dengan kucing? Tampaknya mungkin tanpa dia, tetapi dengan dia sedikit lebih baik. Terutama jika itu berfungsi))


Pernyataan masalah:


  1. Saya ingin mengkonfigurasi telepon SIP dengan cepat, sederhana, aman. Saat memasang telepon, dan terlebih lagi saat mengkonfigurasi ulang.
  2. Banyak vendor memiliki format konfigurasi mereka sendiri, utilitas mereka untuk menghasilkan konfigurasi, cara mereka sendiri untuk melindungi konfigurasi. Tapi saya tidak ingin berurusan dengan semua orang.
  3. Banyak solusi penyediaan, a) difokuskan pada satu vendor atau satu sistem telepon, b) mereka agak rumit untuk diimplementasikan, sekelompok skrip, parameter, br ...

Pada poin 3 saya akan berkomentar bahwa ada sistem yang sangat baik untuk FreePBX , FusionPBX , Kazoo , di mana ada templat yang tersedia untuk telepon dari berbagai vendor. Ada solusi komersial yang memungkinkan konfigurasi dalam modul pengoperasian telepon dari berbagai produsen, misalnya, PBX Yeastar.


Pada Habrรฉ juga penuh dengan resep cara mengkonfigurasi perangkat dari berbagai vendor: satu , dua . Tetapi seperti yang mereka katakan, semua sistem memiliki kesalahan fatal. Jadi, buat sepeda Anda.


format sendiri


Seperti yang mereka katakan di xkcd, tidak ingin berurusan dengan 14 format - pikirkan tanggal 15 . Oleh karena itu, kami menggunakan pengaturan umum untuk telepon apa pun dan membuat konfigurasi format json kami sendiri.


Sesuatu seperti ini:


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

Jadi, di telepon apa pun, Anda perlu mengonfigurasi waktu setempat, sip baris. Semuanya sederhana di sini. Lebih banyak contoh dapat ditemukan di sini .


server sendiri


Dalam manual pabrikan biasanya ada titik di mana dikatakan: ambil csv, tulis alamat-login-password-poppy-sana, buat file dengan skrip perusahaan kami, letakkan di bawah server web Apache dan itu akan baik-baik saja.


Paragraf selanjutnya dari manual biasanya memberi tahu Anda apa lagi yang bisa Anda enkripsi file konfigurasi yang dihasilkan.


Tapi ini semua klasik. Pendekatan modern dengan smoothie dan twitter mengatakan bahwa Anda perlu membuat server web siap pakai yang tidak akan sekuat Apache, tetapi hanya akan melakukan satu hal kecil. Bentuk dan berikan konfigurasi dengan referensi.


Di sini kita berhenti dan ingat bahwa hampir semua telepon SIP sekarang dapat menerima konfigurasi melalui http / https, jadi kami tidak mempertimbangkan implementasi lain (ftp, tftp, ftps). Kemudian, setiap telepon tahu alamat poppynya sendiri. Oleh karena itu, kami akan membuat dua tautan: satu pribadi - pada kunci perangkat, jenderal kedua, yang berfungsi pada sekelompok alamat token dan poppy yang umum.


Juga, saya tidak akan berkutat pada konfigurasi nol, yaitu mengatur telepon dari awal, mis. Anda terjebak di jaringan dan mendapat banyak keuntungan. Tidak, dalam skenario saya, Anda memasukkannya ke jaringan, membuat konfigurasi awal (mengkonfigurasinya untuk menerima konfigurasi dari server), dan kemudian minum cokelat dan mengkonfigurasi ulang telepon sesuai kebutuhan melalui layanan. Opsi Pendistribusian 66 menjadi perhatian server DHCP.


Ngomong-ngomong, aku benar-benar tersiksa untuk mengatakan "ketentuan", jadi kata itu dikurangi menjadi "ketentuan", jangan menendang, tolong, dengan kakimu.


Dan satu hal lagi: server kami tidak memiliki UI, yaitu antarmuka pengguna. Mungkin untuk saat ini, tetapi tidak yakin, karena Saya tidak perlu Tetapi ada API untuk menyimpan / menghapus pengaturan, mendapatkan daftar vendor yang didukung, model, semuanya dijelaskan sesuai dengan kanon spesifikasi swagger.


Mengapa API, bukan UI? Karena Saya sudah memiliki sistem telepon saya sendiri, kemudian, saya memiliki sumber kredensial, di mana saya hanya perlu mengambil data ini, menyusun json yang diperlukan dan mempublikasikannya di server. Dan server sudah aman sesuai aturan yang ditentukan dalam file json, itu akan memberikan konfigurasi ke perangkat yang diperlukan atau tidak akan memberikan jika perangkat salah, atau tidak memenuhi kriteria yang ditentukan dalam json ini juga.



Berikut ini adalah ketentuan layanan mikro ternyata. Ini disebut sonata , kode sumber tersedia di github, ada juga gambar buruh pelabuhan yang sudah jadi , contoh menggunakan buruh pelabuhan di sini .


Fitur utama:


  • dalam hal apa pun, akses terbatas ke konfigurasi tepat waktu, secara default 10 menit. Jika Anda ingin membuat konfigurasi tersedia lagi, publikasi ulang konfigurasi lagi.


  • satu format untuk semua vendor, semua penyetelan dihapus dalam sonata, Anda mengirim json standar, Anda mengkonfigurasi peralatan yang tersedia.


  • semua konfigurasi yang diterbitkan untuk perangkat dicatat, semua area masalah dapat dilihat dalam log dan melihat kesalahan


  • adalah mungkin untuk menggunakan satu tautan umum dengan token, setiap telepon menerima konfigurasi sendiri dengan menentukan alamat mac. Atau tautan pribadi pada kunci.


  • API untuk manajemen dan penyediaan dibagi ke beberapa port


  • Tes. Sangat penting bagi saya untuk memperbaiki format konfigurasi yang dikeluarkan dan mencakup semua situasi yang biasa mengeluarkan konfigurasi dengan tes. Agar semuanya bekerja dengan jelas.



Cons:


Sejauh ini, enkripsi sonata belum digunakan. Yaitu Tentu saja, Anda dapat mulai menggunakan https dengan meletakkan nginx, misalnya, sebelum sonata. Tapi di sini ada metode kepemilikan yang belum terlibat. Mengapa Proyek ini masih muda, hampir dibatalkan seratus perangkat pertamanya. Dan, tentu saja, saya mengumpulkan ide, umpan balik. Lebih lanjut, untuk melakukan semuanya dengan aman, sehingga konfigurasi tidak dapat diendus pada jaringan, mungkin ada baiknya membingungkan kunci enkripsi, tl, dan landak dengan mereka, tetapi ini akan menjadi kelanjutan.


Kurangnya UI. Mungkin ini adalah minus yang signifikan bagi pengguna akhir, tetapi untuk administrator sistem, utilitas konsol lebih penting daripada aplikasi lengkap. Ada rencana untuk membuat utilitas konsol, tetapi tidak yakin apakah itu diperlukan?


Apa hasilnya?


Server web kecil dan sederhana untuk menyediakan beberapa model ponsel dengan API untuk manajemen.


Sekali lagi, bagaimana cara kerjanya?


  1. Pasang sonata.
  2. Kami membentuk json-config dan menerbitkannya di sonata.
  3. Kemudian kami mendapatkan tautan dari sonata untuk penyediaan.
  4. Kemudian kami menunjukkan tautan ini di perangkat telepon.
  5. Perangkat mengencangkan konfigurasi

hanya ada dua langkah dalam operasi selanjutnya:


  1. Kami membentuk json config dan menerbitkannya di sonata
  2. Perangkat mengencangkan konfigurasi

Jenis telepon apa yang diunggah?


Vendor Grandstream, Fanvil, Yealink. Konfigurasi dalam vendor kurang lebih sama, tetapi mungkin berbeda tergantung pada firmware - mungkin perlu untuk menguji tambahan.


Aturan apa yang bisa ditetapkan?


Waktu Anda dapat menentukan waktu hingga konfigurasi akan tersedia.
Berdasarkan alamat mac. Ketika Anda mengirim konfigurasi melalui tautan pribadi perangkat, alamat mac juga akan diperiksa.
Oleh ip. Dengan alamat ip, dari mana permintaan dibuat.


Bagaimana cara berinteraksi dengan sonata?


Melalui API, membuat permintaan http. API akan tersedia di instalasi Anda. Karena Karena API mendukung spesifikasi swagger, Anda dapat menggunakan utilitas online untuk permintaan pengujian ke API.


Ok bagus Yang keren, bagaimana caranya?


Cara termudah adalah dengan menyebarkan gambar buruh pelabuhan berdasarkan repositori sonata-sampel . Repositori berisi instruksi instalasi.


Dan jika saya tahu node.js?


Jika Anda memiliki pengalaman menggunakan JavaScript, maka Anda akan dengan cepat mengetahui cara kerja semuanya di sini.


Akankah sonata berkembang?


Saya mencapai sebagian tujuan saya. Pengembangan lebih lanjut adalah pertanyaan tentang tugas saya pada topik otomatisasi pengaturan telepon. Masih ada kesempatan untuk memperluas konfigurasi untuk menyesuaikan tombol telepon, menambahkan fitur buku alamat, mungkin sesuatu yang lain, tulis di komentar.


Ringkasan dan ucapan terima kasih


Saya akan dengan senang hati memberikan saran / keberatan / komentar dan pertanyaan, sebagai itu mungkin sesuatu yang tidak bisa dijelaskan.


Saya juga berterima kasih kepada semua kolega yang membantu, memberi saran, menguji, menyediakan / menyumbangkan ponsel untuk pengujian. Sebenarnya, banyak orang yang berbicara dengan saya di tempat kerja, di ruang obrolan dan email terlibat dalam proyek ke tingkat yang berbeda. Terima kasih atas ide dan pemikirannya.

Source: https://habr.com/ru/post/id445350/


All Articles