[archive] Dépôt et téléchargement de fichiers, site DL en PHP

Ici se trouvent divers logiciels faits maison, ou des logiciels libres modifiés (c'est précisé dans ce cas).
Etre_Libre
Administrateur
Messages : 629
Inscription : 13 novembre 2012, 21:44

[archive] Dépôt et téléchargement de fichiers, site DL en PHP

Message par Etre_Libre » 11 juillet 2013, 10:42

Si vous connaissez les services comme dl.free.fr ou encore demo.ovh.eu le logiciel suivant peut éventuellement vous intéresser, selon votre usage :

"Serveur DL" permet de créer son propre service de dépôt et téléchargement de fichiers, via HTTP (un simple navigateur web suffit donc).

Vu la limite des hébergements mutualités, ce logiciel aurait peu d'intérêt dans ce cas.

Par contre, avec un serveur dédié, aucun problème, vous pouvez envoyer de gros fichiers de plusieurs Go en ligne, et ensuite les diffuser aux personnes de votre choix.

Par défaut, je conseille d'utiliser une authentification HTTP (avec syntaxe indiquée dans le .htaccess) afin que le dépôt ne soit pas public.
Dans tous les cas, le téléchargement est public, mais il faut avoir le lien nécessaire pour télécharger un fichier, on ne peut pas prendre comme on veut dans le serveur.

Voici l'apparence de la page d'accueil :
Image

La page d'accueil par défaut utilise un envoi en Flash + Javascript, ce qui permet de voir le suivi de l'envoi.

Il existe aussi une page alternative, indiquée en bas de la page principale, et qui ressemble fortement :
Image

Une fois l'envoi terminé, on obtient quelque chose comme :
Image

Avec ce logiciel, on défini un nombre de jours pendant lequel le fichier va être gardé en ligne.

Aussi, il est bon de savoir que si quelqu'un télécharge ce fichier, le compteur est remis au maximum du nombre de jours de rétention prévu au départ.

Exemple : un fichier avec compteur à 30 jours. Au bout de 25 jours, quelqu'un télécharge le fichier. Le compteur repart à 30 jours ; cela peut donc durer longtemps.
Néanmoins, la personne qui a déposé le fichier peut le supprimer à tout moment, via un lien affiché à l'écran lors de l'envoi ou encore via le lien reçu par email (si un email a été donné, car c'est facultatif).

Au niveau de la base de données MySQL (compatible MariaDB, car les logiciels sont très proches), on obtient ce type d'entrées :
Image

Et quand on lance le script de nettoyage "nettoyage_dl.php" on peut voir :
Image


Téléchargement du logiciel Serveur DL, version 1.0 du 09/07/2013


Installation du logiciel

Prérequis :

- Hébergement avec PHP et MySQL (ou MariaDB) et support conseillé pour les .htaccess
- Accès recommandé aux paramètres du php.ini
- Accès à cron (Linux) ou au planificateur de tâches (Windows)
- Version de PHP récente (j'ai testé en 5.4.x et 5.5.x)
- Support PDO MySQL dans PHP


Dès le début, créer une base de données SQL si vous n'en avez pas encore, avec votre hébergement ou serveur.

Ensuite, importer dedans le fichier "dl_structure.sql" qui contient la structure de la table SQL nécessaire.

Paramétrer le fichier "conf.php" avec vos réglages, comme :

- Hôte MySQL / MariaDB
- Utilisateur MySQL / MariaDB, et mot de passe
- Nom de la base de donnée utilisée
- Nom de la table utilisée (déjà ok par défaut)

Aussi, il y a :
$nettoyage_dl_cli --> si "false" c'est que vous exécutez "nettoyage_dl.php" via HTTP, par exemple depuis l'IP 127.0.0.1 ou autre si dans le .htaccess principal vous donnez plus d'accès.
Si "true" c'est que vous exécutez "nettoyage_dl.php" directement en ligne de commande via PHP et cron ou le planificateur de tâches.

$nettoyage_dl_mail --> envoie ou non un email pour donner un résumé du nettoyage effectué ce jour.

$nom_serveur_auto --> détecte le nom de votre serveur, ou à défaut utilise la variable $nom_serveur_manuel.

Dans le php.ini de votre serveur, définir les paramètres suivants :

- post_max_size ("M" pour Mo/MB et "G" pour Go/GB, avec la taille maximum pour les envois)
- upload_max_filesize (idem)
- et si nécessaire, augmenter le max_execution_time à 60 secondes
Note : en théorie, il semble utile de mettre un "post_max_size" légèrement plus grand que le "upload_max_filesize" car le 1er contient quelques paramètres et variables en plus du fichier en lui-même, donc si jamais on envoie un fichier pile de la taille maximum ça risque de ne pas être envoyé si on ne le fait pas.
Si on reste un peu en-dessous du maximum, aucun problème dans tous les cas.


Enfin, pour le .htaccess principal (qui se trouve à la racine), si vous utilisez l'authentification HTTP, vous devez modifier le "AuthUserFile" avec le chemin vers le .htpasswd que vous aurez créé.

Si vous n'utilisez pas l'authentification HTTP, vous pouvez supprimer de "AuthUserFile" à "</Limit>" en haut du .htaccess, et même garder uniquement la partie qui parle du fichier "nettoyage_dl.php".

Personnellement, j'utilise ce Serveur DL avec authentification, pour mon propre usage.

Aussi, je ne conseille pas de le mettre en public ou soyez bien vigilant si vous le faites, car vous risquez vite de devenir un hébergeur de tout et n'importe quoi...
Pour ma part, je ne suis pas neutre, je suis partial, j'héberge donc uniquement ce qui me semble juste.

Verrouillé