Formato do script

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

O script de configuração do OpenSIPs possui três partes logicas:

  • Parametros globais
  • Sessão de módulos
  • lógica de roteamento



Parametros Globais

Normalmente é a primeira parte do script, neste você declara os Parâmetros Globais - estes parametros ou parametros de core afetão o core do OpenSIPS e possivelmente os módulos.

É possível configurar os endereços para aceitar requisição, protocolos de transporte disponiveis, forking (número de processos) , log's e outras coisas que são providas por estes parametros.


Exemplo:


disable_tcp = yes
listen = udp:192.168.2.10:5060
listen = udp:192.168.2.10:5070
fork = yes
children = 4
log_stderror = no


Sessão de módulos

Em relação aos módulos do OpenSIPS, os módulos que são para serem carregados (nenhum módulo é carregado por default) são especificados utilizando a diretiva loadmoule'. Os módulos devem ser especificados pelo nome e opcionalmente o caminho (para o arquivo .so ). Se não é informado o caminho (e apenas o nome do módulo) , o caminho padrão será assumido para localização e carregamento destes módulos (o caminho padrão é /usr/lib/opensips/modules se outro não foi configurado durante a compilação , ai neste caso deve ser utilizado o caminho completo , ou você pode definir de forma global (para todos os módulos) através da diretiva mpath nos parametros globais.


Uma vez que os módulos são carregados, os paramaetros para os módulos devem ser definidos utilizando a diretiva modparam , para verificar os parametros de cada módulo e os tipos de valores você pode verificar na documentação do módulo em especifico na sessão Parametros.

Exemplos:

loadmodule "modules/mi_datagram/mi_datagram.so"
modparam("mi_datagram", "socket_name", "udp:127.0.0.1:4343")
modparam("mi_datagram", "children_count", 3)

ou

mpath="/usr/local/opensips_proxy/lib/modules"
loadmodule "mi_datagram.so"
modparam("mi_datagram", "socket_name", "udp:127.0.0.1:4343")
modparam("mi_datagram", "children_count", 3)
loadmodule "mi_fifo.so"
modparam("mi_fifo", "fifo_name", "/tmp/opensips_fifo")

Lógica de Roteamento

A lógica de roteamente é atualmente a soma das rotas que contem no arquivo para o roteamento do trafego SIP. A descrição de oque o OpenSIPS deve fazer relacionado ao trafego SIP é feita atraves destas rotas.

Existem diferentes tipos de rota:

top routes

Rotas que são executadas diretamente pelo OpenSIPS quando alguns eventos acontecem (Como requisições recebidas, um SIP reply recebido ou uma falha de transação entre outras).

sub routes

Rotas que são executadas/utilizadas por outras rotas do script

Quais são as top routes, quando elas são chamadas , que tipo de mensagem SIP elas manipulam, que operações SIP são permitidas e outras estão documentadas em Tipos de Rotas.

As sub-routes possuem nomes e devem ser chamadas por outras rotas ( top ou sub ) por seus nomes. As sub-routes podem ter parametros (quando chamadas) ou retornarem um código numero (evite retornar 0 pois isso irá terminar o script todo), as sub-routes são similares a funções ou procedures de qualquer linguagem de programação.

Veja em Funções do Core a descrição da diretiva route para mais detalhes

Exemplo:

route { # top-route cahamada pela requisição que chegou
   if ( route(src_ip_is_gw) ) {
      xlog("request $rm comes from GW\n");
   }
}

onreply_route { # top-route chamada pelo reply da requisição
   if ( route(src_ip_is_gw) ) {
      xlog("reply $rc comes from GW\n");
   }
}

route[src_ip_is_gw] { # sub-route chamadas pelas top-route anteriores
   if ($si=='11.22.33.44' || $si=='11.22.33.45')
      return 1;
   return -1;
}


Voltar