Blue Flower

Le 16 mai 2020

Sauvegarde automatique des comptes Zimbra:

Cahier des charges:

  1. Détection de tous les comptes par domaine, utilisés sur le serveur zimbra.
  2. Sauvegarde des comptes utilisateurs.
  3. Renommer les sauvegardes.
  4. Gérer les logs
  5. Création d'un mail si problème.
  6. Automatisation avec cron

Bon à savoir: Chaque chapitre reprend la totalité du script précédent.

Téléchargez le script

 

1 Détection de tous les comptes utilisés du serveur zimbra.

La commande sudo /opt/zimbra/bin/zmprov -l gaa (nous nous limiterons à un domaine) renvoie la totalité des comptes du serveur mail. Il nous restera à différencier les comptes "système" des comptes utilisateurs:

sudo nano /var/backup.sh

 Le script:

#!/bin/bash
#
# Declarations des variables a modifier
DATE=$(date +%d/%m/%Y)
HEURED=$(date +%Hh:%Mm:%Ss)
DOMAINE="votre-domaine.fr"
ZIMBRA_CLI_PATH=/opt/zimbra/bin
# Fin des Declarations des variables
#

# Saisie de l'heure de debut
echo "#"
echo "##### Debut de la sauvegarde du" $DATE "a" $HEURED "#####"
for account in $(${ZIMBRA_CLI_PATH}/zmprov -l gaa ${DOMAINE})
do
# Filtre des comptes
if [[ $account =~ 'spam' ]] || [[ $account =~ 'ham' ]] || [[ $account =~ 'virus' ]] || [[ $account =~ 'galsync' ]]
then
echo "Pas de backup pour: $account"
else
echo "$account"
fi
done

Rendre le fichier exécutable:

chmod +x /var/backup.sh

Essai du script (la réponse du serveur prend plusieurs secondes):

cd /var
./backup.sh

 

 

2 Sauvegarde de ces comptes utilisateurs.

Avec la variable account, nous pouvons lancer une sauvegarde:

/opt/zimbra/bin/zmmailbox -z -m notre-compte-a-sauvegarder getRestURL "//?fmt=tgz" > /le-repertoire-de-sauvegarde/mon-backup.tgz

Le répertoire de sauvegarde doit exister, sinon création du rép.

sudo nano /var/backup.sh
#!/bin/bash
#
# Declarations des variables a modifier
BACKUPDIR="/var/testbackup"
DATE=$(date +%d/%m/%Y)
HEURED=$(date +%Hh:%Mm:%Ss)
DOMAINE=""
ZIMBRA_CLI_PATH=/opt/zimbra/bin
# Fin des Declarations des variables
#
# creer le repertoire
if [ ! -d ${BACKUPDIR} ];then
mkdir ${BACKUPDIR}
fi
#
# Saisie de l'heure de debut
echo "#"
echo "##### Debut de la sauvegarde du" $DATE "a" $HEURED "#####"
for account in $(${ZIMBRA_CLI_PATH}/zmprov -l gaa ${DOMAINE})
do
# Filtres des comptes
if [[ $account =~ 'spam' ]] || [[ $account =~ 'ham' ]] || [[ $account =~ 'virus' ]] || [[ $account =~ 'galsync' ]]
then
echo "Pas de backup pour: $account"
else
#echo "$account"
${ZIMBRA_CLI_PATH}/zmmailbox -z -m "$account" getRestURL "//?fmt=tgz" > $BACKUPDIR/"$account".tgz
fi
done

Essai du script. Attention, suivant le nombre de compte et la taille de chaque compte, la réponse du serveur peut prend plusieurs minutes.

cd /var
./backup.sh

A ce stade, nous avons dans le répertoire /var/testbackup les comptes sauvegardés.

 

 

3 gérer les trois dernières sauvegardes de tous les comptes.

Plusieurs stratégies peuvent être choisi. J'ai adopté celle ci:

Si le compte existe et si une sauvegarde existe, alors la renommer en sauvegarde N + 1

sudo nano /var/backup.sh
#!/bin/bash
#
# Declarations des variables a modifier
BACKUPDIR="/var/testbackup"
DATE=$(date +%d/%m/%Y)
HEURED=$(date +%Hh:%Mm:%Ss)
DOMAINE=""
ZIMBRA_CLI_PATH=/opt/zimbra/bin
# Fin des Declarations des variables
#
# creer le repertoire
if [ ! -d ${BACKUPDIR} ];then
mkdir ${BACKUPDIR}
fi
#
# Saisie de l'heure de debut
echo "#"
echo "##### Debut de la sauvegarde du" $DATE "a" $HEURED "#####"
for account in $(${ZIMBRA_CLI_PATH}/zmprov -l gaa ${DOMAINE})
do
# Filtres des comptes
if [[ $account =~ 'spam' ]] || [[ $account =~ 'ham' ]] || [[ $account =~ 'virus' ]] || [[ $account =~ 'galsync' ]]
then
echo "Pas de backup pour: $account"
else
# renaime des backups precedents
file="${BACKUPDIR}"/"${account}"

if [ -e "${file}_2.tgz" ]
then
mv ${file}_2.tgz ${file}_3.tgz
fi
if [ -e "${file}_1.tgz" ]
then
mv ${file}_1.tgz ${file}_2.tgz
fi
if [ -e "${file}.tgz" ]
then
mv ${file}.tgz ${file}_1.tgz
fi
# sauvegardes
# Pour ne pas refaire encore une sauvegarde, j'ai commenté la ligne suivante

# ${ZIMBRA_CLI_PATH}/zmmailbox -z -m "$account" getRestURL "//?fmt=tgz" > $BACKUPDIR/"$account".tgz
fi
done

Essai du script.

cd /var
./backup.sh

 

 

3 Remplir un fichier de log.

Pour écrire les journaux, nous utiliserons la commande exec qui gère les entrés et sorties.


exec 1>> mon-repertoire/backup-mail.log

 Redirige les sortie à la fin du fichier de log


exec 2>> mon-repertoire/error.log

 Redirige les erreurs à la fin du fichier de log

 

sudo nano /var/backup.sh
#!/bin/bash
#
# Declarations des variables a modifier
BACKUPDIR="/var/testbackup"
BACKUPLOG="/var/log/sauvegardes-test"
DATE=$(date +%d/%m/%Y)
HEURED=$(date +%Hh:%Mm:%Ss)
DOMAINE=""
ZIMBRA_CLI_PATH=/opt/zimbra/bin
# Fin des Declarations des variables
total_erreur=0
# creer les 2 repertoire (log et backup)
if [ ! -d ${BACKUPLOG} ];then
mkdir ${BACKUPLOG}
fi
if [ ! -d ${BACKUPDIR} ];then
mkdir ${BACKUPDIR}
fi
# toute sortie sont logger
exec 1>> ${BACKUPLOG}/backup-mail.log
exec 2>> ${BACKUPLOG}/error.log
# Saisie de l'heure de debut
echo "#"
echo "##### Debut de la sauvegarde du" $DATE "a" $HEURED "#####"
for account in $(${ZIMBRA_CLI_PATH}/zmprov -l gaa ${DOMAINE})
do
# Filtres des comptes
if [[ $account =~ 'spam' ]] || [[ $account =~ 'ham' ]] || [[ $account =~ 'virus' ]] || [[ $account =~ 'galsync' ]]
then
echo "Pas de backup pour: $account"
else
# liste des comptes pour les log
list="$list"'
- '"$account"
# renaime des backups precedents
file="$BACKUPDIR"/"$account"
if [ -e "${file}_2.tgz" ]
then
mv ${file}_2.tgz ${file}_3.tgz
fi
if [ -e "${file}_1.tgz" ]
then
mv ${file}_1.tgz ${file}_2.tgz
fi
if [ -e "${file}.tgz" ]
then
mv ${file}.tgz ${file}_1.tgz
fi
# sauvegardes et j'envoie le resultat vers les fichier de log
${ZIMBRA_CLI_PATH}/zmmailbox -z -m "$account" getRestURL "//?fmt=tgz" > $BACKUPDIR/"$account".tgz 2>> ${BACKUPLOG}/error.log
# si la sortie gener une erreur
if [[ "$?" > 0 ]]
then
((total_erreur++))
fi
fi
done
# si erreur, je log
if [[ "$total_erreur" > 0 ]]
then
echo "#
Il y a eu "$total_erreur" erreur(s) dans la sauvegarde. regarder le fichier: "${BACKUPLOG}"/error.log"
echo "La ligne du dessus est du: "$DATE" a "$HEURED 1>> ${BACKUPLOG}/error.log
fi
echo "#"
echo "Liste des comptes sauvegardés: ${list-account}"
echo "##### Fin de la sauvegarde a" $(date +%Hh:%Mm:%Ss) "#####"

 Essai du script. Attention, suivant le nombre de compte et la taille de chaque compte, la réponse du serveur peut prend plusieurs minutes.

cd /var
./backup.sh

 

Envoie d'un mail si apparition d'un problème.

Nous utiliserons sendmail. Il est donc indispensable que sendmail soit installé est configuré.

Un fichier /tmp/mail-backup.txt est créé, puis il est utilisé pour envoyer le mail.

Pensez à bien renseigner votre mail.

sudo nano /var/backup.sh
#!/bin/bash
#
# Declarations des variables a modifier
BACKUPDIR="/var/testbackup"
BACKUPLOG="/var/log/sauvegardes-test"
DATE=$(date +%d/%m/%Y)
HEURED=$(date +%Hh:%Mm:%Ss)
DOMAINE=""
ZIMBRA_CLI_PATH=/opt/zimbra/bin
#### Mail
SENDMAIL="/usr/sbin/sendmail"
DE="Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.";
A="Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.";
# Fin des Declarations des variables
total_erreur=0
# creer les 2 repertoire (log et backup)
if [ ! -d ${BACKUPLOG} ];then
mkdir ${BACKUPLOG}
fi
if [ ! -d ${BACKUPDIR} ];then
mkdir ${BACKUPDIR}
fi
# toute sortie sont logger
exec 1>> ${BACKUPLOG}/backup-mail.log
exec 2>> ${BACKUPLOG}/error.log
# Saisie de l'heure de debut
echo "#"
echo "##### Debut de la sauvegarde du" $DATE "a" $HEURED "#####"
for account in $(${ZIMBRA_CLI_PATH}/zmprov -l gaa ${DOMAINE})
do
# Filtres des comptes
if [[ $account =~ 'spam' ]] || [[ $account =~ 'ham' ]] || [[ $account =~ 'virus' ]] || [[ $account =~ 'galsync' ]]
then
echo "Pas de backup pour: $account"
else
# liste des comptes pour les log
list="$list"'
- '"$account"
# renaime des backups precedents
file="$BACKUPDIR"/"$account"
if [ -e "${file}_2.tgz" ]
then
mv ${file}_2.tgz ${file}_3.tgz
fi
if [ -e "${file}_1.tgz" ]
then
mv ${file}_1.tgz ${file}_2.tgz
fi
if [ -e "${file}.tgz" ]
then
mv ${file}.tgz ${file}_1.tgz
fi
# sauvegardes et j'envoie le resultat vers les fichier de log
${ZIMBRA_CLI_PATH}/zmmailbox -z -m "$account" getRestURL "//?fmt=tgz" > $BACKUPDIR/"$account".tgz 2>> ${BACKUPLOG}/error.log
# si la sortie gener une erreur
if [[ "$?" > 0 ]]
then
((total_erreur++))
fi
fi
done
# si erreur, je log et j'envoie un mail
if [[ "$total_erreur" > 0 ]]
then
echo "#
Il y a eu "$total_erreur" erreur(s) dans la sauvegarde. regarder le fichier: "${BACKUPLOG}"/error.log"
echo "La ligne du dessus est du: "$DATE" a "$HEURED 1>> ${BACKUPLOG}/error.log
# Creation du mail
SUBJECT="Subject: Erreur pendant la sauvegarde des comptes Zimbra";
BODY="Bonjour,

Le script de sauvegarde des mails a généré "$total_erreur" erreur(s).
Il est important de verrifier ces 2 fichiers:
"${BACKUPLOG}/error.log"
et
"${BACKUPLOG}/backup-mail.log"

Ce message est envoyé par: /var/testbackup.sh"
# Envoie du Mail
echo "from:"$DE > /tmp/mail-backup.txt
echo "to:"$A >> /tmp/mail-backup.txt
echo "$SUBJECT" >> /tmp/mail-backup.txt
echo "MIME-Version: 1.0" >> /tmp/mail-backup.txt
echo "Content-Type: text/plain; charset=\"utf-8\"" >> /tmp/mail-backup.txt
echo "$BODY" >> /tmp/mail-backup.txt
cat /tmp/mail-backup.txt | "$SENDMAIL" -t
fi
echo "#"
echo "Liste des comptes sauvegardés: ${list-account}"
echo "##### Fin de la sauvegarde a" $(date +%Hh:%Mm:%Ss) "#####"

Pour recevoir un mail, glisser une erreur dans cette ligne modifiant le dossier des comptes à sauvegarder:

Modifier cette ligne:

${ZIMBRA_CLI_PATH}un-chemin-fail/zmmailbox -z -m "$account" getRestURL "//?fmt=tgz" > $BACKUPDIR/"$account".tgz 2>> ${BACKUPLOG}/error.log

cd /var
./backup.sh

Suite à l'erreur, un mail doit etre envoyé.  :-)

Pensez à enlever l'erreur !

 

 

Automatisation avec un tache cron

Ajoutez une tache cron. si elle est crée par sudo, root lancera la tache ...

sudo crontab -e

A la fin du fichier, ajoutez votre tache. La syntaxe est celle-ci en enlevant les guillemets:

"minute" "heure" "jours dans le mois" "mois" "jour de la semaine" "La commande à lancer"

Si espace: champ suivant
si virgule autre parametre du champ
si tirait: tous les nombres compris du premier nombre au deuxième nombre
si étoile: tous les nombres possible du champ

14 5 * * 3,5 /var/backup.sh

Notre sauvegarde se lance à 5h14 (tous les jours du mois en cours) et (tous les mois) et le troisieme et cinquieme jour de la semaine (le dimanche est le 0, le samedi est le 6).

 

Téléchargez le script

 

 

 

Visionner toutes vos photos

Le: 04 juin 2018

  Téléchargez ce script en php qui utilise principalement les fonctions opendir, readdir et glob (récursive). La première page permet d'afficher tous ces répertoires et fichiers. Les caractères spéciaux utilisés pour les dossiers ou les nons des images sont gérés. Il est possible d'ouvrir un répertoire pour en afficher son contenu. Une pop-up donne les propriétés du répertoire ou du fichier puis la possibilité de le télécharger (les répertoires sont zipper avant leurs téléchargements et demande des droits d'écritures sur le dossier. Dans la démo, l’hébergeur free refuse le téléchargement indirect de plus 1M). Merci à ceux qui ont trouvé la solution de la poster...

 Liste des dossiers

Sur la gauche, les répertoires peuvent être explorés Au milieu, c'est une zone de téléchargement. Si un dossier est sélectionné, il est zipper avec ses sous répertoires avant sont téléchargement. Un clic sur la partie droite affiche un diaporama.

 

 Le diaporama, affiche les images de son répertoire. une temporisation peut être choisie et les commandes au clavier sont activent (les flèches, la barre d'espace et la touche "s" pour arrêter le défilement automatique).

Un lien est actif dans le non de la photo pour passer sur une nouvelle fenêtre qui affiche aléatoirement une des image de tous les dossiers. Démo

 

 

 Afficher une image aléatoirement choisi dans tous les repertoires et sous repertoires. La page affiche le lien du dossier, le non de l'image et le nombre total d'images. Un lien permet de revenir dans le dossier de l'image et d'afficher le diaporama du dessus.Les touches du clavier sont actives (les fleches et la barre d'espace). La fleche precedente arrete le diaporama.

 En cliquant sur l'image, une nouvelle page affiche une image centrée au format de la fenetre.

 

Le lien de la démo  (Pas de téléchargement "indirect" possible depuis mon hébergeur free, pour les fichiers de plus 1M). Je n'ai toujours pas trouvé de solution pour les serveur de free.fr. Je serai bien heureux que quelqu'un puisse me là donner.

Télécharger le script

 

Le: 08 Mars 2016

Installation de Zimbra:

 

Je suis partie d'un Ubuntu 14.04   Voir la préparation à faire avant d'installer Zimbra

 

Modifier votre fichier /etc/hostname:

sudo nano /etc/hostname

 Remplacer par:

serveur-mail

 

Modifier votre fichier /etc/hosts:

sudo nano /etc/hosts

Ajouter votre IP et reboot:


127.0.0.1 localhost
127.0.1.1 mail
192.168.1.50  votre-domaine.fr  serveur-mail
# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
sudo reboot

Télécharger l'archive pour la plateforme Ubuntu 64 bit. Le fichier est disponible à cette adresse:  https://www.zimbra.com/downloads/zimbra-collaboration-open-source/

Le 08 Mars ce fichier est : zcs-8.6.0_GA_1153.UBUNTU14_64.20141215151116.tgz

cd /opt
sudo wget https://files.zimbra.com/downloads/8.6.0_GA/zcs-8.6.0_GA_1153.UBUNTU14_64.20141215151116.tgz

Décompresser l'archive:

sudo tar fxvz zcs-8.6.0_GA_1153.UBUNTU14_64.20141215151116.tgz

Installation de Zimbra:

cd /opt/zcs-8.6.0_GA_1153.UBUNTU14_64.20141215151116
sudo ./install.sh

Accepter la licence:

Do you agree with the terms of the software license agreement? [N]  Y

 

Checking for prerequisites...
     FOUND: NPTL
     FOUND: netcat-openbsd-1.105-7ubuntu1
     FOUND: sudo-1.8.9p5-1ubuntu1.2
     FOUND: libidn11-1.28-1ubuntu2
     FOUND: libpcre3-1:8.31-2ubuntu2.1
     FOUND: libgmp10-2:5.1.3+dfsg-1ubuntu1
     FOUND: libexpat1-2.1.0-4ubuntu1.1
     FOUND: libstdc++6-4.8.4-2ubuntu1~14.04.1
     MISSING: libperl5.18
     MISSING: libaio1
     FOUND: resolvconf-1.69ubuntu1.1
     MISSING: unzip

Checking for suggested prerequisites...
     MISSING: pax does not appear to be installed.
     FOUND: perl-5.18.2
     MISSING: sysstat does not appear to be installed.
     MISSING: sqlite3 does not appear to be installed.

###WARNING###

The suggested version of one or more packages is not installed.
This could cause problems with the operation of Zimbra.

Do you wish to continue? [N]  N

Exit? [N]  N

             

Installation des prérequis :

Suivant vos paquets "MISSING":

sudo apt-get install libperl5.18 libaio1 unzip pax sysstat sqlite3

accepter l'installation des prérequis et recommencer l'installation de Zimbra :

cd /opt/zcs-8.6.0_GA_1153.UBUNTU14_64.20141215151116
sudo ./install.sh

Accepter la licence:

Do you agree with the terms of the software license agreement? [N]  Y

 

Choix des paquets à installer:

Install zimbra-ldap [Y] y

Install zimbra-logger [Y] y

Install zimbra-mta [Y] y

Install zimbra-dnscache [Y] N Déjà installé dans ce tuto :  Installation de Bind pour Zimbra

Install zimbra-snmp [Y] y

Install zimbra-store [Y] y

Install zimbra-apache [Y] y

Install zimbra-spell [Y] y

Install zimbra-memcached [Y] y

Install zimbra-proxy [Y] y

 

Modification du système:

Installing:
    zimbra-core
    zimbra-ldap
    zimbra-logger
    zimbra-mta
    zimbra-snmp
    zimbra-store
    zimbra-apache
    zimbra-spell
    zimbra-memcached
    zimbra-proxy

The system will be modified.  Continue? [N] Y

Le temps d'installation des paquets est de quelques minutes...

Un conflit de port est détecté. validez le en appuyant sur "Entrer.

Image du conflit de port avec Apache et Zimbra

 

Configuration:

1°) Le passwords de l'utilisateur admin doit être déterminé:

 

 Image de : Menu principal

 Vous devez entrer dans le menu 6 (zimbra-store).   Entrer "6 "

Image de : Store configuration Menu

Puis dans le menu 4 (Admin Password).   Entrer "4"

Choisissez votre Password pour l'admin : Mon_password

Retour au Menu principal : r

 

 2°) Le port doit être différent d'apache installé dans ce tuto:

Vous devez entrer dans le menu 8 (zimbra-proxy).

Modifier le:  HTTP proxy port et le: HTTPS proxy port

Choisir 9  et Entrer: 4080

Puis, choisir 10  et Entrer: 4443

 Image de la configuration du proxy Zimbra

 

 Retour au Menu principal : r

Image : Appliquer la configuration

 Appliquer la configuration en entrant: a

Accepter la sauvegarde de la configuration;

Accepter la modification du système:

The system will be modified - continue? [No]  Y

Apres deux pages plus bas ...

Notify Zimbra of your installation? [Yes]  Y

Après quelques minutes, votre système Zimbra est prêt à être utilisé.

Administration de votre serveur Zimbra (Ajouter des utilisateurs): https://votre-domaine.fr:7071

Votre webmail (par défaut, il n’écoute que en htts): https://vtre-domaine.fr:4443

 Si vous avez manqué une étape. Il est possible de désinstaller Zimbra:

Désinstaller Zimbra:

Aller dans le répertoire qui a servit à l'installation est désinstallez Zimbra.

cd /opt/zcs-8.6.0_GA_1153.UBUNTU14_64.20141215151116
sudo ./install.sh -u

 

Rediriger vos requêtes Apache du port 80 sur le port d'ecoute du proxy de Zimbra 4443:

Modifier votre fichier de configuration d'Apache fait dans ce tuto

sudo nano /etc/apache2/sites-available/ma-config.conf

 Ajouter:

 #
#
######################################
# mail.votre-domaine.fr:80
######################################
#
#
<VirtualHost *:80>
   ServerName mail.votre-domaine.fr
   ServerAlias mail.votre-domaine.fr:80
   ServerAdmin Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
   Redirect / https://mail.votre-domaine.fr
   ErrorLog /var/log/apache2/error_mail.log
   CustomLog /var/log/apache2/access_mail.log  combined
</VirtualHost>
#
######################################
#   pour le https / Module mod_ssl.c
######################################
<IfModule mod_ssl.c>
#
#
#
######################################
# mail.votre-domaine.fr:443
######################################
#
#
<VirtualHost *:443>
    ServerName mail.votre-domaine.fr:443
    ServerAlias mail.votre-domaine.fr:443
    SSLEngine on
    SSLCertificateFile      /etc/ssl/certs/ssl-cert-snakeoil.pem
    SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
    ProxyRequests Off
    SSLProxyEngine on
    ProxyPass / https://mail.votre-domaine.fr:4443/
    ProxyPassReverse / https://mail.votre-domaine.fr:4443/
    <Location "/">
        Order Deny,Allow
        Allow from all
        BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
    </Location>
   ErrorLog /var/log/apache2/error_ssl_mail.votre-domaine.log
   CustomLog /var/log/apache2/access_ssl_mail.votre-domaine.log  combined
</VirtualHost>
#
#
######################################
# www.votre-domaine.fr:443
######################################
#
#
<VirtualHost *:443>
ServerName www.votre-domaine.fr:443
    ServerAlias www.votre-domaine.fr:443
    ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/votre-domaine.fr
    SSLEngine on
    SSLCertificateFile      /etc/ssl/certs/ssl-cert-snakeoil.pem
    SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
  <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
    RewriteRule .* - [F]
  </IfModule>
   ErrorLog /var/log/apache2/error_ssl_www.votre-domaine.fr.log
   CustomLog /var/log/apache2/access_ssl_www.votre-domaine.fr.log  combined
</VirtualHost>
</IfModule>

 Redemarez Apache:

sudo /etc/init.d/apache2 restart

 

 Vous avez maintenant acces à votre site html et à zimbra en utilisant les port classic de http (80) et https (443)

Votre site: http://www;votre-domaine  et  https://www.votre-domaine.fr

Zimbra: http://mail.votre-domaine.fr est redirigé vers https://mail.votre-domaine.fr Un certificat gratuit, peu etre demandé à startssl.com Let's Encrypt

 

Pour toutes questions, écrivez-moi.

Explorer et télécharger en PHP

 

Le: 11 Juillet 2017

Ces pages HTML et PHP permettant d'explorer à la façon de Windows Explorer et de télécharger les fichiers et les répertoires en les zippant. La fonction "opendir" est largement utilisée. Une Pop-up est utilisée, ou solution alternative pour le téléchargement.

C'est pages ont été testées avec PHP7. Télécharger le script

 

 

 La pop-up
donne les informations
du fichier ou du répertoire.
Télécharger

 


 La page principale:

 

Explorer les répértoires

 

 

Ce code est inspiré de différents scripts recherché sur la toile. Notamment sur la base de "opendir".  Je remercie donc particulièrement, cette page:

Explorer les répertoires en PHP4

 

La sécurité:

Je suis un autodidacte et donc, je ne maitrise pas toutes les difficultés du codage. Je suis aussi particulièrement sensible à la protection des données, de ce serveur et autres.  C'est pour ces raisons que je ne donnerai pas de lien de démo. Mon exemple est uniquement visible en intranet.

Je vous recommande de ne pas mettre en ligne ce script. Utilisez le dans un environement fermé et partagez le. Je suis bien évidement preneur de toutes remarques sur l’amélioration de ces pages. c'est avec attention que je lirai vos critiques positives :-)  .

Télécharger le script

 

Bertrand

 

 Installation Apache et Zimbra sur le même host:

 

Il est nécessaire d'avoir un enregistrement des DNS valide pour l'installation de Zimbra. Voir le tuto sur les DNS avec Ubuntu: Installation BIND9 sur Ubuntu

Ce tuto est réalise avec un Ubuntu 14.04 et est le prolongement du tuto: Installation BIND9 sur Ubuntu.

Une mise à jour du système ne fait pas de mal:

sudo apt-get update
sudo apt-get upgrade

 

Puis installation d'Apache2 et php5:

sudo apt-get install apache2 php5

Modifier le fichier: /etc/apache2/apache2.conf

sudo nano /etc/apache2/apache2.conf

Chercher puis modifier:

# Sets the default security model of the Apache2 HTTPD server. It does
# not allow access to the root filesystem outside of /usr/share and /var/www.
# The former is used by web applications packaged in Debian,
# the latter may be used for local directories served by the web server. If
# your system is serving content from a sub-directory in /srv you must allow
# access here, or in any related virtual host.
<Directory />
        Options FollowSymLinks

#        AllowOverride None
        Require all denied
</Directory>
<Directory /usr/share>
        AllowOverride None
        Require all granted
</Directory>
<Directory /var/www/>
        Options Indexes FollowSymLinks

#        AllowOverride None
        AllowOverride All
        Require all granted
</Directory>
 

Et Ajouter à la fin du fichier:

ServerName localhost

Puis, créer un fichier pour vos hosts virtuels :

sudo nano /etc/apache2/sites-available/ma-config.conf

Ajouter ces lignes:


#
######################################
# votre-domaine.fr:80
######################################
#
#
<VirtualHost *:80>
	ServerName votre-domaine.fr
	ServerAdmin Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
	DocumentRoot /var/www/html/votre-domaine.fr
	# Ce site est à mettre là: /var/www/html/votre-domaine.fr/
	ServerAlias votre-domaine.fr
	DirectoryIndex index.html index.htm index.php index.php5 index.php4 index.php3 index.shtml index.cgi
	AddType application/x-httpd-php .php .php3 .php4 .php5

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
  RewriteRule .* - [F]
</IfModule> ErrorLog /var/log/apache2/error.votre-domaine.log CustomLog /var/log/apache2/access.votre-domaine.log combined </VirtualHost> # ###################################### # votre-domaine-fictif.fr:80 ###################################### # # <VirtualHost *:80> ServerName votre-domaine-fictif.fr ServerAdmin Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser. DocumentRoot /var/www/html/votre-domaine-fictif.fr # Ce site est à mettre là: /var/www/html/votre-domaine-fictif.fr/ ServerAlias votre-domaine.fr DirectoryIndex index.html index.htm index.php index.php5 index.php4 index.php3 index.shtml index.cgi AddType application/x-httpd-php .php .php3 .php4 .php5 <IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
  RewriteRule .* - [F]
</IfModule> ErrorLog /var/log/apache2/error.votre-domaine-fictif.log CustomLog /var/log/apache2/access.votre-domaine-fictif.log combined </VirtualHost> # Vous pouvez avoire plusieurs host virtuel # Des hosts connues que sur le reseau local ou sur le reseau WAN

Ajouter cette configuration à Apache:

sudo a2ensite ma-config.conf

Ajouter quelques module supplémentaire:

sudo a2enmod proxy_http rewrite ssl vhost_alias

Avant de redémarrer Apache, il faut créer un répertoire pour chacun de vos hosts virtuels :

sudo mkdir /var/www/html/votre-domaine.fr
sudo mkdir /var/www/html/votre-domaine-fictif.fr

Pour tester votre vouveau serveur, vous pouvez ajouter une page:

sudo nano /var/www/html/votre-domaine.fr/index.php

Ajoutez à cette page ce code:


<?php
echo "<br /><br />Bonjour<br />";

// Affiche L'adresse du serveur
$adresse=$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
echo "Vous avez affiche la page de:   <span style='color: red;'>".$adresse."</span><br />";
$chemin=$_SERVER['DOCUMENT_ROOT'];
echo "Le répertoire de votre site est:   <span style='color: red;'>".$chemin."</span><br /><br />";

echo "<center>Voici toutes vos informations de votre serveur:<br /><br />";
// Affiche toutes les informations, comme le ferait INFO_ALL
phpinfo();

?>

Vous pouvez effectuer la même opération avec votre répertoire de votre site fictif.

 

Redémarrer Apache:

sudo /etc/init.d/apache2 restart

 Votre serveur web est maintenant fonctionnel. Si il est hébergé chez vous, il reste à ouvrir les ports sur votre box et à les rediriger vers votre nouveau serveur.

 Rendez-vous sur: http://votre-domaine.fr

 

Installation de Zimbra: Lire la suite

 Pour toutes questions, écrivez-moi.