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 module is distributed with ProFTPD. 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>