1. Textopsx Module

Andrei Pelinescu-Onciul

FhG FOKUS

Daniel-Constantin Mierla

asipto.com

1.1. Overview
1.2. Functions
1.2.1. msg_apply_changes()
1.2.2. change_reply_status(code, reason)
1.2.3. remove_body()
1.2.4. keep_hf(regexp)
1.2.5. fnmatch(value, expr [, flags])

1.1. Overview

This is a module implementing funtions for text operations over SIP messages in configuration files. It comes to add new features similar to textops module (textops eXtentions).

1.2. Functions

1.2.1.  msg_apply_changes()

Use this function to apply changes performed on SIP request content. Be careful when using this function; due to special handling of changes done to SIP message buffer so far, using this function might change the behaviour of your config. Do test your config properly!

This function can be used from REQUEST_ROUTE.

Example 1. msg_apply_changes() usage

...
append_hf("My-Header: yes\r\n");
if(msg_apply_changes())
{
    # msg buffer has a new content
    if(is_present_hf("My-Header"))
    {
        # will get here always
    }
}
...

1.2.2.  change_reply_status(code, reason)

Intercept a SIP reply (in an onreply_route) and change its status code and reason phrase prior to propogating it.

Meaning of the parameters is as follows:

  • code - Status code.

  • reason - Reason phrase.

This function can be used from ONREPLY_ROUTE.

Example 2. change_reply_status usage

...
onreply_route {
    if (@status == "603") {
        change_reply_status(404, "Not Found");
        exit;
    }
}
...

1.2.3.  remove_body()

Use this function to remove body of SIP requests or replies.

This function can be used from ANY_ROUTE.

Example 3. remove_body() usage

...
remove_body();
...

1.2.4.  keep_hf(regexp)

Remove headers that don't match the regular expression regexp. Several header are ignored always (thus not removed): Via, From, To, Call-ID, CSeq, Content-Lenght, Content-Type, Max-Forwards, Contact, Route, Record-Route -- these can be removed one by one with remove_hf().

This function can be used from ANY_ROUTE.

Example 4. keep_hf() usage

...
keep_hf("User-Agent");
...

1.2.5.  fnmatch(value, expr [, flags])

Match the value against the expr using the shell-style pattern for file name matching (see man page for C function fnmatch()). It is known to be faster and uses less-memory than regexp.

Parameters flags is optional and can be 'i' to do case insensitive matching.

This function can be used from ANY_ROUTE.

Example 5. fnmatch() usage

...
if(fnmatch("$rU", "123*"))
{
    ...
}
...