Browse code

-update of module's documentation

git-svn-id: https://openser.svn.sourceforge.net/svnroot/openser/trunk@322 689a6050-402a-0410-94f2-e92a70836424

Bogdan-Andrei Iancu authored on 27/10/2005 17:57:26
Showing 30 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,190 @@
1
+
2
+Flatstore Module
3
+
4
+Jan Janak
5
+
6
+   FhG FOKUS
7
+
8
+Edited by
9
+
10
+Jan Janak
11
+
12
+   Copyright � 2004, 2005 FhG FOKUS
13
+     _________________________________________________________
14
+
15
+   Table of Contents
16
+   1. User's Guide
17
+
18
+        1.1. Overview
19
+
20
+              1.1.1. Rotating Log Files
21
+
22
+        1.2. Dependencies
23
+
24
+              1.2.1. OpenSER Modules
25
+              1.2.2. External Libraries or Applications
26
+
27
+        1.3. Exported Parameters
28
+
29
+              1.3.1. flush (integer)
30
+
31
+        1.4. Exported Functions
32
+
33
+   2. Developer's Guide
34
+   3. Frequently Asked Questions
35
+
36
+   List of Examples
37
+   1-1. Set "flush" parameter
38
+     _________________________________________________________
39
+
40
+Chapter 1. User's Guide
41
+
42
+1.1. Overview
43
+
44
+   Flatstore is one of so-called OpenSER database modules. It
45
+   does not export any functions executable from the
46
+   configuration scripts, but it exports a subset of functions
47
+   from the database API and thus other module can use it instead
48
+   of, for example, mysql module.
49
+
50
+   The module does not export all functions of the database API,
51
+   it supports only one function, insert. The module is limited
52
+   but very fast. It is especially suitable for storing
53
+   accounting information on sites with extremely high traffic.
54
+   If MySQL is too slow or if you get a huge amount of accounting
55
+   data then you can consider using this module. Note that the
56
+   acc module is the only module that was tested with flastore.
57
+
58
+   The format of the files produced by this module is plain text.
59
+   Each line consists of several fields, fields are separated by
60
+   | character. New information is always appended at the end of
61
+   the file, searching, deleting and updating of existing data is
62
+   not supported by the module.
63
+
64
+   The acc module can be configured to use flatstore module as
65
+   database backend using the db_url_parameter:
66
+modparam("acc", "db_url", "flatstore:/var/log/acc")
67
+
68
+   This configuration options tells acc module that it should use
69
+   the flatstore module and the flatstore module should create
70
+   all files in /var/log/acc directory. The directory must exist
71
+   and OpenSER processes must have permissions to create files in
72
+   that directory.
73
+
74
+   Name of files in that directory will follow the following
75
+   pattern:
76
+<table_name>_<process_name>.log
77
+
78
+   For example, entries writen by OpenSER process 8 into acc
79
+   table would be written in file acc_8.log. For each table there
80
+   will be several files, one file for every OpenSER process that
81
+   wrote some data into that table. The main reason why there are
82
+   several files for each table is that it is much faster to have
83
+   one file per process, because it does not require any locking
84
+   and thus OpenSER processes will not block each other. To get
85
+   the complete data for a table you can simply concatenate the
86
+   contents of files with the same table name but different
87
+   process id.
88
+     _________________________________________________________
89
+
90
+1.1.1. Rotating Log Files
91
+
92
+   There is a new OpenSER FIFO interface command called
93
+   flat_rotate. When OpenSER receives the command then it will
94
+   close and reopen all files used by flatstore module. The
95
+   rotation itself has to be done by another application (such as
96
+   logrotate). Follow these steps to rotate files generated by
97
+   flatstore module:
98
+
99
+     * Rename the files that you want to rotate:
100
+cd /var/log/acc
101
+mv acc_1.log acc_1.log.20050605
102
+mv acc_2.log acc_2.log.20050605
103
+mv acc_4.log acc_3.log.20050605
104
+...
105
+                               Note that at this point OpenSER
106
+       will still be writing all data into the renamed files.
107
+     * Send OpenSER the fifo command to close and reopen the
108
+       renamed files:
109
+openserctl fifo flat_rotate
110
+                               This will force OpenSER to close
111
+       the renamed files and open new ones with original names,
112
+       such as acc_1.log. New files will be open at the point
113
+       when OpenSER has some data to write. It is normal that the
114
+       files will be not created immediately if there is no
115
+       traffic on the proxy server.
116
+     * Move the renamed files somewhere else and process them.
117
+     _________________________________________________________
118
+
119
+1.2. Dependencies
120
+
121
+1.2.1. OpenSER Modules
122
+
123
+   The following modules must be loaded before this module:
124
+
125
+     * No dependencies on other OpenSER modules.
126
+     _________________________________________________________
127
+
128
+1.2.2. External Libraries or Applications
129
+
130
+   The following libraries or applications must be installed
131
+   before running OpenSER with this module loaded:
132
+
133
+     * None.
134
+     _________________________________________________________
135
+
136
+1.3. Exported Parameters
137
+
138
+1.3.1. flush (integer)
139
+
140
+   Enable or disable flushing after each write.
141
+
142
+   Default value is 1. 
143
+
144
+   Example 1-1. Set "flush" parameter
145
+...
146
+modparam("flatstore", "flush", 0)
147
+...
148
+     _________________________________________________________
149
+
150
+1.4. Exported Functions
151
+
152
+   There are no function exported to routing script.
153
+     _________________________________________________________
154
+
155
+Chapter 2. Developer's Guide
156
+
157
+   The module implements the DB API.
158
+     _________________________________________________________
159
+
160
+Chapter 3. Frequently Asked Questions
161
+
162
+   3.1. Where can I find more about OpenSER?
163
+   3.2. Where can I post a question about this module?
164
+   3.3. How can I report a bug?
165
+
166
+   3.1. Where can I find more about OpenSER?
167
+
168
+   Take a look at http://openser.org/.
169
+
170
+   3.2. Where can I post a question about this module?
171
+
172
+   First at all check if your question was already answered on
173
+   one of our mailing lists:
174
+
175
+     * User Mailing List -
176
+       http://openser.org/cgi-bin/mailman/listinfo/users
177
+     * Developer Mailing List -
178
+       http://openser.org/cgi-bin/mailman/listinfo/devel
179
+
180
+   E-mails regarding any stable OpenSER release should be sent to
181
+   <users@openser.org> and e-mails regarding development versions
182
+   should be sent to <devel@openser.org>.
183
+
184
+   If you want to keep the mail private, send it to
185
+   <team@openser.org>.
186
+
187
+   3.3. How can I report a bug?
188
+
189
+   Please follow the guidelines provided at:
190
+   http://openser.org/bugs.
... ...
@@ -63,7 +63,7 @@ Chapter 1. User's Guide
63 63
 
64 64
    The following modules must be loaded before this module:
65 65
 
66
-     * A database module.
66
+     * A database module, like mysql, postgres or dbtext
67 67
      _________________________________________________________
68 68
 
69 69
 1.2.2. External Libraries or Applications
... ...
@@ -80,11 +80,12 @@ Chapter 1. User's Guide
80 80
 
81 81
    URL of the database table to be used.
82 82
 
83
-   Default value is "mysql://serro:47serro11@localhost/ser". 
83
+   Default value is
84
+   "mysql://openserro:openserro@localhost/openser". 
84 85
 
85 86
    Example 1-1. Set db_url parameter
86 87
 ...
87
-modparam("group", "db_url", "mysql://username:password@dbhost/ser")
88
+modparam("group", "db_url", "mysql://username:password@dbhost/openser")
88 89
 ...
89 90
      _________________________________________________________
90 91
 
... ...
@@ -174,7 +175,7 @@ modparam("group", "use_domain", 1)
174 175
    Example 1-7. is_user_in usage
175 176
 ...
176 177
 if (is_user_in("Request-URI", "ld")) {
177
-    ...
178
+        ...
178 179
 };
179 180
 ...
180 181
      _________________________________________________________
... ...
@@ -1,233 +1,237 @@
1 1
 <!-- Module User's Guide -->
2 2
 
3 3
 <chapter>
4
-    <chapterinfo>
4
+	<chapterinfo>
5 5
 	<revhistory>
6
-	    <revision>
6
+		<revision>
7 7
 		<revnumber>$Revision$</revnumber>
8 8
 		<date>$Date$</date>
9
-	    </revision>
9
+		</revision>
10 10
 	</revhistory>
11
-    </chapterinfo>
12
-    <title>User's Guide</title>
13
-    
14
-    <section>
11
+	</chapterinfo>
12
+	<title>User's Guide</title>
13
+	
14
+	<section>
15 15
 	<title>Overview</title>
16 16
 	<para>
17
-	    This module export functions necessary for group membership checking. There is a
18
-	    database table that contains list of users and groups they belong to. The table is used
19
-	    by functions of this module.
17
+		This module export functions necessary for group membership checking. 
18
+		There is a database table that contains list of users and groups they
19
+		belong to. The table is used by functions of this module.
20 20
 	</para>
21
-    </section>
22
-    <section>
21
+	</section>
22
+
23
+	<section>
23 24
 	<title>Dependencies</title>
24 25
 	<section>
25
-	    <title>&ser; Modules</title>
26
-	    <para>
26
+		<title>&ser; Modules</title>
27
+		<para>
27 28
 		The following modules must be loaded before this module:
28
-	    	<itemizedlist>
29
-		    <listitem>
29
+			<itemizedlist>
30
+			<listitem>
30 31
 			<para>
31
-			    A database module.
32
+				A database module, like mysql, postgres or dbtext
32 33
 			</para>
33
-		    </listitem>
34
-	    	</itemizedlist>
35
-	    </para>
34
+			</listitem>
35
+			</itemizedlist>
36
+		</para>
36 37
 	</section>
37 38
 	<section>
38
-	    <title>External Libraries or Applications</title>
39
-	    <para>
39
+		<title>External Libraries or Applications</title>
40
+		<para>
40 41
 		The following libraries or applications must be installed before running
41 42
 		&ser; with this module loaded:
42
-	    	<itemizedlist>
43
-		    <listitem>
43
+			<itemizedlist>
44
+			<listitem>
44 45
 			<para>
45
-			    <emphasis>None</emphasis>.
46
+				<emphasis>None</emphasis>.
46 47
 			</para>
47
-		    </listitem>
48
-	    	</itemizedlist>
49
-	    </para>
48
+			</listitem>
49
+			</itemizedlist>
50
+		</para>
50 51
 	</section>
51
-    </section>
52
-    <section>
52
+	</section>
53
+
54
+	<section>
53 55
 	<title>Exported Parameters</title>
54 56
 	<section>
55
-	    <title><varname>db_url</varname> (string)</title>
56
-	    <para>
57
+		<title><varname>db_url</varname> (string)</title>
58
+		<para>
57 59
 		&url; of the database table to be used.
58
-	    </para>
59
-	    <para>
60
+		</para>
61
+		<para>
60 62
 		<emphasis>
61
-		    Default value is <quote>mysql://serro:47serro11@localhost/ser</quote>.
63
+			Default value is 
64
+			<quote>mysql://openserro:openserro@localhost/openser</quote>.
62 65
 		</emphasis>
63
-	    </para>
64
-	    <example>
66
+		</para>
67
+		<example>
65 68
 		<title>Set <varname>db_url</varname> parameter</title>
66 69
 		<programlisting format="linespecific">
67 70
 ...
68
-modparam("group", "db_url", "mysql://username:password@dbhost/ser")
71
+modparam("group", "db_url", "mysql://username:password@dbhost/openser")
69 72
 ...
70 73
 </programlisting>
71
-	    </example>
74
+		</example>
72 75
 	</section>
73 76
 
74 77
 	<section>
75
-	    <title><varname>table</varname> (string)</title>
76
-	    <para>
78
+		<title><varname>table</varname> (string)</title>
79
+		<para>
77 80
 		Name of the table holding groups and their members.
78
-	    </para>
79
-	    <para>
81
+		</para>
82
+		<para>
80 83
 		<emphasis>
81
-		    Default value is <quote>grp</quote>.
84
+			Default value is <quote>grp</quote>.
82 85
 		</emphasis>
83
-	    </para>
84
-	    <example>
86
+		</para>
87
+		<example>
85 88
 		<title>Set <varname>table</varname> parameter</title>
86 89
 		<programlisting format="linespecific">
87 90
 ...
88 91
 modparam("group", "table", "grp_table")
89 92
 ...
90 93
 </programlisting>
91
-	    </example>
94
+		</example>
92 95
 	</section>
93 96
 
94 97
 	<section>
95
-	    <title><varname>user_column</varname> (string)</title>
96
-	    <para>
98
+		<title><varname>user_column</varname> (string)</title>
99
+		<para>
97 100
 		Name of the column holding usernames.
98
-	    </para>
99
-	    <para>
101
+		</para>
102
+		<para>
100 103
 		<emphasis>
101
-		    Default value is <quote>username</quote>.
104
+			Default value is <quote>username</quote>.
102 105
 		</emphasis>
103
-	    </para>
104
-	    <example>
106
+		</para>
107
+		<example>
105 108
 		<title>Set <varname>user_column</varname> parameter</title>
106 109
 		<programlisting format="linespecific">
107 110
 ...
108 111
 modparam("group", "user_column", "user")
109 112
 ...
110 113
 </programlisting>
111
-	    </example>
114
+		</example>
112 115
 	</section>
113 116
 
114 117
 	<section>
115
-	    <title><varname>domain_column</varname> (string)</title>
116
-	    <para>
118
+		<title><varname>domain_column</varname> (string)</title>
119
+		<para>
117 120
 		Name of the column holding domains.
118
-	    </para>
119
-	    <para>
121
+		</para>
122
+		<para>
120 123
 		<emphasis>
121
-		    Default value is <quote>domain</quote>.
124
+			Default value is <quote>domain</quote>.
122 125
 		</emphasis>
123
-	    </para>
124
-	    <example>
126
+		</para>
127
+		<example>
125 128
 		<title>Set <varname>domain_column</varname> parameter</title>
126 129
 		<programlisting format="linespecific">
127 130
 ...
128 131
 modparam("group", "domain_column", "realm")
129 132
 ...
130 133
 </programlisting>
131
-	    </example>
134
+		</example>
132 135
 	</section>
133 136
 
134 137
 	<section>
135
-	    <title><varname>group_column</varname> (string)</title>
136
-	    <para>
138
+		<title><varname>group_column</varname> (string)</title>
139
+		<para>
137 140
 		Name of the column holding groups.
138
-	    </para>
139
-	    <para>
141
+		</para>
142
+		<para>
140 143
 		<emphasis>
141
-		    Default value is <quote>grp</quote>.
144
+			Default value is <quote>grp</quote>.
142 145
 		</emphasis>
143
-	    </para>
144
-	    <example>
146
+		</para>
147
+		<example>
145 148
 		<title>Set <varname>group_column</varname> parameter</title>
146 149
 		<programlisting format="linespecific">
147 150
 ...
148 151
 modparam("group", "group_column", "grp")
149 152
 ...
150 153
 </programlisting>
151
-	    </example>
154
+		</example>
152 155
 	</section>
153 156
 
154 157
 	<section>
155
-	    <title><varname>use_domain</varname> (integer)</title>
156
-	    <para>
157
-		If set to 1 then username@domain will be used for lookup, if set to 0 then only
158
-		username will be used.
159
-	    </para>
160
-	    <para>
158
+		<title><varname>use_domain</varname> (integer)</title>
159
+		<para>
160
+		If set to 1 then username@domain will be used for lookup, if set 
161
+		to 0 then only username will be used.
162
+		</para>
163
+		<para>
161 164
 		<emphasis>
162
-		    Default value is 0 (no).
165
+			Default value is 0 (no).
163 166
 		</emphasis>
164
-	    </para>
165
-	    <example>
167
+		</para>
168
+		<example>
166 169
 		<title>Set <varname>use_domain</varname> parameter</title>
167 170
 		<programlisting format="linespecific">
168 171
 ...
169 172
 modparam("group", "use_domain", 1)
170 173
 ...
171 174
 </programlisting>
172
-	    </example>
175
+		</example>
173 176
 	</section>
174 177
 
175
-    </section>
176
-    <section>
178
+	</section>
179
+	<section>
177 180
 	<title>Exported Functions</title>
178 181
 	<section>
179
-	    <title>
182
+		<title>
180 183
 		<function moreinfo="none">is_user_in(URI, group)</function>
181
-	    </title>
182
-	    <para>
183
-		The function returns true if username in the given &uri; is member of the given
184
-		group and false if not.
185
-	    </para>
186
-	    <para>Meaning of the parameters is as follows:</para>
187
-	    <itemizedlist>
184
+		</title>
185
+		<para>
186
+		The function returns true if username in the given &uri; is member of 
187
+		the given group and false if not.
188
+		</para>
189
+		<para>Meaning of the parameters is as follows:</para>
190
+		<itemizedlist>
188 191
 		<listitem>
189
-		    <para><emphasis>&uri;</emphasis> - &uri; whose username and optionally domain to be
190
-			used, this can be one of:
192
+			<para><emphasis>&uri;</emphasis> - &uri; whose username and 
193
+			optionally domain to be used, this can be one of:
191 194
 			<itemizedlist>
192
-			    <listitem>
193
-				<para>Request-URI - Use Request-URI username and (optionally) domain.</para>
194
-			    </listitem>
195
-			    <listitem>
195
+				<listitem>
196
+				<para>Request-URI - Use Request-URI username and (optionally) 
197
+				domain.</para>
198
+				</listitem>
199
+				<listitem>
196 200
 				<para>To - Use To username and (optionally) domain.</para>
197
-			    </listitem>
198
-			    <listitem>
201
+				</listitem>
202
+				<listitem>
199 203
 				<para>From - Use From username and (optionally) domain.</para>
200
-			    </listitem>
201
-			    <listitem>
204
+				</listitem>
205
+				<listitem>
202 206
 				<para>Credentials - Use digest credentials username.</para>
203
-			    </listitem>
204
-			    <listitem>
207
+				</listitem>
208
+				<listitem>
205 209
 				<para>$avp[avp_name|avp_alias] - Use the URI from the AVP
206 210
 				specified by this pseudo-variable.</para>
207
-			    </listitem>
211
+				</listitem>
208 212
 			</itemizedlist>
209
-		    </para>
213
+			</para>
210 214
 		</listitem>
211 215
 		<listitem>
212
-		    <para><emphasis>group</emphasis> - Name of the group to check.
213
-		    </para>
216
+			<para><emphasis>group</emphasis> - Name of the group to check.
217
+			</para>
214 218
 		</listitem>
215
-	    </itemizedlist>
219
+		</itemizedlist>
216 220
 		<para>
217 221
 		This function can be used from REQUEST_ROUTE.
218 222
 		</para>
219
-	    <example>
223
+		<example>
220 224
 		<title><function>is_user_in</function> usage</title>
221 225
 		<programlisting format="linespecific">
222 226
 ...
223 227
 if (is_user_in("Request-URI", "ld")) {
224
-    ...
228
+	...
225 229
 };
226 230
 ...
227 231
 </programlisting>
228
-	    </example>
232
+		</example>
233
+	</section>
229 234
 	</section>
230
-    </section>
231 235
 </chapter>
232 236
 
233 237
 <!-- Keep this element at the end of the file
... ...
@@ -61,7 +61,8 @@
61 61
 		</para>
62 62
 		<para>
63 63
 		<emphasis>
64
-			Default value is <quote>/usr/local/etc/radiusclient-ng/radiusclient.conf</quote>.
64
+			Default value is 
65
+			<quote>/usr/local/etc/radiusclient-ng/radiusclient.conf</quote>.
65 66
 		</emphasis>
66 67
 		</para>
67 68
 		<example>
... ...
@@ -76,8 +77,8 @@ modparam("group_radius", "radius_config", "/etc/radiusclient.conf")
76 77
 	<section>
77 78
 		<title><varname>use_domain</varname> (integer)</title>
78 79
 		<para>
79
-		If set to 1 then username@domain will be used for lookup, if set to 0 then only
80
-		username will be used.
80
+		If set to 1 then username@domain will be used for lookup, if set to 0 
81
+		then only username will be used.
81 82
 		</para>
82 83
 		<para>
83 84
 		<emphasis>
... ...
@@ -1,712 +1,729 @@
1 1
 <!-- Module User's Guide -->
2 2
 
3 3
 <chapter>
4
-    <chapterinfo>
4
+	<chapterinfo>
5 5
 	<revhistory>
6
-	    <revision>
6
+		<revision>
7 7
 		<revnumber>$Revision$</revnumber>
8 8
 		<date>$Date$</date>
9
-	    </revision>
9
+		</revision>
10 10
 	</revhistory>
11
-    </chapterinfo>
12
-    <title>User's Guide</title>
13
-    
14
-    <section>
11
+	</chapterinfo>
12
+	<title>User's Guide</title>
13
+	
14
+	<section>
15 15
 	<title>Overview</title>
16 16
 	<para>
17
-	    This is new version of Jabber module that integrates XODE <acronym>XML</acronym> parser
18
-	    for parsing Jabber messages. That introduces a new module dependency: expat library.
17
+		This is new version of Jabber module that integrates XODE 
18
+		<acronym>XML</acronym> parser for parsing Jabber messages. That 
19
+		introduces a new module dependency: expat library.
19 20
 	</para>
20 21
 	<para>
21
-	    Expat is a common <acronym>XML</acronym> library and is the fastest available for
22
-	    Linux/Unix, the second over all, after msxml library. It is integrated in most of well
23
-	    known Linux distributions.
22
+		Expat is a common <acronym>XML</acronym> library and is the fastest 
23
+		available for Linux/Unix, the second over all, after msxml library. It 
24
+		is integrated in most of well known Linux distributions.
24 25
 	</para>
25 26
 	<section>
26
-	    <title>New Features</title>
27
-	    <itemizedlist>
27
+		<title>New Features</title>
28
+		<itemizedlist>
28 29
 		<listitem>
29
-		    <para>
30
-			Presence support (see doc/xxjab.cfg for a sample cfg file) (January 2003).
31
-		    </para>
30
+			<para>
31
+			Presence support (see doc/xxjab.cfg for a sample cfg file) 
32
+			(January 2003).
33
+			</para>
32 34
 		</listitem>
33 35
 		<listitem>
34
-		    <para>
36
+			<para>
35 37
 			SIP to Jabber conference support (December 2003).
36
-		    </para>
38
+			</para>
37 39
 		</listitem>
38 40
 		<listitem>
39
-		    <para>
40
-			Possibility to manage all kinds of Jabber messages (message/presence/iq)
41
-			(December 2003).
42
-		    </para>
41
+			<para>
42
+			Possibility to manage all kinds of Jabber messages 
43
+			(message/presence/iq) (December 2003).
44
+			</para>
43 45
 		</listitem>
44 46
 		<listitem>
45
-		    <para>
46
-			Aliases -- Possibility to set host aliases for addresses (see parameter's
47
-			desc.) (December 2003).
48
-		    </para>
47
+			<para>
48
+			Aliases -- Possibility to set host aliases for addresses 
49
+			(see parameter's desc.) (December 2003).
50
+			</para>
49 51
 		</listitem>
50 52
 		<listitem>
51
-		    <para>
52
-			Send received &sip; MESSAGE messages to different &im; networks (Jabber, ICQ,
53
-			MSN, AIM, Yahoo) using a Jabber server (December 2003).
54
-		    </para>
53
+			<para>
54
+			Send received &sip; MESSAGE messages to different &im; networks 
55
+			(Jabber, ICQ,MSN, AIM, Yahoo) using a Jabber server (December 2003).
56
+			</para>
55 57
 		</listitem>
56 58
 		<listitem>
57
-		    <para>
58
-			Send incoming Jabber instant messages as &sip; MESSAGE messages.		
59
-		    </para>
59
+			<para>
60
+			Send incoming Jabber instant messages as &sip; MESSAGE messages.
61
+			</para>
60 62
 		</listitem>
61 63
 		<listitem>
62
-		    <para>
63
-			Gateways detection -- Ability to see whether an &im; gateway is up or down.			
64
-		    </para>
64
+			<para>
65
+			Gateways detection -- Ability to see whether an &im; gateway is up 
66
+			or down.
67
+			</para>
65 68
 		</listitem>
66
-	    </itemizedlist>
69
+		</itemizedlist>
70
+	</section>
67 71
 	</section>
68
-    </section>
69 72
 
70 73
 
71
-    <section>
74
+	<section>
72 75
 	<title>Admin's Guide</title>
73 76
 	<note>
74
-	    <para>
75
-		A more complete guide about SIMPLE2Jabber gateway can be found at &serhomelink;. The
76
-		part below will be removed soon, only the manual from web will be updated.
77
-	    </para>
77
+		<para>
78
+		A more complete guide about SIMPLE2Jabber gateway can be found 
79
+		at &serhomelink;. The part below will be removed soon, only the manual 
80
+		from web will be updated.
81
+		</para>
78 82
 	</note>
79 83
 	<para>
80
-	    The Jabber server setup is not a subject of this guide. Check <ulink
84
+		The Jabber server setup is not a subject of this guide. Check <ulink
81 85
 		url="http://www.jabber.org">http://www.jabber.org</ulink> for that.
82 86
 	</para>
83 87
 	<para>
84
-	    Useful scripts, for creating Jabber Gateway database, or for managing the Jabber
85
-	    accounts form web are located in 'doc' subdirectory of the module.
88
+		Useful scripts, for creating Jabber Gateway database, or for managing 
89
+		the Jabber accounts form web are located in 'doc' subdirectory of the 
90
+		module.
86 91
 	</para>
87 92
 	<para>
88
-	    Main steps of using the Jabber gateway:
93
+		Main steps of using the Jabber gateway:
89 94
 	</para>
90 95
 	<itemizedlist>
91
-	    <listitem>
96
+		<listitem>
92 97
 		<para>
93
-		    Create the MySQL database.
98
+			Create the MySQL database.
94 99
 		</para>
95
-	    </listitem>
96
-	    <listitem>
100
+		</listitem>
101
+		<listitem>
97 102
 		<para>
98
-		    Setup the local Jabber server.
103
+			Setup the local Jabber server.
99 104
 		</para>
100
-	    </listitem>
101
-	    <listitem>
105
+		</listitem>
106
+		<listitem>
102 107
 		<para>
103
-		    Set the module parameter values in cfg file of &ser;, load the dependent
104
-		    modules, set up the routing rules for Jabber gateway.
108
+			Set the module parameter values in cfg file of &ser;, load the 
109
+			dependent modules, set up the routing rules for Jabber gateway.
105 110
 		</para>
106
-	    </listitem>
107
-	    <listitem>
111
+		</listitem>
112
+		<listitem>
108 113
 		<para>
109
-		    Run &ser;.
114
+			Run &ser;.
110 115
 		</para>
111
-	    </listitem>
116
+		</listitem>
112 117
 	</itemizedlist>
113 118
 	<para>
114
-	    The administrator of &ser;/Jabber gateway <emphasis>must</emphasis> inform the users
115
-	    what are the aliases for Jabber/Other &im; networks. Other &im;s could be
116
-	    <acronym>AIM</acronym>, <acronym>ICQ</acronym>, <acronym>MSN</acronym>, Yahoo, and so
117
-	    on.
119
+		The administrator of &ser;/Jabber gateway <emphasis>must</emphasis> 
120
+		inform the users what are the aliases for Jabber/Other &im; networks. 
121
+		Other &im;s could be <acronym>AIM</acronym>, <acronym>ICQ</acronym>, 
122
+		<acronym>MSN</acronym>, Yahoo, and so on.
118 123
 	</para>
119 124
 	<para>
120
-	    These aliases depend on the server hostname where runs &ser; and how local Jabber
121
-	    server is setup.
125
+		These aliases depend on the server hostname where runs &ser; and 
126
+		how local Jabber server is setup.
122 127
 	</para>
123 128
 	<para>
124
-	    Next is presented a use case. Prologue:
129
+		Next is presented a use case. Prologue:
125 130
 	</para>
126 131
 	<itemizedlist>
127
-	    <listitem>
132
+		<listitem>
128 133
 		<para>&ser; is running on <quote>server.org</quote>.</para>
129
-	    </listitem>
130
-	    <listitem>
134
+		</listitem>
135
+		<listitem>
131 136
 		<para>
132
-		    Local Jabber server is running on <quote>jabsrv.server.org</quote>.
137
+			Local Jabber server is running on <quote>jabsrv.server.org</quote>.
133 138
 		</para>
134
-	    </listitem>
135
-	    <listitem>
139
+		</listitem>
140
+		<listitem>
136 141
 		<para>
137
-		    Jabber network alias (first part of <quote>jdomain</quote>) is
138
-		    <quote>jabber.server.org</quote>
142
+			Jabber network alias (first part of <quote>jdomain</quote>) is
143
+			<quote>jabber.server.org</quote>
139 144
 		</para>
140
-	    </listitem>
145
+		</listitem>
141 146
 	</itemizedlist>
142 147
 	<para>
143
-	    The aliases for other &im; networks <emphasis>must</emphasis> be the same as
144
-	    <acronym>JID</acronym> set in Jabber configuration file for each &im; transport.
148
+		The aliases for other &im; networks <emphasis>must</emphasis> be the 
149
+		same as <acronym>JID</acronym> set in Jabber configuration file for 
150
+		each &im; transport.
145 151
 	</para>
146 152
 	<para>
147
-	    The <acronym>JIDs</acronym> of Jabber transports <emphasis>must</emphasis> start with
148
-	    the name of the network. For <acronym>AIM</acronym>, <acronym>JID</acronym> must start
149
-	    with <quote>aim.</quote>, for <acronym>ICQ</acronym> with <quote>icq</quote> (that
150
-	    because I use icqv7-t), for <acronym>MSN</acronym> with <quote>msn.</quote> and for
151
-	    Yahoo with <quote>yahoo.</quote>. The gateway needs these to find out what transport is
152
-	    working and which not. For our use case these could be like
153
-	    <quote>aim.server.org</quote>, <quote>icq.server.org</quote>,
154
-	    <quote>msn.server.org</quote>, <quote>yahoo.server.org</quote>.
153
+		The <acronym>JIDs</acronym> of Jabber transports 
154
+		<emphasis>must</emphasis> start with the name of the network. 
155
+		For <acronym>AIM</acronym>, <acronym>JID</acronym> must start
156
+		with <quote>aim.</quote>, for <acronym>ICQ</acronym> with 
157
+		<quote>icq</quote> (that because I use icqv7-t), for 
158
+		<acronym>MSN</acronym> with <quote>msn.</quote> and for
159
+		Yahoo with <quote>yahoo.</quote>. The gateway needs these to find 
160
+		out what transport is working and which not. For our use case these 
161
+		could be like <quote>aim.server.org</quote>, 
162
+		<quote>icq.server.org</quote>,
163
+		<quote>msn.server.org</quote>, <quote>yahoo.server.org</quote>.
155 164
 	</para>
156 165
 	<para>
157
-	    It is indicated to have these aliases in <acronym>DNS</acronym>, thus the client
158
-	    application can resolve the <acronym>DNS</acronym> name. Otherwise there must be set the
159
-	    outbound proxy to &ser; server.
166
+		It is indicated to have these aliases in <acronym>DNS</acronym>, thus 
167
+		the client application can resolve the <acronym>DNS</acronym> name. 
168
+		Otherwise there must be set the outbound proxy to &ser; server.
160 169
 	</para>
161 170
 	<para>
162
-	    *** Routing rules for Jabber gateway First step is to configure &ser; to recognize
163
-	    messages for Jabber gateway. Look at <quote>doc/xjab.cfg</quote> to see a sample. The
164
-	    idea is to look in messages for destination address and if it contains Jabber alias or
165
-	    other &im; alias, that means the message is for Jabber gateway.
171
+		*** Routing rules for Jabber gateway First step is to configure &ser; 
172
+		to recognize messages for Jabber gateway. Look at 
173
+		<quote>doc/xjab.cfg</quote> to see a sample. The idea is to look in 
174
+		messages for destination address and if it contains Jabber alias or
175
+		other &im; alias, that means the message is for Jabber gateway.
166 176
 	</para>
167 177
 	<para>
168
-	    Next step is to find out what means that message for Jabber gateway. It could be a
169
-	    special message what triggers the gateway to take an action or is a simple message which
170
-	    should be delivered to Jabber network (using the method
171
-	    <quote>jab_send_message</quote>).
178
+		Next step is to find out what means that message for Jabber gateway. 
179
+		It could be a special message what triggers the gateway to take an 
180
+		action or is a simple message which should be delivered to Jabber 
181
+		network (using the method <quote>jab_send_message</quote>).
172 182
 	</para>
173 183
 	<para>
174
-	    The special messages are for: 
184
+		The special messages are for: 
175 185
 	</para>
176 186
 	<itemizedlist>
177
-	    <listitem>
187
+		<listitem>
178 188
 		<para>
179
-		    Registering to Jabber server (go online in Jabber network)--here must be called
180
-		    <quote>jab_go_online</quote> method.
189
+			Registering to Jabber server (go online in Jabber network)--here 
190
+			must be called <quote>jab_go_online</quote> method.
181 191
 		</para>
182
-	    </listitem>
183
-	    <listitem>
192
+		</listitem>
193
+		<listitem>
184 194
 		<para>
185
-		    Leaving the Jabber network (go offline in Jabber network)--here must be called
186
-		    <quote>jab_go_offline</quote> method.
195
+			Leaving the Jabber network (go offline in Jabber network)--here 
196
+			must be called <quote>jab_go_offline</quote> method.
187 197
 		</para>
188
-	    </listitem>
189
-	    <listitem>
198
+		</listitem>
199
+		<listitem>
190 200
 		<para>
191
-		    Joining a Jabber conference room--here must be called <quote>jab_join_jconf</quote>.
201
+			Joining a Jabber conference room--here must be called 
202
+			<quote>jab_join_jconf</quote>.
192 203
 		</para>
193
-	    </listitem>
194
-	    <listitem>
204
+		</listitem>
205
+		<listitem>
195 206
 		<para>
196
-		    Leaving a Jabber conference room--here must be called <quote>jab_exit_jconf</quote>.		    
207
+			Leaving a Jabber conference room--here must be called 
208
+			<quote>jab_exit_jconf</quote>.
197 209
 		</para>
198
-	    </listitem>
210
+		</listitem>
199 211
 	</itemizedlist>
200 212
 	<para>
201
-	    The destination address <emphasis>must</emphasis> follow the following patterns:
213
+		The destination address <emphasis>must</emphasis> follow the 
214
+		following patterns:
202 215
 	</para>
203 216
 	<itemizedlist>
204
-	    <listitem>
217
+		<listitem>
205 218
 		<para>
206
-		    For Jabber network: <quote>username&lt;delim&gt;jabber_server@jabber_alias</quote>.
219
+			For Jabber network: 
220
+			<quote>username&lt;delim&gt;jabber_server@jabber_alias</quote>.
207 221
 		</para>
208
-	    </listitem>
209
-	    <listitem>
222
+		</listitem>
223
+		<listitem>
210 224
 		<para>
211
-		    For Jabber conference: <quote>nickname&lt;delim&gt;room&lt;delim&gt;conference_server@jabber_alias</quote>.
225
+			For Jabber conference: <quote>nickname&lt;delim&gt;room&lt;delim&gt;conference_server@jabber_alias</quote>.
212 226
 		</para>
213
-	    </listitem>
214
-	    <listitem>
227
+		</listitem>
228
+		<listitem>
215 229
 		<para>
216
-		    For <acronym>AIM</acronym> network: <quote>aim_username@aim_alias</quote>.
230
+			For <acronym>AIM</acronym> network: 
231
+			<quote>aim_username@aim_alias</quote>.
217 232
 		</para>
218
-	    </listitem>
219
-	    <listitem>
233
+		</listitem>
234
+		<listitem>
220 235
 		<para>
221
-		    For <acronym>ICQ</acronym> network: <quote>icq_number@icq_alias</quote>.
236
+			For <acronym>ICQ</acronym> network: 
237
+			<quote>icq_number@icq_alias</quote>.
222 238
 		</para>
223
-	    </listitem>
224
-	    <listitem>
239
+		</listitem>
240
+		<listitem>
225 241
 		<para>
226
-		    For <acronym>MSN</acronym> network:
227
-			<quote>msn_username&lt;delim&gt;msn_server@msn_alias</quote>. msn_server can
228
-		    be <quote>msn.com</quote> or <quote>hotmail.com</quote>.
242
+			For <acronym>MSN</acronym> network:
243
+			<quote>msn_username&lt;delim&gt;msn_server@msn_alias</quote>.
244
+			msn_server can be <quote>msn.com</quote> or 
245
+			<quote>hotmail.com</quote>.
229 246
 		</para>
230
-	    </listitem>
231
-	    <listitem>
247
+		</listitem>
248
+		<listitem>
232 249
 		<para>
233
-		    For YAHOO network: <quote>yahoo_username@yahoo_alias</quote>.
250
+			For YAHOO network: <quote>yahoo_username@yahoo_alias</quote>.
234 251
 		</para>
235
-	    </listitem>
252
+		</listitem>
236 253
 	</itemizedlist>
237 254
 	<note>
238
-	    <para>
255
+		<para>
239 256
 		<quote>jabber_alias</quote> is the first part of <quote>jdomain</quote>.
240
-	    </para>
257
+		</para>
241 258
 	</note>
242
-    </section>
243
-    <section>
259
+	</section>
260
+	<section>
244 261
 	<title>User's Guide</title>
245 262
 	<para>
246
-	    The user must activate his Jabber account associated with his &sip; id. For each other
247
-	    &im; network on which he wants to send messages, he must set an account for that &im;
248
-	    network. The gateway is not able to create new account in foreign networks, excepting
249
-	    local Jabber server.
263
+		The user must activate his Jabber account associated with his &sip; id. For each other
264
+		&im; network on which he wants to send messages, he must set an account for that &im;
265
+		network. The gateway is not able to create new account in foreign networks, excepting
266
+		local Jabber server.
250 267
 	</para>
251 268
 	<para>
252
-	    When you want to send a message to someone in other &im; network, you must set the
253
-	    destination of the message according with the pattern corresponding to that &im; network
254
-	    (see last part of <quote>Admin guide</quote> chapter).
269
+		When you want to send a message to someone in other &im; network, you must set the
270
+		destination of the message according with the pattern corresponding to that &im; network
271
+		(see last part of <quote>Admin guide</quote> chapter).
255 272
 	</para>
256 273
 	<para>
257
-	    Sending a message to user@jabber.xxx.org which is in Jabber network, the
258
-	    destination must be: user&lt;delim&gt;jabber.xxx.org@jabber_alias.
274
+		Sending a message to user@jabber.xxx.org which is in Jabber network, the
275
+		destination must be: user&lt;delim&gt;jabber.xxx.org@jabber_alias.
259 276
 	</para>
260 277
 	<para>
261
-	    For someone who is in Yahoo network the destination must be:
262
-	    user@yahoo_alias
278
+		For someone who is in Yahoo network the destination must be:
279
+		user@yahoo_alias
263 280
 	</para>
264 281
 	<note>
265
-	    <para>
282
+		<para>
266 283
 		The &ser; administrator have to set the Jabber transports for each &im; network in
267 284
 		order to be able to send messages to those networks. The alias of each &im; network
268 285
 		can be found out from &ser; admin.
269
-	    </para>
270
-	    <para>
286
+		</para>
287
+		<para>
271 288
 		You cannot send messages from your &sip; client to your associated Jabber
272 289
 		account--is something like sending messages to yourself.
273
-	    </para>
290
+		</para>
274 291
 	</note>
275
-    </section>
292
+	</section>
276 293
 
277
-    <section>
294
+	<section>
278 295
 	<title>Dependencies</title>
279 296
 	<section>
280
-	    <title>&ser; Modules</title>
281
-	    <para>
297
+		<title>&ser; Modules</title>
298
+		<para>
282 299
 		The following modules must be loaded before this module:
283
-	    	<itemizedlist>
284
-		    <listitem>
300
+			<itemizedlist>
301
+			<listitem>
285 302
 			<para>
286
-			    A database module.
303
+				A database module.
287 304
 			</para>
288
-		    </listitem>
289
-		    <listitem>
305
+			</listitem>
306
+			<listitem>
290 307
 			<para>
291
-			    <emphasis>pa</emphasis> (Optionally) - Presence Agent.
308
+				<emphasis>pa</emphasis> (Optionally) - Presence Agent.
292 309
 			</para>
293
-		    </listitem>
294
-		    <listitem>
310
+			</listitem>
311
+			<listitem>
295 312
 			<para>
296
-			    <emphasis>tm</emphasis> - Transaction Manager.
313
+				<emphasis>tm</emphasis> - Transaction Manager.
297 314
 			</para>
298
-		    </listitem>
299
-	    	</itemizedlist>
300
-	    </para>
315
+			</listitem>
316
+			</itemizedlist>
317
+		</para>
301 318
 	</section>
302 319
 	<section>
303
-	    <title>External Libraries or Applications</title>
304
-	    <para>
320
+		<title>External Libraries or Applications</title>
321
+		<para>
305 322
 		The following libraries or applications must be installed before running
306 323
 		&ser; with this module loaded:
307
-	    	<itemizedlist>
308
-		    <listitem>
324
+			<itemizedlist>
325
+			<listitem>
309 326
 			<para>
310
-			    <emphasis>Expat</emphasis> library.
327
+				<emphasis>Expat</emphasis> library.
311 328
 			</para>
312
-		    </listitem>
313
-	    	</itemizedlist>
314
-	    </para>
329
+			</listitem>
330
+			</itemizedlist>
331
+		</para>
332
+	</section>
315 333
 	</section>
316
-    </section>
317
-    <section>
334
+	<section>
318 335
 	<title>Exported Parameters</title>
319 336
 	<section>
320
-	    <title><varname>db_url</varname> (string)</title>
321
-	    <para>
337
+		<title><varname>db_url</varname> (string)</title>
338
+		<para>
322 339
 		<acronym>SQL</acronym> &url; of database.
323
-	    </para>
324
-	    <para>
340
+		</para>
341
+		<para>
325 342
 		<emphasis>
326
-		    Default value is <quote>mysql://root@127.0.0.1/sip_jab</quote>.
343
+			Default value is <quote>mysql://root@127.0.0.1/sip_jab</quote>.
327 344
 		</emphasis>
328
-	    </para>
329
-	    <example>
345
+		</para>
346
+		<example>
330 347
 		<title>Set <varname>db_url</varname> parameter</title>
331 348
 		<programlisting format="linespecific">
332 349
 ...
333 350
 modparam("jabber", "db_url", "mysql://username:password@host/sip_jab")
334 351
 ...
335 352
 </programlisting>
336
-	    </example>
353
+		</example>
337 354
 	</section>
338 355
 
339 356
 	<section>
340
-	    <title><varname>jaddress</varname> (string)</title>
341
-	    <para>
357
+		<title><varname>jaddress</varname> (string)</title>
358
+		<para>
342 359
 		&ip; or hostname of Jabber server -- it must be the same as the value from &lt;host&gt;
343 360
 		tag of Jabber server config file.
344
-	    </para>
345
-	    <para>
361
+		</para>
362
+		<para>
346 363
 		<emphasis>
347
-		    Default value is <quote>127.0.0.1</quote>.
364
+			Default value is <quote>127.0.0.1</quote>.
348 365
 		</emphasis>
349
-	    </para>
350
-	    <example>
366
+		</para>
367
+		<example>
351 368
 		<title>Set <varname>jaddress</varname> parameter</title>
352 369
 		<programlisting format="linespecific">
353 370
 ...
354 371
 modparam("jabber", "jaddress", "1.2.3.4")
355 372
 ...
356 373
 </programlisting>
357
-	    </example>
374
+		</example>
358 375
 	</section>
359 376
 
360 377
 	<section>
361
-	    <title><varname>jport</varname> (integer)</title>
362
-	    <para>
378
+		<title><varname>jport</varname> (integer)</title>
379
+		<para>
363 380
 		Port number of Jabber server.
364
-	    </para>
365
-	    <para>
381
+		</para>
382
+		<para>
366 383
 		<emphasis>
367
-		    Default value is <quote>5222</quote>.
384
+			Default value is <quote>5222</quote>.
368 385
 		</emphasis>
369
-	    </para>
370
-	    <example>
386
+		</para>
387
+		<example>
371 388
 		<title>Set <varname>jport</varname> parameter</title>
372 389
 		<programlisting format="linespecific">
373 390
 ...
374 391
 modparam("jabber", "jport", 1234)
375 392
 ...
376 393
 </programlisting>
377
-	    </example>
394
+		</example>
378 395
 	</section>
379 396
 
380 397
 	<section>
381
-	    <title><varname>jdomain</varname> (string)</title>
382
-	    <para>
398
+		<title><varname>jdomain</varname> (string)</title>
399
+		<para>
383 400
 		Format: jabber.sipserver.com=&lt;delim&gt;. If the destination is for Jabber network
384 401
 		the &uri; should be like: username&lt;delim&gt;jabber_server@jdomain or
385 402
 		nickname&lt;delim&gt;roomname&lt;delim&gt;conference_server@jdomain
386
-	    </para>
387
-	    <para>
403
+		</para>
404
+		<para>
388 405
 		&lt;delim&gt; must be a un-reserved character. By default this character is * .  The
389 406
 		destination will be transformed to username@jabber_server or
390 407
 		roomname@conference_server/nickname before the message is sent to Jabber server.
391
-	    </para>
392
-	    <para>
408
+		</para>
409
+		<para>
393 410
 		<emphasis>
394
-		    Default value is none.
411
+			Default value is none.
395 412
 		</emphasis>
396
-	    </para>
397
-	    <example>
413
+		</para>
414
+		<example>
398 415
 		<title>Set <varname>jdomain</varname> parameter</title>
399 416
 		<programlisting format="linespecific">
400 417
 ...
401 418
 modparam("jabber", "jdomain", "jabber.sipserver.com=*")
402 419
 ...
403 420
 </programlisting>
404
-	    </example>
421
+		</example>
405 422
 	</section>
406 423
 
407 424
 	<section>
408
-	    <title><varname>aliases</varname> (string)</title>
409
-	    <para>
425
+		<title><varname>aliases</varname> (string)</title>
426
+		<para>
410 427
 		Aliases for &im; networks.
411
-	    </para>
412
-	    <para>
428
+		</para>
429
+		<para>
413 430
 		Format: <quote>N;alias1=&lt;delim1&gt;;...;aliasN=&lt;delimN&gt;;</quote>
414 431
 		Destinations like '*@aliasX' could have other format than those specified for Jabber
415 432
 		network.  All &lt;delim&gt; from user part of the destination address will be
416 433
 		changed to &lt;delimX&gt; if the destination address contains &lt;aliasX&gt;.
417
-	    </para>
418
-	    <para>
434
+		</para>
435
+		<para>
419 436
 		(Ex: jdomain is 'jabber.x.com=*' and msn_alias is 'msn.x.com=%'. The destination
420 437
 		address forM <acronym>MSN</acronym> Network, on &sip; side, is like
421 438
 		'username*hotmail.com@msn.x.com'. The destination address will be transformed to
422 439
 		'username%hotmail.com@msn.x.com'.  'msn.x.com' must be the same as the
423 440
 		<acronym>JID</acronym> associated with <acronym>MSN</acronym> transport in Jabber
424 441
 		configuration file (usually is 'jabberd.xml'))
425
-	    </para>
426
-	    <para>
442
+		</para>
443
+		<para>
427 444
 		<emphasis>
428
-		    Default value is none.
445
+			Default value is none.
429 446
 		</emphasis>
430
-	    </para>
431
-	    <example>
447
+		</para>
448
+		<example>
432 449
 		<title>Set <varname>jdomain</varname> parameter</title>
433 450
 		<programlisting format="linespecific">
434 451
 ...
435 452
 modparam("jabber", "aliases", "1;msn.x.com=%")
436 453
 ...
437 454
 </programlisting>
438
-	    </example>
455
+		</example>
439 456
 	</section>
440 457
 
441 458
 	<section>
442
-	    <title><varname>proxy</varname> (string)</title>
443
-	    <para>
459
+		<title><varname>proxy</varname> (string)</title>
460
+		<para>
444 461
 		Outbound proxy address.
445
-	    </para>
446
-	    <para>
462
+		</para>
463
+		<para>
447 464
 		Format: ip_address:port hostname:port
448
-	    </para>
449
-	    <para>
465
+		</para>
466
+		<para>
450 467
 		All &sip; messages generated by gateway will be sent to that address. If is
451 468
 		missing, the message will be delivered to the hostname of the destination address
452
-	    </para>
453
-	    <para>
469
+		</para>
470
+		<para>
454 471
 		Default value is none.
455
-	    </para>
456
-	    <example>
472
+		</para>
473
+		<example>
457 474
 		<title>Set <varname>proxy</varname> parameter</title>
458 475
 		<programlisting format="linespecific">
459 476
 ...
460 477
 modparam("jabber", "proxy", "10.0.0.1:5060 sipserver.com:5060")
461 478
 ...
462 479
 </programlisting>
463
-	    </example>
480
+		</example>
464 481
 	</section>
465 482
 
466 483
 	<section>
467
-	    <title><varname>registrar</varname> (string)</title>
468
-	    <para>
484
+		<title><varname>registrar</varname> (string)</title>
485
+		<para>
469 486
 		The address in whose behalf the INFO and ERROR messages are sent.
470
-	    </para>
471
-	    <para>
487
+		</para>
488
+		<para>
472 489
 		<emphasis>
473
-		    Default value is <quote>jabber_gateway@127.0.0.1</quote>.
490
+			Default value is <quote>jabber_gateway@127.0.0.1</quote>.
474 491
 		</emphasis>
475
-	    </para>
476
-	    <example>
492
+		</para>
493
+		<example>
477 494
 		<title>Set <varname>registrar</varname> parameter</title>
478 495
 		<programlisting format="linespecific">
479 496
 ...
480 497
 modparam("jabber", "registrar", "jabber_gateway@127.0.0.1")
481 498
 ...
482 499
 </programlisting>
483
-	    </example>
500
+		</example>
484 501
 	</section>
485 502
 
486 503
 	<section>
487
-	    <title><varname>workers</varname> (integer)</title>
488
-	    <para>
504
+		<title><varname>workers</varname> (integer)</title>
505
+		<para>
489 506
 		Number of workers.
490
-	    </para>
491
-	    <para>
507
+		</para>
508
+		<para>
492 509
 		<emphasis>
493
-		    Default value is 2.
510
+			Default value is 2.
494 511
 		</emphasis>
495
-	    </para>
496
-	    <example>
512
+		</para>
513
+		<example>
497 514
 		<title>Set <varname>workers</varname> parameter</title>
498 515
 		<programlisting format="linespecific">
499 516
 ...
500 517
 modparam("jabber", "workers", 2)
501 518
 ...
502 519
 </programlisting>
503
-	    </example>
520
+		</example>
504 521
 	</section>
505 522
 
506 523
 	<section>
507
-	    <title><varname>max_jobs</varname> (integer)</title>
508
-	    <para>
524
+		<title><varname>max_jobs</varname> (integer)</title>
525
+		<para>
509 526
 		Maximum jobs per worker.
510
-	    </para>
511
-	    <para>
527
+		</para>
528
+		<para>
512 529
 		<emphasis>
513
-		    Default value is 10.
530
+			Default value is 10.
514 531
 		</emphasis>
515
-	    </para>
516
-	    <example>
532
+		</para>
533
+		<example>
517 534
 		<title>Set <varname>max_jobs</varname> parameter</title>
518 535
 		<programlisting format="linespecific">
519 536
 ...
520 537
 modparam("jabber", "max_jobs", 10)
521 538
 ...
522 539
 </programlisting>
523
-	    </example>
540
+		</example>
524 541
 	</section>
525 542
 
526 543
 	<section>
527
-	    <title><varname>cache_time</varname> (integer)</title>
528