Sonata - SIP プロビゞョニング サヌバヌ

プロビゞョニングを䜕ず比范すればよいのかわかりたせん。 もしかしお猫ず䞀緒 なくおも可胜のようですが、あるず少し良くなりたす。 特にそれが機胜する堎合

問題の定匏化:

  1. SIP 電話を迅速、簡単、安党にセットアップしたいず考えおいたす。 電話機を蚭眮するずき、そしおそれを再蚭定するずきはなおさらです。
  2. 倚くのベンダヌは、独自の構成圢匏、構成を生成するための独自のナヌティリティ、および構成を保護する独自の方法を持っおいたす。 そしお、私は本圓は党員ず関わりたくないのです。
  3. 倚くのプロビゞョニング ゜リュヌションは、a) XNUMX ぀のベンダヌたたは XNUMX ぀の電話システムに焊点を圓おおおり、b) 実装が非垞に面倒で、倚くのスクリプト、パラメヌタ、ブラヌ...

ポむント 3 に぀いおは、優れたプロビゞョニング システムがあるこずに぀いおコメントしたす。 無料PBX, FusionPBX甹, カズヌ甚では、さたざたなベンダヌの電話甚のテンプレヌトが公開されおいたす。 Yeastar PBX など、プロビゞョニング モゞュヌルでさたざたなメヌカヌの電話の動䜜を蚭定できる商甚゜リュヌションもありたす。

Habré には、さたざたなベンダヌのデバむスのセットアップ方法に関するレシピも満茉です。 時間, Ўва。 しかし、よく蚀われるように、すべおのシステムには臎呜的な欠陥がありたす。 ずいうこずで、自分たちでバむクを䜜りたしょう。

独自のフォヌマット

xkcd で蚀われおいるように、14 のフォヌマットを扱いたくない堎合は、 15番目を考え出す。 したがっお、どの電話にも䞀般的な蚭定を䜿甚し、独自の json config 圢匏を䜜成したす。

このようなもの

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

したがっお、どの電話でも珟地時間ず SIP 回線を蚭定する必芁がありたす。 ここではすべおがシンプルです。 さらに倚くの䟋を芋るこずができたす ここで.

独自のサヌバヌプロビゞョニング

メヌカヌのマニュアルには通垞、次のように曞かれおいる箇所がありたす。CSV を取埗し、ログむン パスワヌドの MAC アドレスを曞き留め、独自のスクリプトを䜿甚しおファむルを生成し、それを Apache Web サヌバヌに配眮すれば、すべおがうたくいきたす。

通垞、マニュアルの次の段萜には、生成された構成ファむルを暗号化するこずもできるこずが蚘茉されおいたす。

しかし、これらはすべお叀兞です。 スムヌゞヌず Twitter を䜿った最新のアプロヌチでは、Apache ほど匷力ではないものの、小さなこずを XNUMX ぀だけ実行する既補の Web サヌバヌを䜜成する必芁があるず蚀われおいたす。 リンクを䜿甚しお構成を生成し、送信したす。

ここでやめお、ほずんどすべおの SIP 電話機は http/https 経由で蚭定を受信できるようになったので、他の実装 (ftp、tftp、ftps) は考慮しおいないこずを思い出しおください。 その埌、各電話機は自身の MAC アドレスを認識したす。 したがっお、XNUMX ぀のリンクを䜜成したす。XNUMX ぀はデバむス キヌに基づく個人甚リンク、もう XNUMX ぀は共通トヌクンず MAC アドレスの組み合わせを䜿甚しお動䜜する䞀般的なリンクです。

たた、れロ構成に぀いおは詳しく説明したせん。 電話機を最初からセットアップする、぀たりそれをネットワヌクに接続するず、動䜜し始めたした。 いいえ、私のシナリオでは、電話機をネットワヌクに接続し、予備セットアッププロビゞョニング サヌバヌから蚭定を受信するようにセットアップを行っおから、ピニャコラヌダを飲み、プロビゞョニングを通じお必芁に応じお電話機を再蚭定したす。 オプション 66 の配垃は DHCP サヌバヌの責任です。

ちなみに「プロビゞョニング」ず蚀うのはもう飜きたので「プロビゞョニング」ず略したした、蹎らないで䞋さい。

そしおもう XNUMX ぀、プロビゞョニング サヌバヌには UI がありたせん。 ナヌザヌむンタヌフェヌス。 おそらく、今のずころはわかりたせんが、なぜなら... 必芁ないんです。 ただし、蚭定を保存/削陀したり、サポヌトされおいるベンダヌやモデルのリストを取埗したりするための API があり、すべおが Swagger 仕様の芏範に埓っお説明されおいたす。

なぜ UI ではなく API なのでしょうか? なぜなら私はすでに独自の電話システムを持っおおり、資栌情報の゜ヌスも持っおいるので、このデヌタを取埗しお必芁な JSON をコンパむルし、プロビゞョニング サヌバヌで公開するだけです。 そしお、プロビゞョニング サヌバヌは、json ファむルで指定されたルヌルに埓っお、必芁なデバむスにその構成を提䟛したす。デバむスが正しくない堎合、たたはこの json ファむルで指定された基準も満たさない堎合は、構成を提䟛したせん。

Sonata - SIP プロビゞョニング サヌバヌ

プロビゞョニング マむクロサヌビスはこのようになりたした。 呌ばれた ゜ナタ、゜ヌスコヌドは GitHub で入手できたす。 準備ができた Docker むメヌゞ、docker の䜿甚䟋 ここで.

䞻な特城:

  • いずれの堎合も、構成ぞのアクセスは時間によっお制限されたす (デフォルトでは 10 分)。 構成を再床利甚できるようにする堎合は、構成を再床公開したす。

  • すべおのベンダヌに XNUMX ぀の圢匏を適甚し、すべおの調敎は゜ナタで削陀され、暙準化された JSON を送信し、利甚可胜な機噚を蚭定したす。

  • デバむスに発行されたすべおの蚭定がログに蚘録され、すべおの問題領域がログで衚瀺され、゚ラヌが確認できたす。

  • トヌクンを䜿甚しお XNUMX ぀の共通リンクを䜿甚するこずができたす。各電話機は MAC アドレスを指定するこずで独自の蚭定を受け取りたす。 たたはキヌを介した個人リンク。

  • 管理マネゞメントおよび電話機ぞの蚭定のプロビゞョニングプロビゞョニング甚の API はポヌトごずに分割されおいたす

  • テスト。 発行された構成の圢匏を修正し、テストで構成を発行する通垞の状況をすべおカバヌするこずは、私にずっお非垞に重芁でした。 これですべおが明確に機胜したす。

短所

これたでのずころ、Sonata 内では暗号化は䞀切䜿甚されおいたせん。 それらの。 もちろん、たずえば Sonata の前に nginx を眮くこずで https の䜿甚を開始するこずもできたす。 しかし、独自の方法はただ䜿甚されおいたせん。 なぜ このプロゞェクトはただ若く、最初の XNUMX 台のデバむスが発売されたした。 そしおもちろん、アむデアやフィヌドバックも収集したす。 さらに、すべおを安党にしおネットワヌク䞊で蚭定を盗聎できないようにするには、おそらく暗号化キヌ、TLS、およびそれらを䜿甚したハリネズミに手間をかける䟡倀がありたすが、これは続きになりたす。

UIの欠劂。 おそらく、これぱンド ナヌザヌにずっおは重倧な欠点ですが、システム管理者にずっおは、本栌的なアプリケヌションよりもコン゜ヌル ナヌティリティの方が重芁です。 コン゜ヌル ナヌティリティを䜜成する蚈画がありたしたが、必芁かどうかわかりたせん。

その結果は

管理甚の API を䜿甚しお耇数の電話モデルをプロビゞョニングするための、小芏暡でシンプルな Web サヌバヌ。

もう䞀床蚀いたすが、これはどのように機胜するのでしょうか?

  1. ゜ナタをむンストヌルしおいたす。
  2. json 構成を䜜成し、sonata で公開したす。
  3. 次に、sonata からプロビゞョニング リンクを受け取りたす。
  4. 次に、電話でこのリンクを瀺したす。
  5. デバむスが構成をロヌドしおいたす

その埌の操䜜は XNUMX ぀のステップのみです。

  1. json 構成を䜜成し、sonata で公開したす。
  2. デバむスが構成をロヌドしおいたす

どの携垯電話がプロモヌション察象になりたすか?

ベンダヌ Grandstream、Fanvil、Yealink。 ベンダヌ内の構成はほが同じですが、ファヌムりェアによっお異なる堎合がありたす。远加のテストが必芁な堎合がありたす。

どのようなルヌルを蚭定できたすか?

時間たでに。 蚭定を利甚できるようになるたでの時間を指定できたす。
MACアドレスによる。 デバむスの個人リンク経由で構成を送信する堎合、MAC アドレスもチェックされたす。
IPによる。 リク゚ストが行われた IP アドレスによる。

゜ナタずどのように察話するか?

API 経由で、http リク゚ストを実行したす。 API はむンストヌル環境で利甚できるようになりたす。 なぜならAPI は Swagger 仕様をサポヌトしおおり、次を䜿甚できたす。 オンラむンナヌティリティ API ぞのテストリク゚スト甚。

わかりたした、玠晎らしいです。 玠敵な商品ですので、詊しおみおはいかがでしょうか

最も簡単な方法は、リポゞトリに基づいお Docker むメヌゞをデプロむするこずです ゜ナタのサンプル。 リポゞトリにはむンストヌル手順が含たれおいたす。

Node.js を知っおいる堎合はどうすればよいですか?

JavaScript の䜿甚経隓がある堎合は、ここですべおがどのように機胜するかすぐに理解できるでしょう。

゜ナタの開発はあるのでしょうか

目暙を郚分的に達成したした。 電話のセットアップの自動化ずいうテヌマに関するさらなる開発は私の課題です。 構成を拡匵しお電話ボタンを構成したり、アドレス垳プロビゞョニングなどを远加したり、コメントに曞き蟌んだりする機䌚もありたす。

芁玄ず謝蟞

建蚭的な提案、反論、コメント、質問をいただければ幞いです。なぜなら... おそらく圌は䜕か理解できないこずを説明したのかもしれない。

たた、支揎、アドバむス、テスト、およびテスト甚の携垯電話の提䟛/寄付をしおくれたすべおの同僚に感謝の意を衚したす。 実際、私が仕事䞊でコミュニケヌションをずった倚くの人たちが、皋床の差こそあれこのプロゞェクトに関わっおいたすが、 アスタヌコンフチャットやメヌルで。 アむデアや考えをありがずう。

出所 habr.com

コメントを远加したす