Table of Contents
search(re)
search_body(re)
search_append(re, txt)
search_append_body(re, txt)
replace(re, txt)
replace_body(re, txt)
replace_all(re, txt)
replace_body_all(re, txt)
replace_body_atonce(re, txt)
subst('/re/repl/flags')
subst_uri('/re/repl/flags')
subst_user('/re/repl/flags')
subst_body('/re/repl/flags')
List of Tables
List of Examples
search
usagesearch_body
usagesearch_append
usagesearch_append_body
usagereplace
usagereplace_body
usagereplace_all
usagereplace_body_all
usagereplace_body_atonce
usagesubst
usagesubst_uri
usagesubst
usagesubst_body
usageThe module implements text based operations over the SIP message processed by OpenSIPS. SIP is a text based protocol and the module provides a large set of very useful functions to manipulate the message at text level, e.g., regular expression search and replace, Perl-like substitutions, etc.
Note: all SIP-aware functions like insert_hf, append_hf or codec operations have been moved to the sipmsgops module.
The following modules must be loaded before this module:
No dependencies on other OpenSIPS modules.
Searches for the re in the message.
Meaning of the parameters is as follows:
re - Regular expression.
This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE, FAILURE_ROUTE, BRANCH_ROUTE.
Searches for the re in the body of the message.
Meaning of the parameters is as follows:
re - Regular expression.
This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE, FAILURE_ROUTE, BRANCH_ROUTE.
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.
This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE, FAILURE_ROUTE, BRANCH_ROUTE.
Searches for the first match of re in the body of the message and appends txt after it.
Meaning of the parameters is as follows:
re - Regular expression.
txt - String to be appended.
This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE, FAILURE_ROUTE, BRANCH_ROUTE.
Replaces the first occurrence of re with txt.
Meaning of the parameters is as follows:
re - Regular expression.
txt - String.
This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE, FAILURE_ROUTE, BRANCH_ROUTE.
Replaces the first occurrence of re in the body of the message with txt.
Meaning of the parameters is as follows:
re - Regular expression.
txt - String.
This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE, FAILURE_ROUTE, BRANCH_ROUTE.
Replaces all occurrence of re with txt.
Meaning of the parameters is as follows:
re - Regular expression.
txt - String.
This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE, FAILURE_ROUTE, BRANCH_ROUTE.
Replaces all occurrence of re in the body of the message with txt. Matching is done on a per-line basis.
Meaning of the parameters is as follows:
re - Regular expression.
txt - String.
This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE, FAILURE_ROUTE, BRANCH_ROUTE.
Replaces all occurrence of re in the body of the message with txt. Matching is done over the whole body.
Meaning of the parameters is as follows:
re - Regular expression.
txt - String.
This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE, FAILURE_ROUTE, BRANCH_ROUTE.
Example 1.9. replace_body_atonce
usage
... # strip the whole body from the message: if(has_body() && replace_body_atonce("^.+$", "")) remove_hf("Content-Type"); ...
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).
're' - is regular expression
'repl' - is replacement string - may contain pseudo-variables
'flags' - substitution flags (i - ignore case, g - global)
This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE, FAILURE_ROUTE, BRANCH_ROUTE.
Example 1.10. 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') ) {}; # replace the uri in to: with the value of avp sip_address (just an example) if ( subst('/^To:(.*)sip:[^@]*@[a-zA-Z0-9.]+(.*)$/t:\1$avp(sip_address)\2/ig') ) {}; ...
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).
're' - is regular expression
'repl' - is replacement string - may contain pseudo-variables
'flags' - substitution flags (i - ignore case, g - global)
This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE, FAILURE_ROUTE, BRANCH_ROUTE.
Example 1.11. subst_uri
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')){$ # adds the avp 'uri_prefix' as 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:$avp(uri_prefix)\1@\2;orig_uri=\0/i')){$ ...
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).
're' - is regular expression
'repl' - is replacement string - may contain pseudo-variables
'flags' - substitution flags (i - ignore case, g - global)
This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE, FAILURE_ROUTE, BRANCH_ROUTE.
Example 1.12. subst
usage
... # adds 3463 prefix to uris ending with 3642 (just an example) if (subst_user('/3642$/36423463/')){$ ... # adds avp 'user_prefix' as prefix to username in r-uri ending with 3642 if (subst_user('/(.*)3642$/$avp(user_prefix)\13642/')){$ ...
Replaces re with repl (sed or perl like) in the body of the message.
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).
're' - is regular expression
'repl' - is replacement string - may contain pseudo-variables
'flags' - substitution flags (i - ignore case, g - global)
This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE, FAILURE_ROUTE, BRANCH_ROUTE.
Table 2.1. Top contributors by DevScore(1), authored commits(2) and lines added/removed(3)
Name | DevScore | Commits | Lines ++ | Lines -- | |
---|---|---|---|---|---|
1. | Bogdan-Andrei Iancu (@bogdan-iancu) | 56 | 43 | 440 | 476 |
2. | Daniel-Constantin Mierla (@miconda) | 40 | 28 | 938 | 201 |
3. | Razvan Crainea (@razvancrainea) | 39 | 3 | 13 | 1951 |
4. | Andrei Dragus | 32 | 15 | 1540 | 196 |
5. | Andrei Pelinescu-Onciul | 28 | 21 | 446 | 134 |
6. | Jiri Kuthan (@jiriatipteldotorg) | 18 | 14 | 293 | 45 |
7. | Jan Janak (@janakj) | 11 | 6 | 496 | 27 |
8. | Liviu Chircu (@liviuchircu) | 8 | 6 | 14 | 41 |
9. | Juha Heinanen (@juha-h) | 8 | 5 | 210 | 8 |
10. | Elena-Ramona Modroiu | 6 | 3 | 197 | 6 |
All remaining contributors: Henning Westerholt (@henningw), Ovidiu Sas (@ovidiusas), Anca Vamanu, Marc Haisenko, Andreas Heise, Klaus Darilion, Vlad Paiu (@vladpaiu), Andreas Granig, Hugues Mitonneau, Konstantin Bokarius, Saúl Ibarra Corretgé (@saghul), Edson Gellert Schubert, Maksym Sobolyev (@sobomax), Christophe Sollet (@csollet).
(1) DevScore = author_commits + author_lines_added / (project_lines_added / project_commits) + author_lines_deleted / (project_lines_deleted / project_commits)
(2) including any documentation-related commits, excluding merge commits. Regarding imported patches/code, we do our best to count the work on behalf of the proper owner, as per the "fix_authors" and "mod_renames" arrays in opensips/doc/build-contrib.sh. If you identify any patches/commits which do not get properly attributed to you, please submit a pull request which extends "fix_authors" and/or "mod_renames".
(3) ignoring whitespace edits, renamed files and auto-generated files
Table 2.2. Most recently active contributors(1) to this module
Name | Commit Activity | |
---|---|---|
1. | Bogdan-Andrei Iancu (@bogdan-iancu) | Feb 2002 - Jun 2018 |
2. | Liviu Chircu (@liviuchircu) | Oct 2013 - Jun 2018 |
3. | Razvan Crainea (@razvancrainea) | Feb 2012 - Aug 2015 |
4. | Anca Vamanu | Oct 2008 - May 2011 |
5. | Ovidiu Sas (@ovidiusas) | Dec 2010 - Jan 2011 |
6. | Christophe Sollet (@csollet) | Dec 2010 - Dec 2010 |
7. | Vlad Paiu (@vladpaiu) | Oct 2010 - Oct 2010 |
8. | Andrei Dragus | Jul 2009 - Aug 2010 |
9. | Saúl Ibarra Corretgé (@saghul) | Apr 2010 - Apr 2010 |
10. | Hugues Mitonneau | Feb 2009 - Feb 2009 |
All remaining contributors: Andreas Granig, Daniel-Constantin Mierla (@miconda), Konstantin Bokarius, Edson Gellert Schubert, Henning Westerholt (@henningw), Juha Heinanen (@juha-h), Andreas Heise, Klaus Darilion, Marc Haisenko, Elena-Ramona Modroiu, Andrei Pelinescu-Onciul, Jan Janak (@janakj), Maksym Sobolyev (@sobomax), Jiri Kuthan (@jiriatipteldotorg).
(1) including any documentation-related commits, excluding merge commits
Last edited by: Bogdan-Andrei Iancu (@bogdan-iancu), Liviu Chircu (@liviuchircu), Razvan Crainea (@razvancrainea), Ovidiu Sas (@ovidiusas), Andrei Dragus, Anca Vamanu, Andreas Granig, Daniel-Constantin Mierla (@miconda), Konstantin Bokarius, Edson Gellert Schubert, Juha Heinanen (@juha-h), Klaus Darilion, Marc Haisenko, Elena-Ramona Modroiu, Jan Janak (@janakj), Maksym Sobolyev (@sobomax), Jiri Kuthan (@jiriatipteldotorg), Andrei Pelinescu-Onciul.
doc copyrights:
Copyright © 2003 FhG FOKUS