Ключевые слова, экспортируемые ядром OpenSER.


Ключевые слова, определяющие некоторые параметры SIP сообщений, которые, главным образом, можно использовать в операциях с условиями (‘if’ выражениях).

ОБРАТИТЕ ВНИМАНИЕ: описываются переменные OpenSER версии v1.2.0, для других версий они могут отличаться.

af

Тип протокола принятого SIP сообщения. Принимает значение - INET, если сообщение получено по протоколу IPv4 или INET6, если оно получено по протоколу IPv6.

Пример использования:
if(af==INET6) {
      log("Message received over IPv6 link\n");
};


dst_ip

IP адрес локального интерфейса, через который было получено SIP сообщение. Если прокси сервер работает на машине с несколькими сетевыми интерфейсами, это значение дает возможность определить, через какой интерфейс был принят пакет с данными.

Пример использования:
if(dst_ip==127.0.0.1) {
    log("message received on loopback interface\n");
};


dst_port

Номер локального порта, через который было получено SIP сообщение. Если OpenSER слушает на нескольких портах, то это значение может помочь определить, через какой из них было получено SIP сообщение.

Пример использования:
if(dst_port==5061)
{
     log("message was received on port 5061\n");
};


from_uri

Эта переменная указывает на URI заголовочного поля ‘From’. Она может использоваться для проверки значения URI в поле ‘From’.

Пример использования:
if(is_method("INVITE") && from_uri=~".*@kamailio.net")
{
      log("the caller is from kamailio.net\n");
};


method

Эта переменная ссылается на название метода SIP сообщения.

Пример использования:
if(method=="REGISTER")
{
     log("this SIP request is a REGISTER message\n");
};


msg:len

Эта переменная ссылается на размер сообщения. Может использоваться в ‘if’-выражении для проверки размера сообщения.

Пример использования:
if(msg:len>2048)
{
      sl_send_reply("413", "message too large");
      exit;
};


$retcode

Содержит значение кода возврата последней выполненной функции (по аналогии с $? в bash – если хотите, то можете также использовать $? в конфигурации OpenSER, поддерживаются обе конструкции: ‘$retcode’ и ‘$?’). Если проверяется значение после выполнения блока маршрутизации, содержит значение, которое вернул этот блок маршрутизации.

Пример использования:
route {
     route(1);
     if($retcode==1)
     {
         log("The request is an INVITE\n");
     };
}

 
route[1] {
     if(is_method("INVITE"))
         return(1);
     return(2);
}


proto

Переменная может использоваться для проверки транспортного протокола SIP сообщения.

Пример использования:
if(proto==UDP)
{
      log("SIP message received over UDP\n");
};


status

Если используется в блоке onreply_route, эта переменная содержит код возврата ответа на SIP запрос. Если используется в стандартном блоке маршрутизации, то содержит значение кода возврата последнего ответного сообщения, которое было отправлено для текущего запроса.

Пример использования:
if(status=="200")
{
      log("this is a 200 OK reply\n");
};


src_ip

Содержит IP адрес отправителя SIP сообщения.

Пример использования:
if(src_ip==127.0.0.1)
{
      log("the message was sent from localhost!\n");
};


src_port

Содержит номер порта, с которого было отправлено SIP сообщение (с какого порта оно было отправлено предыдущим узлом).

Пример использования:
if(src_port==5061)
{
      log("message sent from port 5061\n");
};


to_uri

Это значение можно использовать для проверки URI из заголовочного поля To.

Пример использования:
if(to_uri=~"sip:.+@kamailio.net")
{
    log("this is a request for kamailio.net users\n");
};


uri

Это значение можно использовать для проверки запрашиваемого URI.

Пример использования:
if(uri=~"sip:.+@kamailio.net")
{
      log("this is a request for kamailio.net users\n");
};



Ссылки по теме

  • OpenSER Документация (eng)
  • Константы OpenSER - Константы, определяемые ядром OpenSER.
  • Параметры OpenSER - Параметры для ядра сервера OpenSER.
  • Функции OpenSER - Функции ядра сервера OpenSER.
  • Блоки маршрутизации OpenSER - Блоки маршрутизации сервера OpenSER.
  • Конструкции OpenSER - Конструкции, используемые для конфигурации сервера OpenSER.
  • Операторы OpenSER - Операторы, которые используются в конфигурации сервера OpenSER.
  • SIP Express Router