L'espace documentaire est hébergé dans le répertoire /var/lib/tftpboot du serveur 10.13.254.143.
Il héberge :
Les fichiers déposés dans ce répertoire sont automatiquement versionnés dans le serveur GOGS https://10.13.254.73 L'automatisme de versionning est le suivant:
Les fichiers sont déposés par ftp dans le répertoire upload en anonymous
L'upload est autorisé uniquement sur le répertoire /var/ftp/upload
(pour des raisons de sécurité vsftpd
ne permet pas les upload dans le répertoire root (/var/ftp
) de la connexion anonymous)
mkdir -p /var/ftp/upload chmod 777 /var/ftp/upload chown ftp:ftp /var/ftp/upload
vsftpd est configuré pour autoriser les uploads anonymes et permettre le chroot() de l'utilisateur FTP anonyme dans /var/ftp
:
# /etc/vsftpd/vsftpd.conf listen=yes #Les directives suivantes empêchent les utilisateurs locaux de se connecter et permettent respectivement un accès anonyme. local_enable=NO anonymous_enable=yes #La directive suivante permet l'accès en écriture au système de fichiers du serveur ftp. write_enable=yes anon_upload_enable=yes # Définit le répertoire racine des connexions anonymes. anon_root=/var/ftp
Des évènements inotify provoquent l'exécution des scripts:
/usr/bin/incron_automove.sh
lorsqu'un fichier est déposé dans /var/ftp/upload
/usr/bin/incron_autogit.sh
lorsqu'un fichier est déposé ou déplacé dans /var/lib/tftpboot
/var/ftp/upload/ IN_CLOSE_WRITE /usr/bin/incron_automove.sh $@ $# /var/lib/tftpboot/ IN_MOVED_TO,IN_MODIFY,IN_CLOSE_WRITE /usr/bin/incron_autogit.sh $@ $#
Le script incron_automove.sh provoque le déplacement des fichiers reçus dans /var/ftp/upload
dans le répertoire /var/lib/tftpboot
.
#!/bin/bash ############################## # /usr/bin/incron_automove.sh # script gérant les fichiers téléchargés dans le répertoire surveillé # recoit en paramêtre = $1 : le répertoire / $2 :le nom du fichier # événement IN_CLOSE ############################### # # Déplacement répertoire surveillé cd "$1" # Déplacement du fichier reçut en paramètre # vers le répertoire /var/lib/tftpboot/ mv $2 /var/lib/tftpboot/ -f
Le script incron_autogit.sh Gère le versionnage des fichiers reçus (IN_CLOSE) ou déplacés (IN_MOVED_TO) dans le répertoire /var/lib/tftpboot
, et l'envoi d'un mail dans la boite générique.
#!/bin/bash ############################## # /usr/bin/incron_autogit.sh # script générant le transfert des fichiers dans GIT # recoit en paramêtre = $1 : le répertoire / $2 :le nom du fichier # événements IN_MOVED_TO,IN_MODIFY,IN_CLOSE ############################### # # Déplacement répertoire surveillé cd "$1" # 1 - add -> git add <nom_du_fichier> git add $2 # 2 - commit -> git commit -m '<message du commit>' git commit -m $(date +%A-%d%m%Y-%H%M) # 3 - push -> git push [<url-to-remote>|<alias-of-remote] <branche> git push origin master # Envoi d'un mail dans la boite générique echo "dépôt du fichier $2 le $(date +%A-%d/%m/%Y) à $(date +%Hh%M) " | mail -r "esi.marseille.snsreseau@dgfip.finances.gouv.fr" -s "NESSUS: dépôt d'un fichier dans tftpboot" jacques.nougat@dgfip.finances.gouv.fr echo "dépôt du fichier $2 le $(date +%A-%d/%m/%Y) à $(date +%Hh%M) " | mail -r "esi.marseille.snsreseau@dgfip.finances.gouv.fr" -s "NESSUS: dépôt d'un fichier dans tftpboot" esi.marseille.snsreseau@dgfip.finances.gouv.fr
Configuration de sendmail en relay SMTP dans /etc/mail/sendmail.cf
# "Smart" relay host (may be null) DSsmtp.oc.dgfip