
1. Textops Module

Andrei Pelinescu-Onciul

   FhG FOKUS

   Copyright © 2003 FhG FOKUS
   Revision History
   Revision $Revision: 1.7 $ $Date: 2005/09/02 11:23:45 $
     _________________________________________________________________

   Table of Contents

   1.1. Overview
   1.2. Functions

1.1. Overview

   This is mostly an example module. It implements text based operation
   (search, replace, append a.s.o).

1.1.1. Known Limitations

   search ignores folded lines. For example,
   search("(From|f):.*@foo.bar") doesn't match the following From header
   field:
From: medabeda
 <sip:medameda@foo.bar>;tag=1234

1.2. Functions

   Revision History
   Revision $Revision: 1.7 $ $Date: 2005/09/02 11:23:45 $

1.2.1.  search(re)

   Searches for the re in the message.

   Meaning of the parameters is as follows:
     * re - Regular expression.

   Example 1. search usage
...
if ( search("[Ss][Ee][Rr]" ) { /*....*/ };
...

1.2.2.  search_append(re, txt)

   Searches for the first match of re and appends txt after it.

   Meaning of the parameters is as follows:
     * re - Regular expression.
     * txt - String to be appended.

   Example 2. search_append usage
...
search_append("[Ss]er", " blabla");
...

1.2.3.  replace(re, txt)

   Replaces the first occurrence of re with txt.

   Meaning of the parameters is as follows:
     * re - Regular expression.
     * txt - String.

   Example 3. replace usage
...
replace("ser", "Sip Express Router");
...

1.2.4.  subst('/re/repl/flags')

   Replaces re with repl (sed or perl like).

   Meaning of the parameters is as follows:
     * '/re/repl/flags' - sed like regular expression. flags can be a
       combination of i (case insensitive), g (global) or s (match
       newline don't treat it as end of line).

   Example 4. subst usage
...
# replace the uri in to: with the message uri (just an example)
if ( subst('/^To:(.*)sip:[^@]*@[a-zA-Z0-9.]+(.*)$/t:\1\u\2/ig') ) {};
...

1.2.5.  subst_uri('/re/repl/flags')

   Runs the re substitution on the message uri (like subst but works only
   on the uri)

   Meaning of the parameters is as follows:
     * '/re/repl/flags' - sed like regular expression. flags can be a
       combination of i (case insensitive), g (global) or s (match
       newline don't treat it as end of line).

   Example 5. subst usage
...
# adds 3463 prefix to numeric uris, and save the original uri (\0 match)
# as a parameter: orig_uri (just an example)
if (subst_uri('/^sip:([0-9]+)@(.*)$/sip:3463\1@\2;orig_uri=\0/i')){$
...

1.2.6.  subst_user('/re/repl/flags')

   Runs the re substitution on the message uri (like subst_uri but works
   only on the user portion of the uri)

   Meaning of the parameters is as follows:
     * '/re/repl/flags' - sed like regular expression. flags can be a
       combination of i (case insensitive), g (global) or s (match
       newline don't treat it as end of line).

   Example 6. subst usage
...
# adds 3463 prefix to uris ending with 3642 (just an example)
if (subst_user('/3642$/36423463/')){$
...

1.2.7.  append_to_reply(txt)

   Append txt to the reply.

   Meaning of the parameters is as follows:
     * txt - String.

   Example 7. append_to_reply usage
...
append_to_reply("Foo: bar\r\n");
...

1.2.8.  append_hf(hf)

   Appends txt after the last header field.

   Meaning of the parameters is as follows:
     * hf - Header field to be appended.

   Example 8. append_hf usage
...
append_hf("P-hint: VOICEMAIL\r\n");
...

1.2.9.  append_urihf(prefix, suffix)

   Append header field name with original Request-URI in middle.

   Meaning of the parameters is as follows:
     * prefix - string (usually at least header field name).
     * suffix - string (usually at least line terminator).

   Example 9. append_urihf usage
...
append_urihf("CC-Diversion: ", "\r\n");
...

1.2.10.  is_present_hf(hf_name)

   Return true if a header field is present in message.

Note

   Takes header field names "as is" and doesn't distinguish compact
   names.

   Meaning of the parameters is as follows:
     * hf_name - Header field name.

   Example 10. is_present_hf usage
...
if (is_present_hf("From")) log(1, "From HF Present");
...

1.2.11.  append_time()

   Append "Date" header containing the current date and time to the reply
   generated by SER.

   Example 11. is_present_hf usage
...
if (method == "REGISTER" ) {
    # Many user agents can use the Date header field
    # in 200 OK replies to REGISTER to synchronize
    # internal clock
    apppend_date();
};
...
