mod_ifversion
The mod_ifversion module is designed for use in testsuites and
production deployments of proftpd, which may have to deal with
different ProFTPD versions and different configurations.  The
<IfVersion> sections supported by mod_ifversion
allow flexible version checking, including numeric and regular expression
comparisons.
This module is contained in the mod_ifversion.c file for
ProFTPD 1.3.x, and is not compiled by default.  Installation
instructions are discussed here; a discussion
on usage is also available.
The most current version of mod_ifversion is distributed with
the proftpd source code.
Please contact TJ Saunders <tj at castaglia.org> with any questions, concerns, or suggestions regarding this module.
The <IfVersion> section encloses configuration directives
which will be used only if the proftpd version matches the configured criteria.
For normal (numeric) comparisons the version argument has the following
syntax:
major[.minor[.revision[suffix]]]e.g. 1.3.1, 1.3.2a, or 1.3.3rc1. If the minor or revision fields are omitted, they are assumed to be zero. An omitted suffix is assumed to be a stable release, instead of a release candidate (RC) or maintenance release.
The following numerical comparison operators are supported:
| operator | Description | 
| =or== | proftpd version is equal | 
| > | proftpd version is greater than | 
| >= | proftpd version is greater or equal | 
| < | proftpd version is less than | 
| <= | proftpd version is less or equal | 
It is also possible to use regular expressions to match the proftpd version. To use a regular expression, the operators are:
| operator | Description | 
| =or== | version has the form /regex/ | 
| ~ | version has the form regex | 
If you wish to reverse the meaning of the operator, prefix the operator with an exclamation mark (!), e.g.:
  <IfVersion != 1.3.1>
    # Do not use these directives if the version is 1.3.1
  </IfVersion>
If operator is omitted, it is assumed to be =.
mod_ifversion, copy the mod_ifversion.c
file into:
proftpd-dir/contrib/after unpacking the latest proftpd-1.3.x source code. For including
mod_ifversion as a staticly linked module:
./configure --with-modules=mod_ifversionTo build
mod_ifversion as a DSO module:
./configure --enable-dso --with-shared=mod_ifversionThen follow the usual steps:
make make install
For those with an existing ProFTPD installation, you can use the
prxs tool to add mod_ifversion, as a DSO module, to
your existing server:
# prxs -c -i -d mod_ifversion.c
The following examples demonstrate how the mod_ifversion can
be used.
Using a simple numeric comparison:
  <IfVersion >= 1.3.1rc1>
    # Only use these directives for versions greater or equal 1.3.1rc1
  </IfVersion>
Using a regular expression:
  <IfVersion = /^rc[[:digit:]]$/>
    # Only use these directives for RC (release candidate) versions
  </IfVersion>
Using a reversed regular expression (i.e. in this case, meaning "proftpd version does not match this pattern"):
  <IfVersion !~ ^1.3.[012]$>
    # These directives are not for those versions
  </IfVersion>