######################################################################
# OPTION GLOBAL
######################################################################
ServerName "FTP Server"
ServerIdent on "Welcome to my FTP Server"
ServerAdmin yoann@queret.info
ServerType standalone
# Port du server (default 21).
Port 21
DefaultServer on
######################################################################
# PERSONNALISATION DES OPTIONS GLOBAL
######################################################################
# Set the user and group that the server normally runs at.
User nobody
Group nogroup
# On authorise le FXP
AllowForeignAddress on
# On active le resume
AllowStoreRestart on
AllowRetrieveRestart on
# On ne gere pas les reverse DNS (on gagne ainsi du temps a la connexion)
UseReverseDNS off
# On ne demande pas a recuperer le nom du client FTP (ici aussi on gagne du temps a la connexion)
IdentLookups off
# On ne demande pas de shell valid (nos utilisateurs sont stocker en base de données)
RequireValidShell off
# Pour prevenir des attack DOS on defini le nombre de process
MaxInstances 30
# On definie le timeout
TimeoutNoTransfer 300
TimeoutStalled 600
TimeoutIdle 1200
# On defini le fichier charger au login, et celui au charger lors des acces au nouveau repertoire
DisplayLogin welcome.msg
DisplayFirstChdir .message
# Umask 022 is a good standard umask to prevent new files and dirs
# (second parm) from being group and world writable.
Umask 022 022
# On respecte la RFC2228
MultilineRFC2228 on
# On desactive le suivi des liens symbolique afin d'éviter aux utilisateurs de créer des liens vers des repertoires auxquels on ne veux pas qu'il ai accès
ShowSymlinks off
# On spécifie un option permettant de lister les fichiers
ListOptions "-l"
# On empeche de remonter au dela tu repertoire de login
DefaultRoot ~
######################################################################
# LOG DANS FICHIERS
######################################################################
SyslogLevel emerg
SystemLog /var/log/proftpd/proftpd.system.log
LogFormat default "%h %l %u %t \"%r\" %s %b"
LogFormat auth "%v [%P] %h %t \"%r\" %s"
LogFormat write "%h %l %u %t \"%r\" %s %b"
# Log file/dir access
ExtendedLog /var/log/proftpd/proftpd.access_log WRITE,READ write
# Record all logins
ExtendedLog /var/log/proftpd/proftpd.auth_log AUTH auth
# Paranoia logging level....
ExtendedLog /var/log/proftpd/proftpd.paranoid_log ALL default
######################################################################
# MYSQL
######################################################################
AllowAll
SQLHomedirOnDemand on
SQLAuthTypes Crypt
SQLAuthenticate users*
SQLConnectInfo ftp@localhost
SQLUserInfo users login passwd uid gid homedir shell
SQLUserWhereClause "disabled!=1 and (NOW()<=expire or never_expire=1)"
######################################################################
# Statistiques par Login
######################################################################
# Incremente le champ login_count de 1 a chaque nouvelle connexion
SQLLog PASS logincount
SQLNamedQuery logincount UPDATE "login_count=login_count+1 WHERE login='%u'" users
# Mes à jours le champ last_login avec la derniere date de connexion
SQLLog PASS lastlogin
SQLNamedQuery lastlogin UPDATE "last_login=now() WHERE login='%u'" users
# Incremente le champ dl_bytes de la quatité de données téléchargées
SQLLog RETR dlbytescount
SQLNamedQuery dlbytescount UPDATE "dl_bytes=dl_bytes+%b WHERE login='%u'" users
# Incremente le champ dl_count de 1 a chaque nouveau téléchargement de fichiers
SQLLog RETR dlcount
SQLNamedQuery dlcount UPDATE "dl_count=dl_count+1 WHERE login='%u'" users
# Incremente le champ ul_bytes de la quatité de données uploader
SQLLog STOR ulbytescount
SQLNamedQuery ulbytescount UPDATE "ul_bytes=ul_bytes+%b WHERE login='%u'" users
# Incremente le champ ul_count de 1 a chaque nouveau upload de fichiers
SQLLog STOR ulcount
SQLNamedQuery ulcount UPDATE "ul_count=ul_count+1 WHERE login='%u'" users
######################################################################
# LOG DANS MYSQL
######################################################################
SQLLog RETR,STOR,DELE transfert
SQLNamedQuery transfert INSERT "'%u', '%f', '%b', '%h', '%a', '%m', '%T',now(), 'ok'" log_transfert
SQLLOG ERR_RETR,ERR_STOR,ERR_DELE errortransfert
SQLNamedQuery errortransfert INSERT "'%u', '%f', '%b', '%h', '%a', '%m', '%T',now(), 'error'" log_transfert
######################################################################
# LIMITATION DE BANDE PASSANTE (Valeur en KiloOctets)
######################################################################
# Limite en download (du serveur vers le client)
# Apres avoir downloader 3Mo (3145728 Octets), on limite la bande passante a 256 Kilo Octets
TransferRate RETR 256:3145728
# Limite en upload (du client vers le serveur)
# Apres avoir uploader 10Mo (10485760 Octets), on limite la bande passante a 512 Kilo Octets
TransferRate APPE,STOR 512:10485760