aboutsummaryrefslogtreecommitdiff
path: root/network/pure-ftpd
diff options
context:
space:
mode:
Diffstat (limited to 'network/pure-ftpd')
-rw-r--r--network/pure-ftpd/README25
-rw-r--r--network/pure-ftpd/config/pure-ftpd.conf451
-rw-r--r--network/pure-ftpd/config/rc.pure-ftpd49
-rw-r--r--network/pure-ftpd/doinst.sh26
-rw-r--r--network/pure-ftpd/pure-ftpd.SlackBuild115
-rw-r--r--network/pure-ftpd/pure-ftpd.info10
-rw-r--r--network/pure-ftpd/slack-desc19
7 files changed, 695 insertions, 0 deletions
diff --git a/network/pure-ftpd/README b/network/pure-ftpd/README
new file mode 100644
index 0000000000000..b33f04c50c425
--- /dev/null
+++ b/network/pure-ftpd/README
@@ -0,0 +1,25 @@
+Pure-FTPd is a free (BSD), secure, production-quality and
+standard-conformant FTP server. It doesn't provide useless bells
+and whistles, but focuses on efficiency and ease of use. It provides
+simple answers to common needs, plus unique useful features for personal
+users as well as hosting providers.
+
+You can enable optional (not-autodetected) features by passing variables
+to the script (VAR=yes/no ./pure-ftpd.SlackBuild):
+MYSQL=yes|no (default: no), requires mysql (available in Slackware)
+PGSQL=yes|no (default: no), requires postgresql
+TLS=yes|no (default: no), requires openssl (available in Slackware)
+LANGUAGE=english|german|french ... (default: english,
+see http://download.pureftpd.org/pub/pure-ftpd/doc/README for a complete
+list)
+
+If you want to start the pure-ftpd daemon at boot, add this
+to /etc/rc.d/rc.local
+
+ # Start pure-ftpd:
+ if [ -x /etc/rc.d/rc.pure-ftpd ]; then
+ /etc/rc.d/rc.pure-ftpd start
+ fi
+
+to stop it at shutdown add the same lines, changing "start" with "stop",
+to /etc/rc.d/rc.local_shutdown
diff --git a/network/pure-ftpd/config/pure-ftpd.conf b/network/pure-ftpd/config/pure-ftpd.conf
new file mode 100644
index 0000000000000..7f77064b5a7d5
--- /dev/null
+++ b/network/pure-ftpd/config/pure-ftpd.conf
@@ -0,0 +1,451 @@
+
+############################################################
+# #
+# Configuration file for pure-ftpd wrappers #
+# #
+############################################################
+
+# If you want to run Pure-FTPd with this configuration
+# instead of command-line options, please run the
+# following command :
+#
+# /usr/sbin/pure-config.pl /etc/pure-ftpd/pure-ftpd.conf
+#
+# Please don't forget to have a look at documentation at
+# http://www.pureftpd.org/documentation.shtml for a complete list of
+# options.
+
+# Cage in every user in his home directory
+
+ChrootEveryone yes
+
+
+
+# If the previous option is set to "no", members of the following group
+# won't be caged. Others will be. If you don't want chroot()ing anyone,
+# just comment out ChrootEveryone and TrustedGID.
+
+# TrustedGID 100
+
+
+
+# Turn on compatibility hacks for broken clients
+
+BrokenClientsCompatibility no
+
+
+
+# Maximum number of simultaneous users
+
+MaxClientsNumber 50
+
+
+
+# Fork in background
+
+Daemonize yes
+
+
+
+# Maximum number of sim clients with the same IP address
+
+MaxClientsPerIP 8
+
+
+
+# If you want to log all client commands, set this to "yes".
+# This directive can be duplicated to also log server responses.
+
+VerboseLog no
+
+
+
+# List dot-files even when the client doesn't send "-a".
+
+DisplayDotFiles yes
+
+
+
+# Don't allow authenticated users - have a public anonymous FTP only.
+
+AnonymousOnly no
+
+
+
+# Disallow anonymous connections. Only allow authenticated users.
+
+NoAnonymous yes
+
+
+
+# Syslog facility (auth, authpriv, daemon, ftp, security, user, local*)
+# The default facility is "ftp". "none" disables logging.
+
+SyslogFacility ftp
+
+
+
+# Display fortune cookies
+
+# FortunesFile /usr/share/fortune/zippy
+
+
+
+# Don't resolve host names in log files. Logs are less verbose, but
+# it uses less bandwidth. Set this to "yes" on very busy servers or
+# if you don't have a working DNS.
+
+DontResolve yes
+
+
+
+# Maximum idle time in minutes (default = 15 minutes)
+
+MaxIdleTime 15
+
+
+
+# LDAP configuration file (see README.LDAP)
+
+# LDAPConfigFile /etc/pure-ftpd/pureftpd-ldap.conf
+
+
+
+# MySQL configuration file (see README.MySQL)
+
+# MySQLConfigFile /etc/pure-ftpd/pureftpd-mysql.conf
+
+
+# Postgres configuration file (see README.PGSQL)
+
+# PGSQLConfigFile /etc/pure-ftpd/pureftpd-pgsql.conf
+
+
+# PureDB user database (see README.Virtual-Users)
+
+# PureDB /etc/pure-ftpd/pureftpd.pdb
+
+
+# Path to pure-authd socket (see README.Authentication-Modules)
+
+# ExtAuth /var/run/ftpd.sock
+
+
+
+# If you want to enable PAM authentication, uncomment the following line
+
+# PAMAuthentication yes
+
+
+
+# If you want simple Unix (/etc/passwd) authentication, uncomment this
+
+UnixAuthentication yes
+
+
+
+# Please note that LDAPConfigFile, MySQLConfigFile, PAMAuthentication and
+# UnixAuthentication can be used only once, but they can be combined
+# together. For instance, if you use MySQLConfigFile, then UnixAuthentication,
+# the SQL server will be asked. If the SQL authentication fails because the
+# user wasn't found, another try # will be done with /etc/passwd and
+# /etc/shadow. If the SQL authentication fails because the password was wrong,
+# the authentication chain stops here. Authentication methods are chained in
+# the order they are given.
+
+
+
+# 'ls' recursion limits. The first argument is the maximum number of
+# files to be displayed. The second one is the max subdirectories depth
+
+LimitRecursion 10000 8
+
+
+
+# Are anonymous users allowed to create new directories ?
+
+AnonymousCanCreateDirs no
+
+
+
+# If the system is more loaded than the following value,
+# anonymous users aren't allowed to download.
+
+MaxLoad 4
+
+
+
+# Port range for passive connections replies. - for firewalling.
+
+# PassivePortRange 30000 50000
+
+
+
+# Force an IP address in PASV/EPSV/SPSV replies. - for NAT.
+# Symbolic host names are also accepted for gateways with dynamic IP
+# addresses.
+
+# ForcePassiveIP 192.168.0.1
+
+
+
+# Upload/download ratio for anonymous users.
+
+# AnonymousRatio 1 10
+
+
+
+# Upload/download ratio for all users.
+# This directive superscedes the previous one.
+
+# UserRatio 1 10
+
+
+
+# Disallow downloading of files owned by "ftp", ie.
+# files that were uploaded but not validated by a local admin.
+
+AntiWarez yes
+
+
+
+# IP address/port to listen to (default=all IP and port 21).
+
+# Bind 127.0.0.1,21
+
+
+
+# Maximum bandwidth for anonymous users in KB/s
+
+# AnonymousBandwidth 8
+
+
+
+# Maximum bandwidth for *all* users (including anonymous) in KB/s
+# Use AnonymousBandwidth *or* UserBandwidth, both makes no sense.
+
+# UserBandwidth 8
+
+
+
+# File creation mask. <umask for files>:<umask for dirs> .
+# 177:077 if you feel paranoid.
+
+Umask 133:022
+
+
+
+# Minimum UID for an authenticated user to log in.
+
+MinUID 100
+
+
+
+# Allow FXP transfers for authenticated users.
+
+AllowUserFXP no
+
+
+
+# Allow anonymous FXP for anonymous and non-anonymous users.
+
+AllowAnonymousFXP no
+
+
+
+# Users can't delete/write files beginning with a dot ('.')
+# even if they own them. If TrustedGID is enabled, this group
+# will have access to dot-files, though.
+
+ProhibitDotFilesWrite no
+
+
+
+# Prohibit *reading* of files beginning with a dot (.history, .ssh...)
+
+ProhibitDotFilesRead no
+
+
+
+# Never overwrite files. When a file whose name already exist is uploaded,
+# it get automatically renamed to file.1, file.2, file.3, ...
+
+AutoRename no
+
+
+
+# Disallow anonymous users to upload new files (no = upload is allowed)
+
+AnonymousCantUpload no
+
+
+
+# Only connections to this specific IP address are allowed to be
+# non-anonymous. You can use this directive to open several public IPs for
+# anonymous FTP, and keep a private firewalled IP for remote administration.
+# You can also only allow a non-routable local IP (like 10.x.x.x) to
+# authenticate, and keep a public anon-only FTP server on another IP.
+
+#TrustedIP 10.1.1.1
+
+
+
+# If you want to add the PID to every logged line, uncomment the following
+# line.
+
+#LogPID yes
+
+
+
+# Create an additional log file with transfers logged in a Apache-like format :
+# fw.c9x.org - jedi [13/Dec/1975:19:36:39] "GET /ftp/linux.tar.bz2" 200 21809338
+# This log file can then be processed by www traffic analyzers.
+
+# AltLog clf:/var/log/pureftpd.log
+
+
+
+# Create an additional log file with transfers logged in a format optimized
+# for statistic reports.
+
+# AltLog stats:/var/log/pureftpd.log
+
+
+
+# Create an additional log file with transfers logged in the standard W3C
+# format (compatible with most commercial log analyzers)
+
+# AltLog w3c:/var/log/pureftpd.log
+
+
+
+# Disallow the CHMOD command. Users can't change perms of their files.
+
+#NoChmod yes
+
+
+
+# Allow users to resume and upload files, but *NOT* to delete them.
+
+#KeepAllFiles yes
+
+
+
+# Automatically create home directories if they are missing
+
+#CreateHomeDir yes
+
+
+
+# Enable virtual quotas. The first number is the max number of files.
+# The second number is the max size of megabytes.
+# So 1000:10 limits every user to 1000 files and 10 Mb.
+
+#Quota 1000:10
+
+
+
+# If your pure-ftpd has been compiled with standalone support, you can change
+# the location of the pid file. The default is /var/run/pure-ftpd.pid
+
+PIDFile /var/run/pure-ftpd.pid
+
+
+
+# If your pure-ftpd has been compiled with pure-uploadscript support,
+# this will make pure-ftpd write info about new uploads to
+# /var/run/pure-ftpd.upload.pipe so pure-uploadscript can read it and
+# spawn a script to handle the upload.
+# Don't enable this option if you don't actually use pure-uploadscript.
+
+#CallUploadScript yes
+
+
+
+# This option is useful with servers where anonymous upload is
+# allowed. As /var/ftp is in /var, it save some space and protect
+# the log files. When the partition is more that X percent full,
+# new uploads are disallowed.
+
+MaxDiskUsage 99
+
+
+
+# Set to 'yes' if you don't want your users to rename files.
+
+#NoRename yes
+
+
+
+# Be 'customer proof' : workaround against common customer mistakes like
+# 'chmod 0 public_html', that are valid, but that could cause ignorant
+# customers to lock their files, and then keep your technical support busy
+# with silly issues. If you're sure all your users have some basic Unix
+# knowledge, this feature is useless. If you're a hosting service, enable it.
+
+CustomerProof yes
+
+
+
+# Per-user concurrency limits. It will only work if the FTP server has
+# been compiled with --with-peruserlimits (and this is the case on
+# most binary distributions) .
+# The format is : <max sessions per user>:<max anonymous sessions>
+# For instance, 3:20 means that the same authenticated user can have 3 active
+# sessions max. And there are 20 anonymous sessions max.
+
+# PerUserLimits 3:20
+
+
+
+# When a file is uploaded and there is already a previous version of the file
+# with the same name, the old file will neither get removed nor truncated.
+# Upload will take place in a temporary file and once the upload is complete,
+# the switch to the new version will be atomic. For instance, when a large PHP
+# script is being uploaded, the web server will still serve the old version and
+# immediatly switch to the new one as soon as the full file will have been
+# transfered. This option is incompatible with virtual quotas.
+
+# NoTruncate yes
+
+
+
+# This option can accept three values :
+# 0 : disable SSL/TLS encryption layer (default).
+# 1 : accept both traditional and encrypted sessions.
+# 2 : refuse connections that don't use SSL/TLS security mechanisms,
+# including anonymous sessions.
+# Do _not_ uncomment this blindly. Be sure that :
+# 1) Your server has been compiled with SSL/TLS support (--with-tls),
+# 2) A valid certificate is in place,
+# 3) Only compatible clients will log in.
+
+# TLS 1
+
+
+# List of ciphers that will be accepted for SSL/TLS connections
+# Prefix with -S: in order to totally disable SSL but not TLS.
+
+# TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3
+
+
+
+# Listen only to IPv4 addresses in standalone mode (ie. disable IPv6)
+# By default, both IPv4 and IPv6 are enabled.
+
+IPV4Only yes
+
+
+
+# Listen only to IPv6 addresses in standalone mode (ie. disable IPv4)
+# By default, both IPv4 and IPv6 are enabled.
+
+# IPV6Only yes
+
+# UTF-8 support for file names (RFC 2640)
+# Define charset of the server filesystem and optionnally the default charset
+# for remote clients if they don't use UTF-8.
+# Works only if pure-ftpd has been compiled with --with-rfc2640
+
+# FileSystemCharset big5
+# ClientCharset big5
diff --git a/network/pure-ftpd/config/rc.pure-ftpd b/network/pure-ftpd/config/rc.pure-ftpd
new file mode 100644
index 0000000000000..418b0e68ade04
--- /dev/null
+++ b/network/pure-ftpd/config/rc.pure-ftpd
@@ -0,0 +1,49 @@
+#!/bin/sh
+# Start/stop/restart pure-ftpd ftp daemon
+
+configfile=/etc/pure-ftpd/pure-ftpd.conf
+pidfile=/var/run/pure-ftpd.pid
+
+pureftpd_start() {
+ if [ -x /usr/sbin/pure-config.pl -a -r "$configfile" ]; then
+ echo "Starting pure-ftpd daemon: "
+ echo "/usr/sbin/pure-config.pl $configfile"
+ /usr/sbin/pure-config.pl $configfile
+ fi
+}
+
+pureftpd_stop() {
+ killall pure-ftpd 2> /dev/null
+ /usr/bin/rm $pidfile 2> /dev/null
+}
+
+pureftpd_restart() {
+ if [ -r "$pidfile" ]; then
+ echo "WARNING: killing listener process only. To kill every pure-ftpd process, you must"
+ echo " use 'rc.pure-ftpd stop'. 'rc.pure-ftpd restart' kills only the parent pure-ftpd"
+ echo " to preserve existing connections. If pure-ftpd has been upgraded, new connections"
+ echo " will now use the new version, which should be a safe enough approach."
+ kill `cat $pidfile`
+ else
+ echo "WARNING: There does not appear to be a parent instance of pure-ftpd running."
+ echo " If you really want to kill all running instances of pure-ftpd (including"
+ echo " any sessions currently in use), run '/etc/rc.d/rc.pure-ftpd stop' instead."
+ exit 1
+ fi
+ sleep 1
+ pureftpd_start
+}
+
+case "$1" in
+'start')
+ pureftpd_start
+ ;;
+'stop')
+ pureftpd_stop
+ ;;
+'restart')
+ pureftpd_restart
+ ;;
+*)
+ echo "usage $0 start|stop|restart"
+esac
diff --git a/network/pure-ftpd/doinst.sh b/network/pure-ftpd/doinst.sh
new file mode 100644
index 0000000000000..50e495056004b
--- /dev/null
+++ b/network/pure-ftpd/doinst.sh
@@ -0,0 +1,26 @@
+config() {
+ NEW="$1"
+ OLD="$(dirname $NEW)/$(basename $NEW .new)"
+ if [ ! -r $OLD ]; then
+ mv $NEW $OLD
+ elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then
+ rm $NEW
+ fi
+}
+preserve_perms() {
+ NEW="$1"
+ OLD="$(dirname $NEW)/$(basename $NEW .new)"
+ if [ -e $OLD ]; then
+ cp -a $OLD ${NEW}.incoming
+ cat $NEW > ${NEW}.incoming
+ mv ${NEW}.incoming $NEW
+ fi
+ config $NEW
+}
+
+preserve_perms etc/rc.d/rc.pure-ftpd.new
+config etc/pure-ftpd/pure-ftpd.conf.new
+config etc/pure-ftpd/pureftpd-ldap.conf.new
+config etc/pure-ftpd/pureftpd-mysql.conf.new
+config etc/pure-ftpd/pureftpd-pgsql.conf.new
+config etc/pure-ftpd/pureftpd.schema.new
diff --git a/network/pure-ftpd/pure-ftpd.SlackBuild b/network/pure-ftpd/pure-ftpd.SlackBuild
new file mode 100644
index 0000000000000..d195cc9382613
--- /dev/null
+++ b/network/pure-ftpd/pure-ftpd.SlackBuild
@@ -0,0 +1,115 @@
+#!/bin/sh
+
+# Slackware build script for pure-ftpd
+
+# Copyright (c) 2012, Christophe Trussardi, Paris, France
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+# 1.- Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY
+# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+PRGNAM=pure-ftpd
+VERSION=${VERSION:-1.0.36}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i486 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+[ "${MYSQL:-no}" = "no" ] || mysql_option="--with-mysql"
+[ "${PGSQL:-no}" = "no" ] || pgsql_option="--with-pgsql"
+[ "${TLS:-no}" = "no" ] || tls_option="--with-tls"
+[ "${LANGUAGE:-english}" = "english" ] || lang_option="--with-language=$LANGUAGE"
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
+cd $PRGNAM-$VERSION
+chown -R root:root .
+chmod -R u+w,go+r-w,a-s .
+
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib$LIBDIRSUFFIX \
+ --sysconfdir=/etc/pure-ftpd \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --docdir=/usr/doc/$PRGNAM-$VERSION \
+ --build=$ARCH-slackware-linux \
+ --with-everything \
+ --without-inetd \
+ --without-capabilities \
+ --without-pam \
+ --with-virtualchroot \
+ $mysql_option $pgsql_option $tls_option $lang_option
+
+make
+make install-strip DESTDIR=$PKG
+
+install -m 0755 configuration-file/pure-config.pl $PKG/usr/sbin/pure-config.pl
+
+mkdir -p $PKG/etc/pure-ftpd $PKG/etc/rc.d
+for configfile in pureftpd-ldap.conf pureftpd-mysql.conf pureftpd-pgsql.conf pureftpd.schema; do
+ install -m 0600 $configfile $PKG/etc/pure-ftpd/$configfile.new
+done
+cat $CWD/config/pure-ftpd.conf > $PKG/etc/pure-ftpd/pure-ftpd.conf.new
+install -m 0755 $CWD/config/rc.pure-ftpd $PKG/etc/rc.d/rc.pure-ftpd.new
+
+find $PKG/usr/man -type f -exec gzip -9 {} \;
+for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+install -m 0644 \
+ AUTHORS CONTACT COPYING ChangeLog FAQ HISTORY INSTALL NEWS README* THANKS pureftpd* \
+ $PKG/usr/doc/$PRGNAM-$VERSION/
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
diff --git a/network/pure-ftpd/pure-ftpd.info b/network/pure-ftpd/pure-ftpd.info
new file mode 100644
index 0000000000000..1619a10493578
--- /dev/null
+++ b/network/pure-ftpd/pure-ftpd.info
@@ -0,0 +1,10 @@
+PRGNAM="pure-ftpd"
+VERSION="1.0.36"
+HOMEPAGE="http://www.pureftpd.org/"
+DOWNLOAD="http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.36.tar.gz"
+MD5SUM="bbcb48e8aa6ec1abff9775b89f84af91"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES=""
+MAINTAINER="Christophe Trussardi"
+EMAIL="chris@teria.org"
diff --git a/network/pure-ftpd/slack-desc b/network/pure-ftpd/slack-desc
new file mode 100644
index 0000000000000..66bf6149952b2
--- /dev/null
+++ b/network/pure-ftpd/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+pure-ftpd: Pure-FTPd
+pure-ftpd:
+pure-ftpd: Pure-FTPd is a free (BSD), secure, production-quality and
+pure-ftpd: standard-conformant FTP server. It doesn't provide useless bells and
+pure-ftpd: whistles, but focuses on efficiency and ease of use. It provides
+pure-ftpd: simple answers to common needs, plus unique useful features for
+pure-ftpd: personal users as well as hosting providers.
+pure-ftpd:
+pure-ftpd:
+pure-ftpd: Homepage: http://www.pureftpd.org/
+pure-ftpd: