C'est une extension permettant de mettre à disposition des fichier en téléchargement sans que ces derniers puissent être directement accessible.
Sommaire |
[modifier] Installation
- Téléchargez l'archive contenant l'extension (indisponible pour le moment)
- Décompressez la dans votre répertoire extensions :
** extensions/ProtectedDownload/ *** ProtectedDownload.php *** ProtectedDownload_body.php *** ProtectedDownload.i8n.php *** ProtectedFile.php *** DownloadController.php *** README.art122-5
- Créer le répertoire d'upload
- En dehors de l'arborescence WEB (si possible)
- Il doit être accessible par PHP (vérifier open_basedir)
- Apache doit pouvoir écrire dedans
- Propriétaire un autre utilisateur, droit sur le groupe (à privilégier)
- Propriétaire apache, droit sur l'utilisateur
- On banni l'idée de donner les droits d'écriture à other !
// uploadrep est le path absolu du répertoire en question //Propriétaire un autre utilisateur chgrp apache uploadrep chmod ug=rwx,o-w uploadrep //Propriétaire Apache chown apache uploadrep chmod u=rwx,go-w uploadrep
- Ajouter les tables dans la base de données
-- -- Structure de la table `wiki_pd_content` -- DROP TABLE IF EXISTS `wiki_pd_content`; CREATE TABLE `wiki_pd_content` ( `filename` varchar(128) NOT NULL, `size` int(10) unsigned default NULL, `upload_date` datetime default NULL, `downloaded` int(10) unsigned default '0', `displayed` int(10) unsigned default '0', PRIMARY KEY (`filename`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -------------------------------------------------------- -- -- Structure de la table `wiki_pd_content_link` -- DROP TABLE IF EXISTS `wiki_pd_content_link`; CREATE TABLE `wiki_pd_content_link` ( `code` varchar(255) NOT NULL, `creation_date` datetime default NULL, `filename` varchar(45) NOT NULL, PRIMARY KEY (`code`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
- Activez l'extension et ajustez sa configuration dans LocalSettings.php
$wgPDUploadDirectory= '...'; $wgPDDownloadUrl='/ProtectedDownload/_CODEFILE_/_CODEPAGE_/_FILENAME_'; require_once( "$IP/extensions/ProtectedDownload/ProtectedDownload.php" );
- règle de réécriture d'URL
Histoire de présenter une URL plus "friendly", on va réécrire l'url à l'aide du module apache mod_rewrite. Dans le .htacces à la racine du Wiki :
RewriteEngine on RewriteRule ProtectedDownload/([^/]*)/([^/]*)/(.*) /extensions/ProtectedDownload/DownloadController.php?code_file=$1&code_page=$2&filename=$3 [L]
Si tout a correctement été fait, l'extension doit être visible dans les pages spéciales, la page de version et doit être accessible via Special:ProtectedDownload
[modifier] Configuration
[modifier] $wgPDUploadDirectory
C'est le chemin absolu du répertoire qui contiendra les fichiers Uploader. Comme indiquer dans l'installation, il doit donc être accessible en écriture par Apache et PHP, mais n'a pas besoin d'être accessible en consultation depuis une URL. On va donc privilégier la solution de le mettre en dehors de l'arborescence WEB, et sinon le protéger via un .htaccess dans le répertoire (en lecture seule, surtout pour apache)
deny from all
[modifier] $wgPDDownloadUrl
C'est l'URL qui sera appelée pour télécharger un fichier. Elle comporte 3 mots clés qui seront remplacés lors de l'exécution :
- _CODEFILE_ : le code temporaire du fichier
- _CODEPAGE_ : le code de la page où se trouve le lien
- _FILENAME_ : le nom du fichier à télécharger
En cas de modification de cette variable, pensez à ajuster la RewriteRule.
[modifier] Utilisation
[modifier] Upload d'un fichier
Il faut passer par la page spéciale Special:ProtectedDownload, Il faut être connecter pour pouvoir y accéder. Elle permet de réaliser l'upload du fichier et d'effectuer les contrôles préalable.
[modifier] Création d'un lien
Il suffit d'ajouter le tag suivant dans la page souhaitée :
<ProtectedLink file="nom du fichier">texte du lien</ProtectedLink>
En remplaçant :
- nom du fichier : Le nom du fichier tel qu'entré en base
- texte du lien : le texte du lien
Par exemple : Téléchargez une image de couché de soleil
[modifier] Comportement
Si le lien est "clické" alors qu'il est encore actif (délais de 5 minutes), le fichier désirer est alors téléchargé. Passé ce délai la page affichant le lien est actualisée et le lien redevient valide.
Si une Erreur ce produit, l'utilisateur est redirigé vers la page d'origine du lien.
[modifier] FAQ
- Fichier téléchargé corrompu
Le plus simple est de tester avec un fichier texte, vous observerez alors la présence de lignes vides au début de votre fichier. vérifier les fichiers LocalSettings.php ainsi que les différents fichiers d'extension pour vous assurer qu'il n'y a pas de ligne vide en dehors des tags <?php ?>
