Serveur Apache HTTP Version 2.4

Apache > Serveur HTTP > Documentation > Version 2.4 > Modules

# Module Apache mod_proxy_ftp

Description: | Module fournissant le support FTP à `mod_proxy`
Statut: | Extension
Identificateur de Module: | proxy_ftp_module
Fichier Source: | mod_proxy_ftp.c

### Sommaire

Pour pouvoir fonctionner, ce module requiert le chargement de `mod_proxy`. Il fournit le support du mandatement des sites FTP. Notez que le support FTP est actuellement limité à la méthode GET.

Ainsi, pour pouvoir traiter les requêtes FTP mandatées, `mod_proxy`, et `mod_proxy_ftp` doivent être chargés dans le serveur.

### Avertissement

N'activez pas la fonctionnalité de mandataire avant d'avoir sécurisé votre serveur. Les serveurs mandataires ouverts sont dangereux non seulement pour votre réseau, mais aussi pour l'Internet au sens large.

### Sujets

- Pourquoi les fichiers du type xxx ne sont-ils pas téléchargeables par FTP ?
- Comment puis-je forcer le téléchargement FTP en mode ASCII du fichier xxx ?
- Comment puis-je effectuer un chargement FTP ?
- Comment puis-je accéder par FTP à des fichiers situés en dehors de mon répertoire home ?
- Comment puis-je dissimuler le mot de passe FTP apparaissant en clair dans la ligne d'URL de mon navigateur ?
- Pourquoi reçois-je un listing de fichiers alors que j'ai demandé le téléchargement d'un fichier ?

### Directives

### Traitement des bugs

- Journal des modifications de httpd
- Problèmes connus
- Signaler un bug

### Voir aussi

- `mod_proxy`

## Pourquoi les fichiers du type xxx ne sont-ils pas téléchargeables par FTP ?

Ce type particulier de fichier n'est probablement pas défini en temps que `application/octet-stream` dans le fichier de configuration mime.types de votre mandataire. La ligne suivante peut y remédier :

    application/octet-stream   bin dms lha lzh exe class tgz taz

Vous pouvez aussi définir par défaut tous les types de fichiers en tant que fichiers binaires :

    ForceType application/octet-stream

## Comment puis-je forcer le téléchargement FTP en mode ASCII du fichier xxx ?

Dans les rares siruations où vous devez télécharger un fichier spécifique en utilisant la méthode de transfert FTP `ASCII` (alors que le mode transfert par défaut est `binary`), vous pouvez modifier le mode de transfert de `mod_proxy` en suffixant la requête avec `;type=a` pour forcer un transfert en mode ASCII (les listings de répertoires FTP sont cependant quant à eux transmis en mode ASCII).

## Comment puis-je effectuer un chargement FTP ?

Actuellement, seule la méthode GET est supportée pour FTP dans mod_proxy. Vous pouvez en revanche utiliser le chargement HTTP (POST or PUT) via un mandataire Apache.

## Comment puis-je accéder par FTP à des fichiers situés en dehors de mon répertoire home ?

Un URI FTP est considéré comme relatif au répertoire home de l'utilisateur connecté. Hélas, vous ne pouvez pas utiliser /../ pour atteindre des répertoires de niveau supérieur, car les points sont interprétés par le navigateur et ne sont donc pas vraiment envoyés au serveur FTP. Pour traiter ce problème, une méthode nommée Squid %2f hack a été implémentée dans le mandataire FTP Apache ; cette solution est aussi utilisée par d'autres serveurs mandataires courants comme le Cache mandataire Squid. En préfixant par `/%2f` le chemin de votre requête, vous pouvez faire en sorte que le mandataire modifie le répertoire FTP racine en `/` (au lieu du répertoire home). Par exemple, pour extraire le fichier `/etc/motd`, vous pourriez utiliser l'URL :

`ftp://utilisateur@serveur/%2f/etc/motd`

## Comment puis-je dissimuler le mot de passe FTP apparaissant en clair dans la ligne d'URL de mon navigateur ?

Apache utilise différentes stratégies pour effectuer une connexion à un serveur FTP à l'aide d'un nom d'utilisateur et d'un mot de passe. En l'absence de nom d'utilisateur et de mot de passe dans l'URL, Apache tente une connexion anonyme auprès du serveur FTP comme suit :

`utilisateur : anonymous
mot de passe : apache_proxy@`

Ceci fonctionne avec tous les serveurs FTP courants configurés pour accepter les connexions anonymes.

Pour une connexion personnalisée avec un nom d'utilisateur spécifique, vous pouvez intégrer ce dernier dans l'URL comme suit :

`ftp://nom-utilisateur@serveur/mon-fichier`

Si le serveur FTP demande un mot de passe pour ce nom d'utilisateur (ce qu'il est censé faire), Apache va renvoyer au client une réponse `401` (Autorisation requise), ce qui fera afficher au navigateur une boîte de dialogue utilisateur/mot de passe. Une fois le mot de passe saisi, la connexion est tentée à nouveau, et si elle réussit, la ressource demandée est présentée. L'avantage de cette procédure réside dans le fait que votre navigateur n'affiche pas le mot de passe en clair, ce qu'il aurait fait si vous aviez utilisé l'URL :

`ftp://nom-utilisateur:mot-de-passe @serveur/mon-fichier`

### Note

Le mot de passe transmis de cette manière n'est pas chiffré lorsqu'il est envoyé. Il transite entre votre navigateur et le serveur mandataire Apache sous la forme d'une chaîne de texte en clair codée en base64, et entre le mandataire Apache et le serveur FTP en texte pur. Vous devez par conséquent réfléchir à deux fois avant d'accéder à votre serveur FTP via HTTP (et d'une manière générale avant d'accéder à vos fichiers personnels via FTP !) sur des canaux non sécurisés, car des oreilles indiscrètes pourraient intercepter votre mot de passe au cours de son transfert.

## Pourquoi reçois-je un listing de fichiers alors que j'ai demandé le téléchargement d'un fichier ?

Apache examine l'URL de la requête afin de permettre la navigation dans les répertoires d'un serveur FTP ainsi que le téléchargement de fichiers. Si elle ressemble à un répertoire, ou contient des caractères génériques ("*?[{~"), alors Apache considère que c'est un listing qui est demandé, et non un téléchargement.

Vous pouvez désactiver le traitement spécial des noms contenant des caractères génériques. Voir à cet effet la directive `ProxyFtpListOnWildcard`.

## Directive ProxyFtpDirCharset

Description: | Définit le jeu de caractères des listings FTP mandatés
Syntaxe: | `ProxyFtpDirCharset jeu-caractères`
Défaut: | `ProxyFtpDirCharset ISO-8859-1`
Contexte: | configuration du serveur, serveur virtuel, répertoire
Statut: | Extension
Module: | mod_proxy_ftp
Compatibilité: | Disponible depuis la version 2.2.7 d'Apache. Déplacé depuis `mod_proxy` à partir de la version 2.3.5 d'Apache

La directive `ProxyFtpDirCharset` permet de définir le jeu de caractères à utiliser pour les listings FTP en HTML générés par `mod_proxy_ftp`.

## Directive ProxyFtpEscapeWildcards

Description: | Les caractères génériques dans les noms de fichiers doivent-ils être échappés lorsqu'ils sont envoyés au serveur FTP ?
Syntaxe: | `ProxyFtpEscapeWildcards [on|off]`
Défaut: | `on`
Contexte: | configuration du serveur, serveur virtuel, répertoire
Statut: | Extension
Module: | mod_proxy_ftp
Compatibilité: | Disponible depuis la version 2.3.3 du serveur HTTP Apache

La directive `ProxyFtpEscapeWildcards` permet de déterminer si les caractères génériques ("*?[{~") que contiennent les noms de fichiers demandés doivent être échappés pas un slash inversé avant d'être envoyés au serveur FTP. Il s'agit du comportement par défaut ; cependant, de nombreux serveurs FTP n'ont aucune connaissance de la notion d'échappement, et tentent de servir le fichier demandé sous sa forme littérale, en incluant les slashes inversés dans son nom.

Définissez cette directive à "off" pour permettre le téléchargement de fichiers dont les noms contiennent des caractères génériques depuis des serveurs FTP qui ne connaissent pas l'échappement des caractères génériques.

## Directive ProxyFtpListOnWildcard

Description: | Les caractères génériques dans les noms de fichiers demandés doivent-ils déclencher l'affichage d'un listing ?
Syntaxe: | `ProxyFtpListOnWildcard [on|off]`
Défaut: | `on`
Contexte: | configuration du serveur, serveur virtuel, répertoire
Statut: | Extension
Module: | mod_proxy_ftp
Compatibilité: | Disponible depuis la version 2.3.3 du serveur HTTP Apache

La directive `ProxyFtpListOnWildcard` permet de déterminer si les caractères génériques ("*?[{~") que contiennent les noms de fichiers demandés provoquent l'affichage d'un listing de fichiers par `mod_proxy_ftp` au lieu de télécharger un fichier. Il s'agit de leur comportement par défaut (valeur on). Définissez cette directive à "off" pour permettre le téléchargement de fichiers même si leur nom contient des caractères génériques.