diff --git a/.gitignore b/.gitignore index c75eecc..6a2fe92 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -/public +/public/* diff --git a/content/donate.md b/content/donate.md index 1925836..cb38bc4 100644 --- a/content/donate.md +++ b/content/donate.md @@ -30,8 +30,10 @@ de leur temps sur le forum et la liste de diffusion ♥. Vos dons financiers pour supporter le coût du serveur, une 60aine d'€ / an auprès d'obsd.ams, peuvent être fait par le moyen de : -- [Liberapay](https://liberapay.com/OpenBSD-fr/donate) +- [Liberapay][1] - +[][1] --- + +[1]: https://liberapay.com/OpenBSD-fr/donate diff --git a/deploy.bash b/deploy.bash new file mode 100755 index 0000000..d2aa184 --- /dev/null +++ b/deploy.bash @@ -0,0 +1,186 @@ +#!/bin/bash +#set -x +[ -n "$TERM" ] && clear +### +# +# Author: Stéphane HUC +# mail: devs@stephane-huc.net +# gpg:fingerprint: CE2C CF7C AB68 0329 0D20 5F49 6135 D440 4D44 BD58 +# +# License: BSD Simplified +# +# Github: +# +# Date: 2020/12/20 +# +### +# +# USE: ./deploy +# +### +# +# Need software: +# - brotli : compression format .br +# - sshfs + rsync +# - lftp (solution de repli) +# +### + +ROOT="$(dirname "$(readlink -f -- "$0")")" + +id='obsd4a' +host='djebeltoubkal.linuxmario.net' +#passwd='TfpLLyC22fbcA3Sm' +port=22 + +### the directory where your web site files should go +## dir_dist: relative to chroot SSH +dir_dist="/var/www/htdocs/www.openbsd.fr.eu.org/" +dir_local="$ROOT/public/" +dir_mount="$HOME/servers/${host}/" + +email="red+bckp-ebnh@huc.fr.eu.org" + +rsync_opts="--human-readable --progress --stats " + + +################################################################################ +### +## +# Fonctions +## +### +################################################################################ + +get_status() { + + case "$status" in + 0) mssg="Succès" ;; + 1) mssg="Erreur de syntaxe ou d'utilisation" ;; + 2) mssg="Incompatibilité de protocole" ;; + 3) mssg="Erreurs de sélection d'entrée ou de sortie des fichiers ou des répertoires" ;; + 4) mssg="Action demandée non prise en charge : une tentative de manipulation de fichiers 64 bits a été effectuée sur une plate-forme qui ne peut pas les prendre en charge ; ou une option a été spécifiée qui est pris en charge par le client et non par le serveur." ;; + 5) mssg="Erreur de démarrage du protocole client-serveur" ;; + 6) mssg="Le service est incapable d'ajouter au fichier journal" ;; + 10) mssg="Erreur dans le socket I/O" ;; + 11) mssg="Erreur dans le fichier I/O" ;; + 12) mssg="Erreur dans le flux de données du protocole rsync" ;; + 13) mssg="Erreurs de diagnostic du programme" ;; + 14) mssg="Erreur dans le code IPC" ;; + 20) mssg="SIGUSR1 ou SIGINT reçus" ;; + 21) mssg="Une erreur est retournée par waitpid()" ;; + 22) mssg="Erreur lors de l'allocation des mémoires tampons principales" ;; + 23) mssg="Transfert partiel dû à une erreur";; + 24) mssg="Transfert partiel dû à la disparition des fichiers source" ;; + 25) mssg="La limite --max-delete a arrêté les suppressions" ;; + 30) mssg="Délai d'attente pour l'envoi ou la réception de données" ;; + 35) mssg="Délai d'attente pour la connexion du démon" ;; + *) mssg="Code inconnu !" ;; + esac + + #[ -z "$IS_CRON" ] && zenotify "Rsync: $choice!" "Rsync: $choice ; status: $mssg!" + + if [ "${status}" -eq 0 ]; then + mssg="$0::Rsync for ${dir_local}, ended with success!" + else + mssg="$0::Rsync Error ${status} on execution for ${dir}, with message: ${mssg}!" + fi + + logger "$mssg" + printf '%s\n' "$mssg" | mail -s "$(hostname): Backup Review" $email + + unset mssg status + +} + +_del_gz() { + cd "${dir_local}" || exit 1 + find . -type f -a \( -name "*.br" -o -name "*.gz" \) -delete + cd "$ROOT" || exit 1 +} + +# Compress all thoses datas files. +_gz() { + cd "${dir_local}" || exit 1 + find . -type f -size +1024c -a \( \ + -name "*.css" -o -name "*.html" -o -name "*.js" -o -name "*.json" \ + -o -name "*.svg" -o -name "*.txt" -o -name "*.xml" \ + \) | while read -r line; do echo "Compress ${line}"; brotli -Z "${line}"; gzip -9 -f < "${line}" > "${line}.gz"; done + #| while read -r file; do gzip -9 -f -v "${file}"; done + cd "$ROOT" || exit 1 +} + +_lftp() { + #/usr/local/bin/lftp -e "mirror -e -R ${dir_local} ${dir_dist}; quit" -p $port sftp://${id}@${host} + lftp -e "set ftp:ssl-allow no; mirror -e -R ${dir_local} ${dir_dist}; quit;" ftp://${id}:${passwd}@${host} +} + +main() { + _minify + sleep 1 + + _del_gz + sleep 1 + _webp + sleep 1 + + hugo --gc + status="$?" + + if [ "${status}" -eq 0 ]; then + sleep 1 + _gz + sleep 1 + + if _mount; then + _rsync + _umount + + ##else + ## _lftp + + fi + fi +} + +_minify() { + /home/zou/Projets/outils/minify.bash "$ROOT/static" +} + +_mount() { + [ ! -d "${dir_mount}" ] && mkdir -p "${dir_mount}" + #[ -d "${dir_mount}" ] && sshfs -C -p $port -o allow_other -o uid=$(id -u $USER) -o gid=$(id -g $USER) ${id}@${host}:${dir_dist} "${dir_mount}" + [ -d "${dir_mount}" ] && sshfs -C -p $port -o uid=$(id -u $USER) -o gid=$(id -g $USER) ${id}@${host}:${dir_dist} "${dir_mount}" +} + +_rsync() { + + cd "${dir_local}" || exit + rsync -av --delete $rsync_opts "." "${dir_mount}" + status="$?" + get_status + cd "$ROOT" || exit 1 + +} + +_umount() { + fusermount -u "${dir_mount}" +} + +_webp() { + cd "${ROOT}/static" || exit 1 + find . -type f -a \( \ + -name "*.gif" -o -name '*.jpg' -o -name '*.jpeg' -o -name '*.png' \ + \) | while read -r file; do if [ ! -f "${file}.webp" ]; then cwebp "${file}" -exact -lossless -o "${file}.webp"; fi; done + cd "$ROOT" || exit 1 +} + +################################################################################ +### +## +# Execution +## +### +################################################################################ + +main diff --git a/public/404.html.br b/public/404.html.br new file mode 100644 index 0000000..7684f1c Binary files /dev/null and b/public/404.html.br differ diff --git a/public/404.html.gz b/public/404.html.gz new file mode 100644 index 0000000..067b4e3 Binary files /dev/null and b/public/404.html.gz differ diff --git a/public/Puffy.svg.br b/public/Puffy.svg.br new file mode 100644 index 0000000..85d7547 Binary files /dev/null and b/public/Puffy.svg.br differ diff --git a/public/Puffy.svg.gz b/public/Puffy.svg.gz new file mode 100644 index 0000000..a58582e Binary files /dev/null and b/public/Puffy.svg.gz differ diff --git a/public/about/index.html b/public/about/index.html index 917f1f6..4a7dd22 100644 --- a/public/about/index.html +++ b/public/about/index.html @@ -18,7 +18,7 @@ - + @@ -428,7 +428,7 @@ virtuelle louée chez