📄 textops_user.sgml
字号:
<!-- Module User's Guide --><chapter> <chapterinfo> <revhistory> <revision> <revnumber>$Revision: 1.14 $</revnumber> <date>$Date: 2006/05/03 18:46:33 $</date> </revision> </revhistory> </chapterinfo> <title>User's Guide</title> <section> <title>Overview</title> <para> This is mostly an example module. It implements text based operation (search, replace, append a.s.o). </para> <section> <title>Known Limitations</title> <para> search ignores folded lines. For example, search(<quote>(From|f):.*@foo.bar</quote>) doesn't match the following From header field: </para> <programlisting format="linespecific">From: medabeda <sip:medameda@foo.bar>;tag=1234</programlisting> </section> </section> <section> <title>Dependencies</title> <section> <title>&ser; Modules</title> <para> The following modules must be loaded before this module: <itemizedlist> <listitem> <para> <emphasis>No dependencies on other &ser; modules</emphasis>. </para> </listitem> </itemizedlist> </para> </section> <section> <title>External Libraries or Applications</title> <para> The following libraries or applications must be installed before running &ser; with this module loaded: <itemizedlist> <listitem> <para> <emphasis>None</emphasis>. </para> </listitem> </itemizedlist> </para> </section> </section> <section> <title>Exported Functions</title> <section> <title> <function moreinfo="none">search(re)</function> </title> <para> Searches for the re in the message. </para> <para>Meaning of the parameters is as follows:</para> <itemizedlist> <listitem> <para><emphasis>re</emphasis> - Regular expression. </para> </listitem> </itemizedlist> <para> This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE, FAILURE_ROUTE, BRANCH_ROUTE. </para> <example> <title><function>search</function> usage</title> <programlisting format="linespecific">...if ( search("[Ss][Ii][Pp]" ) { /*....*/ };...</programlisting> </example> </section> <section> <title> <function moreinfo="none">search_body(re)</function> </title> <para> Searches for the re in the body of the message. </para> <para>Meaning of the parameters is as follows:</para> <itemizedlist> <listitem> <para><emphasis>re</emphasis> - Regular expression. </para> </listitem> </itemizedlist> <para> This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE, FAILURE_ROUTE, BRANCH_ROUTE. </para> <example> <title><function>search_body</function> usage</title> <programlisting format="linespecific">...if ( search_body("[Ss][Ii][Pp]" ) { /*....*/ };...</programlisting> </example> </section> <section> <title> <function moreinfo="none">search_append(re, txt)</function> </title> <para> Searches for the first match of re and appends txt after it. </para> <para>Meaning of the parameters is as follows:</para> <itemizedlist> <listitem> <para><emphasis>re</emphasis> - Regular expression. </para> </listitem> <listitem> <para><emphasis>txt</emphasis> - String to be appended. </para> </listitem> </itemizedlist> <para> This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE, FAILURE_ROUTE, BRANCH_ROUTE. </para> <example> <title><function>search_append</function> usage</title> <programlisting format="linespecific">...search_append("[Oo]pen[Ss]er", " SIP Proxy");...</programlisting> </example> </section> <section> <title> <function moreinfo="none">search_append_body(re, txt)</function> </title> <para> Searches for the first match of re in the body of the message and appends txt after it. </para> <para>Meaning of the parameters is as follows:</para> <itemizedlist> <listitem> <para><emphasis>re</emphasis> - Regular expression. </para> </listitem> <listitem> <para><emphasis>txt</emphasis> - String to be appended. </para> </listitem> </itemizedlist> <para> This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE, FAILURE_ROUTE, BRANCH_ROUTE. </para> <example> <title><function>search_append_body</function> usage</title> <programlisting format="linespecific">...search_append_body("[Oo]pen[Ss]er", " SIP Proxy");...</programlisting> </example> </section> <section> <title> <function moreinfo="none">replace(re, txt)</function> </title> <para> Replaces the first occurrence of re with txt. </para> <para>Meaning of the parameters is as follows:</para> <itemizedlist> <listitem> <para><emphasis>re</emphasis> - Regular expression. </para> </listitem> <listitem> <para><emphasis>txt</emphasis> - String. </para> </listitem> </itemizedlist> <para> This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE, FAILURE_ROUTE, BRANCH_ROUTE. </para> <example> <title><function>replace</function> usage</title> <programlisting format="linespecific">...replace("openser", "OpenSER SIP Proxy");...</programlisting> </example> </section> <section> <title> <function moreinfo="none">replace_body(re, txt)</function> </title> <para> Replaces the first occurrence of re in the body of the message with txt. </para> <para>Meaning of the parameters is as follows:</para> <itemizedlist> <listitem> <para><emphasis>re</emphasis> - Regular expression. </para> </listitem> <listitem> <para><emphasis>txt</emphasis> - String. </para> </listitem> </itemizedlist> <para> This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE, FAILURE_ROUTE, BRANCH_ROUTE. </para> <example> <title><function>replace_body</function> usage</title> <programlisting format="linespecific">...replace_body("openser", "OpenSER SIP Proxy");...</programlisting> </example> </section> <section> <title> <function moreinfo="none">replace_all(re, txt)</function> </title> <para> Replaces all occurrence of re with txt. </para> <para>Meaning of the parameters is as follows:</para> <itemizedlist> <listitem> <para><emphasis>re</emphasis> - Regular expression. </para> </listitem> <listitem> <para><emphasis>txt</emphasis> - String. </para> </listitem> </itemizedlist> <para> This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE, FAILURE_ROUTE, BRANCH_ROUTE. </para> <example> <title><function>replace_all</function> usage</title> <programlisting format="linespecific">...replace_all("openser", "OpenSER SIP Proxy");...</programlisting> </example> </section> <section> <title> <function moreinfo="none">replace_body_all(re, txt)</function> </title> <para> Replaces all occurrence of re in the body of the message with txt. </para> <para>Meaning of the parameters is as follows:</para> <itemizedlist> <listitem> <para><emphasis>re</emphasis> - Regular expression. </para> </listitem> <listitem> <para><emphasis>txt</emphasis> - String. </para> </listitem> </itemizedlist> <para> This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE, FAILURE_ROUTE, BRANCH_ROUTE. </para> <example> <title><function>replace_body_all</function> usage</title> <programlisting format="linespecific">...replace_body_all("openser", "OpenSER SIP Proxy");...</programlisting> </example> </section> <section> <title> <function moreinfo="none">subst('/re/repl/flags')</function> </title> <para> Replaces re with repl (sed or perl like). </para> <para>Meaning of the parameters is as follows:</para> <itemizedlist> <listitem> <para><emphasis>'/re/repl/flags'</emphasis> - 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). </para> <para> 're' - is regular expresion </para> <para> 'repl' - is replacement string - may contain pseudo-varibales </para> <para> 'flags' - substitution flags (i - ignore case, g - global) </para> </listitem> </itemizedlist> <para> This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE, FAILURE_ROUTE, BRANCH_ROUTE. </para> <example> <title><function>subst</function> usage</title> <programlisting format="linespecific">...# 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') ) {};...</programlisting> </example> </section> <section> <title> <function moreinfo="none">subst_uri('/re/repl/flags')</function> </title> <para> Runs the re substitution on the message uri (like subst but works only on the uri) </para> <para>Meaning of the parameters is as follows:</para> <itemizedlist> <listitem> <para><emphasis>'/re/repl/flags'</emphasis> - 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). </para> <para> 're' - is regular expresion </para> <para> 'repl' - is replacement string - may contain pseudo-varibales </para> <para> 'flags' - substitution flags (i - ignore case, g - global) </para> </listitem> </itemizedlist> <para> This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE, FAILURE_ROUTE, BRANCH_ROUTE. </para> <example> <title><function>subst_uri</function> usage</title> <programlisting format="linespecific">...# 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')){$...</programlisting> </example> </section> <section> <title> <function moreinfo="none">subst_user('/re/repl/flags')</function> </title> <para> Runs the re substitution on the message uri (like subst_uri but works only on the user portion of the uri) </para> <para>Meaning of the parameters is as follows:</para> <itemizedlist> <listitem> <para><emphasis>'/re/repl/flags'</emphasis> - 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). </para> <para> 're' - is regular expresion </para> <para> 'repl' - is replacement string - may contain pseudo-varibales </para> <para> 'flags' - substitution flags (i - ignore case, g - global) </para> </listitem> </itemizedlist> <para> This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE, FAILURE_ROUTE, BRANCH_ROUTE. </para> <example> <title><function>subst</function> usage</title> <programlisting format="linespecific">...# 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 3642if (subst_user('/(.*)3642$/$avp(user_prefix)\13642/')){$...</programlisting> </example> </section> <section> <title> <function moreinfo="none">subst_body('/re/repl/flags')</function> </title> <para> Replaces re with repl (sed or perl like) in the body of the message. </para> <para>Meaning of the parameters is as follows:</para> <itemizedlist> <listitem> <para><emphasis>'/re/repl/flags'</emphasis> - sed like regular expression. flags can be a combination of i (case insensitive),
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -