annotate xml/ru/docs/http/ngx_http_referer_module.xml @ 506:657848837328

Documented how nginx processes proxied server's response header fields (X-Accel-*, Expires, Cache-Control, Set-Cookie) that can be ignored.
author Ruslan Ermilov <ru@nginx.com>
date Tue, 24 Apr 2012 07:32:41 +0000
parents 3878cc99d454
children be54c443235a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
222
bfe3eff81d04 Removed redundant encoding specification.
Ruslan Ermilov <ru@nginx.com>
parents: 110
diff changeset
1 <?xml version="1.0"?>
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
2
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
3 <!DOCTYPE module SYSTEM "../../../../dtd/module.dtd">
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
4
356
ccb8e9a12e2f Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 288
diff changeset
5 <module name="Модуль ngx_http_referer_module"
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
6 link="/ru/docs/http/ngx_http_referer_module.html"
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
7 lang="ru">
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
8
110
40eec261c2a6 Added proper support for anonymous sections, notably for the summary.
Ruslan Ermilov <ru@nginx.com>
parents: 102
diff changeset
9 <section id="summary">
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
10
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
11 <para>
356
ccb8e9a12e2f Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 288
diff changeset
12 Модуль <literal>ngx_http_referer_module</literal> позволяет блокировать доступ
ccb8e9a12e2f Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 288
diff changeset
13 к сайту для запросов с неверными значениями поля <header>Referer</header> в
ccb8e9a12e2f Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 288
diff changeset
14 заголовке.
ccb8e9a12e2f Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 288
diff changeset
15 Следует иметь в виду, что подделать запрос с нужным значением поля
ccb8e9a12e2f Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 288
diff changeset
16 <header>Referer</header> не составляет большого труда, поэтому цель
ccb8e9a12e2f Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 288
diff changeset
17 использования данного модуля заключается не в стопроцентном блокировании
ccb8e9a12e2f Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 288
diff changeset
18 подобных запросов, а в блокировании массового потока запросов, сделанных
ccb8e9a12e2f Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 288
diff changeset
19 обычными браузерами.
ccb8e9a12e2f Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 288
diff changeset
20 Нужно также учитывать, что обычные браузеры могут не передавать поле
ccb8e9a12e2f Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 288
diff changeset
21 <header>Referer</header> даже для верных запросов.
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
22 </para>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
23
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
24 </section>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
25
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
26
356
ccb8e9a12e2f Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 288
diff changeset
27 <section id="example" name="Пример конфигурации">
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
28
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
29 <para>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
30 <example>
356
ccb8e9a12e2f Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 288
diff changeset
31 valid_referers none blocked server_names
490
9913f1d51c07 Replaced "nginx" domain names with example domains.
Ruslan Ermilov <ru@nginx.com>
parents: 364
diff changeset
32 *.example.com example.* www.example.org/galleries/
356
ccb8e9a12e2f Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 288
diff changeset
33 ~\.google\.;
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
34
356
ccb8e9a12e2f Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 288
diff changeset
35 if ($invalid_referer) {
ccb8e9a12e2f Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 288
diff changeset
36 return 403;
ccb8e9a12e2f Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 288
diff changeset
37 }
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
38 </example>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
39 </para>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
40
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
41 </section>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
42
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
43
356
ccb8e9a12e2f Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 288
diff changeset
44 <section id="directives" name="Директивы">
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
45
501
3878cc99d454 Bring ngx_http_referer_module docs up to date, including:
Ruslan Ermilov <ru@nginx.com>
parents: 490
diff changeset
46 <directive name="referer_hash_bucket_size">
3878cc99d454 Bring ngx_http_referer_module docs up to date, including:
Ruslan Ermilov <ru@nginx.com>
parents: 490
diff changeset
47 <syntax><value>размер</value></syntax>
3878cc99d454 Bring ngx_http_referer_module docs up to date, including:
Ruslan Ermilov <ru@nginx.com>
parents: 490
diff changeset
48 <default>64</default>
3878cc99d454 Bring ngx_http_referer_module docs up to date, including:
Ruslan Ermilov <ru@nginx.com>
parents: 490
diff changeset
49 <context>server</context>
3878cc99d454 Bring ngx_http_referer_module docs up to date, including:
Ruslan Ermilov <ru@nginx.com>
parents: 490
diff changeset
50 <context>location</context>
3878cc99d454 Bring ngx_http_referer_module docs up to date, including:
Ruslan Ermilov <ru@nginx.com>
parents: 490
diff changeset
51 <appeared-in>1.0.5</appeared-in>
3878cc99d454 Bring ngx_http_referer_module docs up to date, including:
Ruslan Ermilov <ru@nginx.com>
parents: 490
diff changeset
52
3878cc99d454 Bring ngx_http_referer_module docs up to date, including:
Ruslan Ermilov <ru@nginx.com>
parents: 490
diff changeset
53 <para>
3878cc99d454 Bring ngx_http_referer_module docs up to date, including:
Ruslan Ermilov <ru@nginx.com>
parents: 490
diff changeset
54 Задаёт размер корзины хэш-таблиц со значениями <header>Referer</header>.
3878cc99d454 Bring ngx_http_referer_module docs up to date, including:
Ruslan Ermilov <ru@nginx.com>
parents: 490
diff changeset
55 Подробнее смотрите в документе по
3878cc99d454 Bring ngx_http_referer_module docs up to date, including:
Ruslan Ermilov <ru@nginx.com>
parents: 490
diff changeset
56 <link doc="../hash.xml">настройке хэшей</link>.
3878cc99d454 Bring ngx_http_referer_module docs up to date, including:
Ruslan Ermilov <ru@nginx.com>
parents: 490
diff changeset
57 </para>
3878cc99d454 Bring ngx_http_referer_module docs up to date, including:
Ruslan Ermilov <ru@nginx.com>
parents: 490
diff changeset
58
3878cc99d454 Bring ngx_http_referer_module docs up to date, including:
Ruslan Ermilov <ru@nginx.com>
parents: 490
diff changeset
59 </directive>
3878cc99d454 Bring ngx_http_referer_module docs up to date, including:
Ruslan Ermilov <ru@nginx.com>
parents: 490
diff changeset
60
3878cc99d454 Bring ngx_http_referer_module docs up to date, including:
Ruslan Ermilov <ru@nginx.com>
parents: 490
diff changeset
61
3878cc99d454 Bring ngx_http_referer_module docs up to date, including:
Ruslan Ermilov <ru@nginx.com>
parents: 490
diff changeset
62 <directive name="referer_hash_max_size">
3878cc99d454 Bring ngx_http_referer_module docs up to date, including:
Ruslan Ermilov <ru@nginx.com>
parents: 490
diff changeset
63 <syntax><value>размер</value></syntax>
3878cc99d454 Bring ngx_http_referer_module docs up to date, including:
Ruslan Ermilov <ru@nginx.com>
parents: 490
diff changeset
64 <default>2048</default>
3878cc99d454 Bring ngx_http_referer_module docs up to date, including:
Ruslan Ermilov <ru@nginx.com>
parents: 490
diff changeset
65 <context>server</context>
3878cc99d454 Bring ngx_http_referer_module docs up to date, including:
Ruslan Ermilov <ru@nginx.com>
parents: 490
diff changeset
66 <context>location</context>
3878cc99d454 Bring ngx_http_referer_module docs up to date, including:
Ruslan Ermilov <ru@nginx.com>
parents: 490
diff changeset
67 <appeared-in>1.0.5</appeared-in>
3878cc99d454 Bring ngx_http_referer_module docs up to date, including:
Ruslan Ermilov <ru@nginx.com>
parents: 490
diff changeset
68
3878cc99d454 Bring ngx_http_referer_module docs up to date, including:
Ruslan Ermilov <ru@nginx.com>
parents: 490
diff changeset
69 <para>
3878cc99d454 Bring ngx_http_referer_module docs up to date, including:
Ruslan Ermilov <ru@nginx.com>
parents: 490
diff changeset
70 Задаёт максимальный <value>размер</value> хэш-таблиц со значениями
3878cc99d454 Bring ngx_http_referer_module docs up to date, including:
Ruslan Ermilov <ru@nginx.com>
parents: 490
diff changeset
71 <header>Referer</header>.
3878cc99d454 Bring ngx_http_referer_module docs up to date, including:
Ruslan Ermilov <ru@nginx.com>
parents: 490
diff changeset
72 Подробнее смотрите в документе по
3878cc99d454 Bring ngx_http_referer_module docs up to date, including:
Ruslan Ermilov <ru@nginx.com>
parents: 490
diff changeset
73 <link doc="../hash.xml">настройке хэшей</link>.
3878cc99d454 Bring ngx_http_referer_module docs up to date, including:
Ruslan Ermilov <ru@nginx.com>
parents: 490
diff changeset
74 </para>
3878cc99d454 Bring ngx_http_referer_module docs up to date, including:
Ruslan Ermilov <ru@nginx.com>
parents: 490
diff changeset
75
3878cc99d454 Bring ngx_http_referer_module docs up to date, including:
Ruslan Ermilov <ru@nginx.com>
parents: 490
diff changeset
76 </directive>
3878cc99d454 Bring ngx_http_referer_module docs up to date, including:
Ruslan Ermilov <ru@nginx.com>
parents: 490
diff changeset
77
3878cc99d454 Bring ngx_http_referer_module docs up to date, including:
Ruslan Ermilov <ru@nginx.com>
parents: 490
diff changeset
78
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
79 <directive name="valid_referers">
271
4c6d2c614d2c Cleaned up XML tag mess:
Ruslan Ermilov <ru@nginx.com>
parents: 222
diff changeset
80 <syntax>
364
bb51d3e17dd0 Style fixed.
Ruslan Ermilov <ru@nginx.com>
parents: 356
diff changeset
81 <literal>none</literal> |
bb51d3e17dd0 Style fixed.
Ruslan Ermilov <ru@nginx.com>
parents: 356
diff changeset
82 <literal>blocked</literal> |
bb51d3e17dd0 Style fixed.
Ruslan Ermilov <ru@nginx.com>
parents: 356
diff changeset
83 <literal>server_names</literal> |
bb51d3e17dd0 Style fixed.
Ruslan Ermilov <ru@nginx.com>
parents: 356
diff changeset
84 <value>строка</value>
bb51d3e17dd0 Style fixed.
Ruslan Ermilov <ru@nginx.com>
parents: 356
diff changeset
85 ...</syntax>
99
1d315ef37215 The case <default/> is now language-agnostic.
Ruslan Ermilov <ru@nginx.com>
parents: 76
diff changeset
86 <default/>
356
ccb8e9a12e2f Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 288
diff changeset
87 <context>server</context>
ccb8e9a12e2f Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 288
diff changeset
88 <context>location</context>
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
89
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
90 <para>
356
ccb8e9a12e2f Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 288
diff changeset
91 Задаёт значения поля <header>Referer</header> заголовка запроса, при
ccb8e9a12e2f Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 288
diff changeset
92 которых встроенная переменная <var>$invalid_referer</var> будет иметь
501
3878cc99d454 Bring ngx_http_referer_module docs up to date, including:
Ruslan Ermilov <ru@nginx.com>
parents: 490
diff changeset
93 пустую строку в качестве значения.
3878cc99d454 Bring ngx_http_referer_module docs up to date, including:
Ruslan Ermilov <ru@nginx.com>
parents: 490
diff changeset
94 В противном случае значение переменной равно “<literal>1</literal>”.
3878cc99d454 Bring ngx_http_referer_module docs up to date, including:
Ruslan Ermilov <ru@nginx.com>
parents: 490
diff changeset
95 Поиск совпадения производится без учёта регистра символов.
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
96 </para>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
97
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
98 <para>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
99 Параметры могут быть следующие:
356
ccb8e9a12e2f Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 288
diff changeset
100 <list type="tag">
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
101
356
ccb8e9a12e2f Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 288
diff changeset
102 <tag-name><literal>none</literal></tag-name>
ccb8e9a12e2f Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 288
diff changeset
103 <tag-desc>
ccb8e9a12e2f Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 288
diff changeset
104 поле <header>Referer</header> в заголовке запроса отсутствует;
ccb8e9a12e2f Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 288
diff changeset
105 </tag-desc>
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
106
356
ccb8e9a12e2f Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 288
diff changeset
107 <tag-name><literal>blocked</literal></tag-name>
ccb8e9a12e2f Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 288
diff changeset
108 <tag-desc>
ccb8e9a12e2f Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 288
diff changeset
109 поле <header>Referer</header> в заголовке запроса присутствует,
ccb8e9a12e2f Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 288
diff changeset
110 но его значение удалено межсетевым экраном (firewall) или прокси-сервером;
ccb8e9a12e2f Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 288
diff changeset
111 к таким значениям относятся строки, не начинающиеся на
501
3878cc99d454 Bring ngx_http_referer_module docs up to date, including:
Ruslan Ermilov <ru@nginx.com>
parents: 490
diff changeset
112 “<literal>http://</literal>” или “<literal>https://</literal>”;
356
ccb8e9a12e2f Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 288
diff changeset
113 </tag-desc>
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
114
356
ccb8e9a12e2f Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 288
diff changeset
115 <tag-name><literal>server_names</literal></tag-name>
ccb8e9a12e2f Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 288
diff changeset
116 <tag-desc>
ccb8e9a12e2f Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 288
diff changeset
117 в поле <header>Referer</header> заголовка запроса указано одно
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
118 из имён сервера;
356
ccb8e9a12e2f Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 288
diff changeset
119 </tag-desc>
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
120
356
ccb8e9a12e2f Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 288
diff changeset
121 <tag-name>произвольная строка</tag-name>
ccb8e9a12e2f Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 288
diff changeset
122 <tag-desc>
ccb8e9a12e2f Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 288
diff changeset
123 задаёт имя сервера и необязательное начало URI.
ccb8e9a12e2f Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 288
diff changeset
124 В начале или конце имени сервера может быть “<literal>*</literal>”.
ccb8e9a12e2f Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 288
diff changeset
125 При проверке порт сервера в поле <header>Referer</header> игнорируется;
ccb8e9a12e2f Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 288
diff changeset
126 </tag-desc>
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
127
356
ccb8e9a12e2f Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 288
diff changeset
128 <tag-name>регулярное выражение</tag-name>
ccb8e9a12e2f Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 288
diff changeset
129 <tag-desc>
ccb8e9a12e2f Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 288
diff changeset
130 в начале должен быть символ “<literal>~</literal>”.
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
131 Необходимо учитывать, что на совпадение с выражением будет проверяться
501
3878cc99d454 Bring ngx_http_referer_module docs up to date, including:
Ruslan Ermilov <ru@nginx.com>
parents: 490
diff changeset
132 текст, начинающийся после “<literal>http://</literal>”
3878cc99d454 Bring ngx_http_referer_module docs up to date, including:
Ruslan Ermilov <ru@nginx.com>
parents: 490
diff changeset
133 или “<literal>https://</literal>”.
356
ccb8e9a12e2f Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 288
diff changeset
134 </tag-desc>
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
135
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
136 </list>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
137 </para>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
138
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
139 <para>
356
ccb8e9a12e2f Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 288
diff changeset
140 Пример:
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
141 <example>
356
ccb8e9a12e2f Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 288
diff changeset
142 valid_referers none blocked server_names
490
9913f1d51c07 Replaced "nginx" domain names with example domains.
Ruslan Ermilov <ru@nginx.com>
parents: 364
diff changeset
143 *.example.com example.* www.example.org/galleries/
356
ccb8e9a12e2f Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 288
diff changeset
144 ~\.google\.;
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
145 </example>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
146 </para>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
147
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
148 </directive>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
149
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
150 </section>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
151
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
152 </module>