MI Interface

De opensipsbrasil - wiki
Ir para navegação Ir para pesquisar

A interface de gerenciamento ( Management Interface [ ou MI ] ) é uma interface do OpenSIPS que permite aplicações externas a executarem comandos predefinidos dentro do OpenSIPS.

Visao Geral

Estes comandos normalmente permitem aplicações externa a:

  1. inserir dados no OpenSIPS ( como alteração de nivel de debug, registrar um contato, etc.. )
  2. requisitar dados do OpenSIPS ( verificar usuários registrados, verificar chamadas em andamento, coletar estatisticas , etc..)
  3. ativar uma ação interna no OpenSIPS (recarregar dados, enviar mensagem, etc..)

Os comandos para o MI são providos pelo core do OpenSIPS (Lista Completa), e também por módulos ( verifica os comandos de cada módulo em (Módulos)

Protocols

Vários protocolos estão disponiveis para a conexão (de um aplicativo externo) ao MI do OpenSIPS, como a interface em si é provida pelo core do OpenSIPS cada protocolo é provido por um módulo separado, você pode ativar multiplas interfaces e utilizar ao mesmo tempo os diferentes protocolos.

Protocolos disponiveis são:


  • mi_fifo - protocolo orientado a texto (veja a sintaxe na documentação do módulo), comunicação realizada via arquivo FIFO, OpenSIPS le os dados apartir de um arquivo predefinido, as aplicações externas irão enviar os comanods neste, como o arquivo é na verdade um fluxo de dados não existem restrições da quantidade de dados que o OpenSIPS pode retornar (quando solicitando alguma informação)
  • mi_datagram - protocolo orientado a texto similar ao fifo (veja a sintaxe na documentação do módulo), comunicação feita via SOCKET UNIX , além de pacotes UDP, o OpenSIPS fica aguardando pelos comandos na porta UDP ou no arquivo de socket, a informação transportada é limitada ao tamanho do datagrama (65K)


  • mi_xmlrpc - protocolo XMLRPC (XML sobre HTTP). Como TCP é utilizado, não existe limite referente a quantidade de dados transferidos.


Todos os protocolos permitem multiaplicação (vários clientes ao mesmo tempo) conectarem na mesma interface MI.


Exemplos

Um exemplo simples de interação com o OpenSIPS via interface MI é quando usamos o utilitário opensipsctl , ele utiliza FIFO ou XMLRPC para enviar os comandos via MI para o OpenSIPS.


O 'opensipsctl permite você rodar um comando através dos arquivos FIFO:


   opensipsctl fifo _mi_cmd_
   opensipsctl fifo ps
   opensipsctl fifo debug 4

Ou ele internamente de forma transparente utiliza comandos da MI provendo funcionalidades diferentes ou mais complexas.

Um programa simples em Python para executar um comando via MI no OpenSIPS através de XMLRPC:


#!/usr/bin/python
import xmlrpclib
opensips = xmlrpclib.ServerProxy('http://127.0.0.1:8080/RPC2')
print opensips.ps();


Voltar