mod_renamemod_rename.c file for
ProFTPD 1.2, and is not compiled by default. Comments on the
usage of this module follow. Installation instructions
are discussed here.
The most current version of mod_rename can be found at:
http://www.castaglia.org/proftpd/
Please contact TJ Saunders <tj at castaglia.org> with any questions, concerns, or suggestions regarding this module.
2001-12-22: Thanks to Terry Davis <tdavis at birddog.com> for all his help in developing this module
<VirtualHost>, <Global>
The RenameEngine directive turns on or off
mod_rename's renaming engine. Use this directive to disable the
module, rather than commenting all mod_rewrite directives.
<Directory>, .ftpaccess
The RenameFilter directive is used to configure a regular
expression that the name of a file being uploaded must match in order to
qualify for renaming. If no RenameFilter is given, all uploaded
files are eligible to be renamed.
If the special filter "duplicate" is used, it means to apply the renaming rules to the uploaded file only if that filename is a duplicate of an already existing filename in that directory.
If the special filter "none" is used, it means that no filter must be
matched for the renaming rules to apply to uploaded files. This is used to
remove any RenameFilters inherited from parent directories.
The optional filter-opts parameter can be used to configure the following filter options:
See Also: RenameTarget
<VirtualHost>, <Global>
The RenameLog directive is used to specify a log file for
mod_rename's reporting on a per-server basis. The file
parameter given must be the full path to the file to use for logging.
If no log file is given, the module will log messages at debug level 3. If
the file given is "none", no logging will be done at all;
this setting can be used to override a RenameLog inherited from a
<Global> context.
<Directory>, .ftpaccess
The RenamePrefix directive is used to specify some text
that will be prepended to the name to which an eligible file is renamed
(e.g. "/home/bob/tmpfile" would become
"/home/bob/new.tmpfile" if "RenamePrefix new."
was configured).
The special character ~ may be used in text. It will be
expanded to the current username when files are renamed.
The special character # may be used in text. It will be
expanded to a number when file are renamed. This number is determined as
follows: if a file of the name that mod_rename wants to use
already exists, # will be set to "1". For example,
with RenamePrefix #., if file "foo" is uploaded (and
already exists in the destination directory), the module will attempt to
rename the file to "1.foo". The next time file "foo" is
uploaded, it will be renamed to "2.foo" (assuming that file
"1.foo" has not been deleted in the meantime).
<Directory>, .ftpaccess
The RenameSuffix directive is used to specify some text
that will be apppended to the name of the file to which an eligible file is
renamed (e.g. "/home/bob/tmpfile" would become
"/home/bob/tmpfile.renamed" if
"RenameSuffix .renamed" was configured).
The special character ~ may be used in text. It will be
expanded to the current username when files are renamed.
The special character # may be used in text. It will be
expanded to a number when the file is renamed. This number is determined as
follows: if a file of the name that mod_rename wants to use
already exists, # will be set to "1". For example,
with RenameSuffix .#, if file "foo" is uploaded (and
already exists in the destination directory), the module will attempt to
rename the file to name "foo.1". The next time file "foo"
is uploaded, it will be renamed to "foo.2" (assuming that file
"foo.1" has not been deleted in the meantime).
<Directory>, .ftpaccess
The RenameTarget directive is used to restrict the application of
the renaming rules only to specific users. If the "user"
restriction is given, then expression is a user-expression specifying which
users' files will be renamed. Similarly for the "group"
restriction. For the "class" restriction, the expression is simply
the (single) name of the connection Class on which renaming will be used.
In the case of multiple RenameTarget directives for a single
directory, each with a different restriction, the restrictions will be applied
in the following order of precedence: "user", then
"group", then "class". If no restriction was used,
renaming will apply to everyone. If this sort of functionality is desired, it
is best to write directives in this order (see example).
Example:
# These renaming rules are only to apply to MP3 files. RenameFilter \.mp3$ # Rename files for everyone but user bob RenameTarget user !bob # Add a suffix to all files being renamed RenameSuffix .untrusted
See Also: RenameFilter,
RenamePrefix,
RenameSuffix
RNFR or
RNTO FTP commands. It works by adjusting the name of the file
being STORed by the client behind the scenes, before the transfer
of the content of the file has started. One of the consequences is that the
renamed path may run afoul of any configured AllowFilter,
DenyFilter, PathAllowFilter, or
PathDenyFilter directives, causing unexpected or unwanted
problems. Please keep this in mind when configuring prefices and suffices.
In the case where both RenamePrefix and RenameSuffix
are configured, and both configured strings contain the special
# character, and a file of the name to use exists, both
occurrences of # will be incremented.
mod_rename, copy the mod_rename.c file into
proftpd-dir/contrib/after unpacking the latest proftpd-1.2 source code. Then follow the usual steps for using third-party modules in proftpd:
./configure --with-modules=mod_rename make make install