UploadTool : Mise en place d'un outil d'échange de fichiers via Apache
Contents
1 Introduction
Je cherchais pour la boite dans laquelle je bosse, un soft qui permet de faire du transfert de fichiers avec de l'authentification mais juste au niveau de l'upload. J'ai donc trouvé UploadTool.
2 Installation
Téléchargez donc l'archive upload.tar.gz 1.0 et décompressez la :
wget http://belnet.dl.sourceforge.net/sourceforge/uploadtool/upload.tar.gz tar -xzvf upload.tar.gz
Ensuite, nous allons tout balancer dans notre apache, puis attribuer les bons droits :
mv upload /var/www chown -Rf www-data. /var/www/upload
3 Configuration
Pour configurer la bête, c'est assez simple, il suffit d'aller sur l'url de votre site suivit d'upload. Ex : http://www.mydomain.com/upload.
Créez votre compte root puis les utilisateurs qui auront accès à l'upload.
3.1 Protections des dossiers pubs
Pour se protéger du listing des fichiers uploadés, je vous propose un petit redirecteur HTML
3.1.1 Patch d'amélioration
*** bin/common.php 2006-05-08 02:23:34.000000000 +0200 --- bin/common.php 2007-09-03 11:46:22.000000000 +0200 *************** *** 59,67 **** --- 59,70 ---- echo '<td class="report">File Name</td>'; echo '<td class="report">Size</td>'; echo '<td class="report">Date</td>'; + echo '<td class="report">URL to give</td>'; echo '</tr>'; foreach ($files as $filename) { + if ($filename !== "index.html") + { $url = filepath2url($cwd . "/" . $filename); echo "<tr>"; echo "<td>"; *************** *** 78,84 **** --- 81,91 ---- echo "<td>"; echo date ("Y-m-d H:i:s", filemtime($cwd . "/" . $filename)); echo "</td>"; + echo "<td>"; + echo "$url"; + echo "</td>"; echo "</tr>\n"; + } } echo '</table>'; }
Voilà un patch que j'ai créer pour améliorer un peu l'interface. Pour l'appliquez, créer un fichier "upload.patch" que vous mettez dans votre dossier upload, puis exécutez cette commande :
patch -p0 < upload.patch
Admirez le résultat :-)
3.2 Limitations au niveau des uploads
Voici ce qu'il faut rajouter dans son VirtualHost au niveau d'Apache pour pouvoir limiter la taille des fichiers uploadés :
<Directory /> php_value max_execution_time 300 php_value upload_max_filesize 40M php_value post_max_size 40M </Directory> LimitRequestBody 40000000