Sonata - SIP hazırlama sunucusu

Temel hazırlığı neyle karşılaştıracağımı bilmiyorum. Belki bir kediyle? Onsuz mümkün görünüyor, ancak onunla biraz daha iyi. Özellikle işe yarıyorsa))

Sorunun formülasyonu:

  1. SIP telefonlarını hızlı, kolay ve güvenli bir şekilde kurmak istiyorum. Bir telefonu kurarken ve hatta onu yeniden yapılandırırken daha da fazlası.
  2. Birçok satıcının kendi yapılandırma formatları, yapılandırma oluşturmak için kendi yardımcı programları ve yapılandırmaları korumanın kendi yolları vardır. Ve gerçekten herkesle uğraşmak istemiyorum.
  3. Çoğu provizyon çözümü, a) tek bir satıcıya veya tek telefon sistemine odaklanır, b) uygulanması oldukça zahmetlidir, çok sayıda komut dosyası, parametre, brrr...

3. noktaya ilişkin olarak mükemmel provizyon sistemlerinin olduğu yönünde bir yorum yapacağım. ÜcretsizPBX için, FusionPBX için, Kazoo içinÇeşitli satıcıların telefonlarına yönelik şablonların kamuya açık olduğu yer. Yeastar PBX gibi farklı üreticilerin telefonlarının çalışmasını da ön hazırlık modülünde yapılandırabileceğiniz ticari çözümler vardır.

Habré ayrıca çeşitli satıcıların sunduğu cihazların nasıl kurulacağına ilişkin tariflerle doludur: zaman, iki. Ancak dedikleri gibi, tüm sistemlerin ölümcül bir kusuru vardır. Yani kendi bisikletimizi yapacağız.

kendi formatın

Xkcd'de dedikleri gibi, 14 formatla uğraşmak istemiyorsanız - 15'inciyi bul. Bu nedenle herhangi bir telefon için genel ayarları kullanıyor ve kendi json config formatımızı oluşturuyoruz.

Bunun gibi bir şey:

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

Bu nedenle, herhangi bir telefonda yerel saati ve SIP hatlarını yapılandırmanız gerekir. Burada her şey basit. Daha fazla örnek görebilirsiniz burada.

kendi sunucu provizyonunuz

Üreticinin kılavuzlarında genellikle şöyle yazan bir nokta vardır: bir csv alın, giriş-şifre-mac-adresini yazın, özel betiğimizi kullanarak dosyaları oluşturun, bunları Apache web sunucusunun altına koyun ve her şey yoluna girecek.

Kılavuzun bir sonraki paragrafı genellikle oluşturulan yapılandırma dosyasını da şifreleyebileceğinizi söyler.

Ama bunların hepsi klasik. Smoothie'ler ve Twitter'a yönelik modern yaklaşım, Apache kadar güçlü olmayacak, yalnızca küçük bir şey yapacak hazır bir web sunucusu yapmanız gerektiğini söylüyor. Bir bağlantı kullanarak yapılandırmalar oluşturun ve gönderin.

Burada duralım ve hemen hemen tüm SIP telefonlarının artık http/https üzerinden yapılandırma alabildiğini hatırlayalım, bu nedenle diğer uygulamaları (ftp, tftp, ftps) düşünmüyoruz. Daha sonra her telefon kendi MAC adresini bilir. Bu nedenle, iki bağlantı yapacağız: biri kişisel - cihaz anahtarına dayalı, ikincisi ise ortak bir belirteç ve MAC adresinin birleşimi kullanılarak çalışan genel.

Ayrıca sıfır yapılandırma üzerinde durmayacağım, yani. telefonu sıfırdan kurmak, yani. ağa bağladınız ve çalışmaya başladı. Hayır, benim senaryomda, onu ağa bağlarsınız, ön kurulumu yaparsınız (yapılandırmayı ön hazırlık sunucusundan alacak şekilde ayarlarsınız) ve ardından pina colada içip, ön hazırlık yoluyla telefonu gerektiği gibi yeniden yapılandırırsınız. Seçenek 66'nın dağıtımı DHCP sunucusunun sorumluluğundadır.

Bu arada, “erzak” demekten tamamen yoruldum, bu yüzden kelime “erzak” olarak kısaltıldı, lütfen beni tekmelemeyin.

Ve bir şey daha: temel hazırlık sunucumuzun bir kullanıcı arayüzü yok; Kullanıcı arayüzü. Belki şimdilik, ama emin değilim, çünkü... Buna ihtiyacım yok. Ancak ayarları kaydetmek/silmek, desteklenen satıcıların ve modellerin bir listesini almak için bir API var, her şey havalı spesifikasyonun kurallarına göre açıklanıyor.

Neden UI değil de API? Çünkü Zaten kendi telefon sistemim var, sonra bir kimlik bilgileri kaynağım var, burada sadece bu verileri almam, gerekli json'u derlemem ve hazırlama sunucusunda yayınlamam gerekiyor. Ve hazırlama sunucusu, json dosyasında belirtilen kurallara göre, gerekli cihaza yapılandırmasını verecek veya cihaz doğru değilse veya bu json'da belirtilen kriterleri karşılamıyorsa bunu vermeyecektir.

Sonata - SIP hazırlama sunucusu

Mikro provizyon hizmeti bu şekilde ortaya çıktı. İsminde sonatkaynak kodu GitHub'da mevcuttur, ayrıca hazır liman işçisi görüntüsü, liman işçisi kullanım örneği burada.

Ana Özellikler:

  • her durumda, yapılandırmaya erişim varsayılan olarak 10 dakika ile sınırlıdır. Yapılandırmayı yeniden kullanılabilir hale getirmek istiyorsanız yapılandırmayı yeniden yayınlayın.

  • tüm satıcılar için tek format, sonatadaki tüm ayarlamalar kaldırılır, standartlaştırılmış json gönderirsiniz, mevcut herhangi bir ekipmanı yapılandırırsınız.

  • Cihazlara yapılan tüm konfigürasyonlar loglanır, tüm sorunlu alanlar log’da görüntülenebilir ve hatalar görülebilir

  • Bir belirteçle ortak bir bağlantı kullanmak mümkündür; her telefon, mac adresini belirterek kendi yapılandırmasını alır. Veya anahtar yoluyla kişisel bir bağlantı.

  • Yapılandırmaların telefonlara yönetimi (yönetim) ve sağlanması (sağlama) için API'ler bağlantı noktalarına bölünür

  • Testler. Verilen yapılandırmanın formatını düzeltmek ve testlerle bir yapılandırma yayınlamanın tüm olağan durumlarını kapsamak benim için çok önemliydi. Böylece bunların hepsi net bir şekilde çalışıyor.

Eksileri:

Şu ana kadar Sonata'da hiçbir şekilde şifreleme kullanılmadı. Onlar. tabi ki örneğin sonat'ın önüne nginx koyarak https kullanmaya başlayabilirsiniz. Ancak tescilli yöntemler henüz kullanılmamıştır. Neden? Proje henüz çok genç, ilk yüz cihazını piyasaya sürdü. Ve tabii ki fikir ve geri bildirim topluyorum. Ayrıca, her şeyi güvenli hale getirmek ve ağdaki yapılandırmaların koklanmaması için, muhtemelen şifreleme anahtarları, tls ve onlarla birlikte kirpi ile uğraşmaya değer, ancak bu bir devamı olacak.

Kullanıcı arayüzü eksikliği. Belki bu son kullanıcı için önemli bir dezavantajdır, ancak bir sistem yöneticisi için konsol yardımcı programı tam teşekküllü bir uygulamadan daha önemlidir. Bir konsol yardımcı programı oluşturma planları vardı ancak buna ihtiyaç olup olmadığından emin değilim.

Sonuç?

Yönetim için bir API ile çeşitli telefon modellerinin sağlanmasına yönelik küçük ve basit bir web sunucusu.

Bir kez daha soruyorum, bu nasıl çalışacak?

  1. Sonatın kurulumu.
  2. Bir json config oluşturup onu sonata'da yayınlıyoruz.
  3. Daha sonra sonatadan bir provizyon bağlantısı alıyoruz.
  4. Daha sonra bu bağlantıyı telefonda belirtiyoruz.
  5. Cihaz yapılandırmayı yüklüyor

Sonraki işlemde yalnızca iki adım vardır:

  1. Bir json yapılandırması oluşturup sonata'da yayınlıyoruz
  2. Cihaz yapılandırmayı yüklüyor

Hangi telefonlar tanıtılacak?

Satıcılar Grandstream, Fanvil, Yealink. Satıcının içindeki yapılandırmalar aşağı yukarı aynıdır ancak ürün yazılımına bağlı olarak farklılık gösterebilir; ek olarak test edilmesi gerekebilir.

Hangi kuralları belirleyebilirsiniz?

Zamanla. Yapılandırmanın kullanılabilir olacağı süreyi belirtebilirsiniz.
Mac adresine göre. Yapılandırmayı cihazın kişisel bağlantısı aracılığıyla gönderirken mac adresi de kontrol edilecektir.
İp ile. İsteğin yapıldığı IP adresine göre.

Sonatla nasıl etkileşime geçilir?

API aracılığıyla http istekleri yapma. API kurulumunuzda mevcut olacaktır. Çünkü API, havalı spesifikasyonu destekler, kullanabilirsiniz çevrimiçi yardımcı program API'ye yönelik test istekleri için.

Tamam harika. Harika bir şey, denemeye ne dersiniz?

En kolay yol, bir depoyu temel alan bir liman işçisi görüntüsünü dağıtmaktır. sonat örneği. Depo kurulum talimatlarını içerir.

Node.js'yi biliyorsam ne olur?

JavaScript kullanma deneyiminiz varsa, burada her şeyin nasıl çalıştığını hızlı bir şekilde anlayacaksınız.

Bir Sonata geliştirmesi olacak mı?

Hedeflerime kısmen ulaştım. Daha fazla gelişme, telefon kurulumunun otomatikleştirilmesi konusundaki görevlerimin meselesidir. Ayrıca telefon düğmelerini yapılandırmak, adres defteri provizyonu eklemek, belki başka bir şey eklemek, yorumlara yazmak için yapılandırmaları genişletme fırsatı da vardır.

Özet ve teşekkür

Yapıcı önerileriniz/itirazlarınız/yorumlarınız ve sorularınız varsa memnuniyetle karşılarım çünkü... Bir şeyi anlaşılmaz bir şekilde tanımlamış olabilir.

Ayrıca yardım eden, tavsiyelerde bulunan, test eden ve testler için telefon sağlayan/bağışlayan tüm meslektaşlarıma şükranlarımı sunuyorum. Gerçekte iş yerinde iletişim kurduğum birçok kişi projeye farklı derecelerde dahil oluyor, AsterConf'e, sohbetlerde ve e-postalarda. Fikirler ve düşünceler için teşekkürler.

Kaynak: habr.com

Yorum ekle