1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236
|
<!-- $Id: mod_lang.html,v 1.7 2009/12/11 01:06:18 castaglia Exp $ -->
<!-- $Source: /cvsroot/proftp/proftpd/doc/modules/mod_lang.html,v $ -->
<html>
<head>
<title>ProFTPD module mod_lang</title>
</head>
<body bgcolor=white>
<hr>
<center>
<h2><b>ProFTPD module <code>mod_lang</code></b></h2>
</center>
<hr><br>
<p>
<b>Internalization and Localization</b><br>
The <code>mod_lang</code> module is ProFTPD's module for handling the LANG
and OPTS UTF8 commands, in support of <a href="http://www.faqs.org/rfcs/rfc2640.html">RFC 2640</a>. The <code>mod_lang</code> module also supports character
sets other than UTF8, for those sites which do not require RFC2640 support, but
<i>do</i> use character sets other than ASCII. This module is contained in the
<code>mod_lang.c</code> file for ProFTPD 1.3.<i>x</i>, and is compiled in
whenever the <code>--enable-nls</code> configure option is used. Installation
instructions are discussed <a href="#Installation">here</a>. Examples
of using <code>mod_lang</code> for various encodings and character sets can
be seen <a href="#Usage">here</a>.
<p>
The most current version of <code>mod_lang</code> can be found in the
ProFTPD source distribution:
<pre>
<a href="http://www.proftpd.org/">http://www.proftpd.org/</a>
</pre>
<h2>Directives</h2>
<ul>
<li><a href="#LangDefault">LangDefault</a>
<li><a href="#LangEngine">LangEngine</a>
<li><a href="#LangPath">LangPath</a>
<li><a href="#UseEncoding">UseEncoding</a>
</ul>
<p>
<hr>
<h2><a name="LangDefault">LangDefault</a></h2>
<strong>Syntax:</strong> LangDefault <em>language</em><br>
<strong>Default:</strong> LangDefault en_US<br>
<strong>Context:</strong> "server config", <code><VirtualHost></code>, <code><Global></code><br>
<strong>Module:</strong> mod_lang<br>
<strong>Compatibility:</strong> 1.3.1rc1
<p>
The <code>LangDefault</code> directive is used to specify the default
language of specific server configuration. Note that the specified language
must be listed in the output from:
<pre>
$ locale -a
</pre>
<p>
Example:
<pre>
<IfModule mod_lang.c>
# Set the default to be Italian
LangDefault it_IT
</IfModule>
</pre>
<p>
<hr>
<h2><a name="LangEngine">LangEngine</a></h2>
<strong>Syntax:</strong> LangEngine <em>on|off</em><br>
<strong>Default:</strong> LangEngine on<br>
<strong>Context:</strong> "server config", <code><VirtualHost></code>, <code><Global></code><br>
<strong>Module:</strong> mod_lang<br>
<strong>Compatibility:</strong> 1.3.1rc1
<p>
The <code>LangEngine</code> directive enables or disables the module's
handling of the LANG command. If it is set to <em>off</em> this module does no
localization of responses.
<p>
<b>Note</b> that setting <code>LangEngine</code> to <em>off</em> also keeps
<code>proftpd</code> from advertisting "UTF8" in its <code>FEAT</code> response.
As required by RFC 2640, <code>proftpd</code> can <i>only</i> show "UTF8"
in response to a <code>FEAT</code> command if the <code>LANG</code> command
is also supported. Hence why it is the <code>LangEngine</code> directive,
and not <code>UseUTF8</code>, which controls the appearance of "UTF8".
<p>
<hr>
<h2><a name="LangPath">LangPath</a></h2>
<strong>Syntax:</strong> LangPath <em>path</em><br>
<strong>Default:</strong> None<br>
<strong>Context:</strong> "server config"<br>
<strong>Module:</strong> mod_lang<br>
<strong>Compatibility:</strong> 1.3.1rc1
<p>
The <code>LangPath</code> directive is used to configure an alternative
directory from which <code>mod_lang</code> will load locale files. By
default, <code>mod_lang</code> uses <em>$prefix</em>/<code>locale/</code>,
where <em>$prefix</em> is where you installed <code>proftpd</code>,
<i>e.g.</i> <code>/usr/local/</code>.
<p>
The <em>path</em> parameter must be an absolute path.
<p>
Example:
<pre>
LangPath /etc/proftpd/locale
</pre>
<p>
Example:
<pre>
LangPath /path/to/ftpd/locale
</pre>
<p>
<hr>
<h2><a name="UseEncoding">UseEncoding</a></h2>
<strong>Syntax:</strong> UseEncoding <em>on|off|local-charset client-charset</em><br>
<strong>Default:</strong> None<br>
<strong>Context:</strong> "server config", <code><VirtualHost></code>, <code><Global></code><br>
<strong>Module:</strong> mod_lang<br>
<strong>Compatibility:</strong> 1.3.2rc1
<p>
The <code>UseEncoding</code> directive is used to explicitly configure which
character sets should be used for encoding. By default, the
<code>mod_lang</code> will automatically discover the local character set,
and will use UTF8 for the client character set. The module will also allow
the use of UTF8 encoding to be changed by clients using the OPTS UTF8 command
(as per RFC2640). However, if the <code>UseEncoding</code> directive is
explicitly used to indicate the character sets to use (or not use), then any
OPTS UTF8 commands used by clients will be refused.
<p>
For example, to disable all use of encoding, use the following in your
<code>proftpd.conf</code>:
<pre>
UseEncoding off
</pre>
Similarly, to enable use of UTF8 encoding and to <i>not</i> allow clients
to change the use of UTF8, you would use:
<pre>
UseEncoding on
</pre>
<p>
In addition to the <em>on|off</em> parameters, the <code>UseEncoding</code>
directive allows administrators to specify exactly which character sets
to use locally (<i>i.e.</i> for paths on local disks) and for dealing with
clients. One such usage this way might look like:
<pre>
UseEncoding koi8-r cp1251
</pre>
For a full list of the character sets which are supported, use:
<pre>
$ iconv --list
</pre>
<p>
<hr>
<h2><a name="Installation">Installation</a></h2>
The <code>mod_lang</code> module is distributed with ProFTPD. To enable use
of NLS (Natural Language Support) in your <code>proftpd</code> daemon, use the
<code>--enable-nls</code> configure option:
<pre>
./configure --enable-nls
make
make install
</pre>
This option causes <code>mod_lang</code> to be compiled into
<code>proftpd</code>.
<p>
<hr>
<h2><a name="Usage">Usage</a></h2>
<p>
One common request of <code>proftpd</code> is to properly handle Cyrillic
characters in file and directory names. The usual character sets which
contain Cyrillic characters use the same codes as used for Telnet
control codes, unfortunately. RFC959 (which defines FTP) mandates that the
Telnet control codes be supported in FTP implementations.
<p>
The <code>mod_lang</code> module, however, can be used to deal with this
situation. <b><i>If</i></b> the <a href="#UseEncoding">UseEncoding</code></a>
directive is used to translate between local and client character sets,
<i>and</i> the client character set is one of the known Cyrillic character
sets, then <code>proftpd</code> will disable support of the Telnet control
codes.
<p>
To make a long explanation short, if you want to use Cyrillic characters
in paths with <code>proftpd</code>, compile your <code>proftpd</code>
using the <code>--enable-nls</code> configure option (to enable the use
of <code>mod_lang</code>), then use something like the following in your
<code>proftpd.conf</code>:
<pre>
<IfModule mod_lang.c>
UseEncoding utf8 cp1251
</IfModule>
</pre>
The current list of character sets for which Telnet code support is disabled
is listed below; the names are <b>not</b> case-sensitive:
<ul>
<li>cp866
<li>cp1251
<li>iso-8859-1
<li>koi8-r
<li>windows-1251
</ul>
<p>
<hr><br>
Author: <i>$Author: castaglia $</i><br>
Last Updated: <i>$Date: 2009/12/11 01:06:18 $</i><br>
<br><hr>
<font size=2><b><i>
© Copyright 2006-2008 TJ Saunders<br>
All Rights Reserved<br>
</i></b></font>
<hr><br>
</body>
</html>
|