Du libre, du code, des idées, du mélange d’ArraKISS…

De l’épice pour la pensée

Aux utilisateurs du CHATONS 3hg.fr et ouaf.xyz, en cette fin d'année, il est temps de faire un peu de tri.

Certains ne se sont jamais connectés avec leur comptes : sauf alerte de leur part, ils seront supprimés.
Certains comptes n'ont pas été utilisés depuis plus de 6 mois : ces derniers seront fermé aussi.

N'hésitez pas à nous faire signe si besoin.

logo 3hg

Pour ceux que ça intéresse, voici comment je procède pour savoir si un utilisateur a consulté ses messages. Non, je ne regarde pas les logs, c'est beaucoup plus simple : je regarde la date de dernier accès au dossier des utilisateurs. Dans l'exemple ci-dessous, c'est réglé sur 6 mois :


DOMAINS='3hg.fr
ouaf.xyz
yeuxdelibad.net'

for d in $DOMAINS; do
        for u in /mnt/bigstorage/vmail/$d/*; do
                if [ ! -d $u/Maildir ]; then
                        echo "Never logged : $(basename $u)"
                else
                        LASTACCESS=$(stat -f %m $u/Maildir)
                        if [ $LASTACCESS -lt $SIXMONTHAGO ]; then
                                echo $(basename $u)
                        fi
                fi
        done
done

Bon, c'est très spécifique à ma configuration, mais c'est juste pour l'idée.

Voilà un article qui n'aura rien d'original, si ce n'est rappeler un truc tout bête mais essentiel : optimisez vos images avant de les mettre sur votre site (bord*%!@ !)
Non parce que si je veux une image avec des milliards de pixels, je vais sur un site de photo ou de fonds d'écran. Quand je veux lire un article, je n'ai pas besoin d'attendre que l'image se charge.

oooh, mais monsieur, nous on a la fibre, ça se charge très vite...

Tant mieux, mais c'est loin d'être le cas de tout le monde (même pour moi, près de Nantes, qui n'est pas non plus trop isolé).
C'est d'autant plus important pour optimiser la bande passante utilisée par votre serveur, qu'il soit auto-hébergé ou non.
Jetez un oeil à ce site qui simule une bande passante à l'époque du 56k : http://www.loband.org/loband/simulator.jsp
Alors concrètement, comment on fait ?

1. Avec GIMP
Quand vous exportez une image avec gimp, vous pouvez paramétrer quelques options :

Pour un PNG, on décoche un maximum de trucs et on augmente le niveau de compression :

Si vous exportez en JPG, surtout, pensez à cocher "Optimiser" et"Progressif". Une qualité de 75 donne de très bons résultats.

2. En ligne de commande
Il s'agit de ma méthode favorite puisqu'après avoir configuré une action personnalisée sur les images dans le gestionnaire de fichier, c'est accessible via clic-droit.
Enregistrez le script suivant qui optimise les images qu'on lui donne à manger.
Il faut installer imagemagick et optipng.

#!/bin/sh
# optimise les images
# dépend de optipng et imagemagick

for i in "$@"; do
    case "$i" in
        *.jpg | *.JPG | *.jpeg | *.JPEG )
            convert "$i" -strip -quality 75 -interlace line "$i" ;;
        *.png | *.PNG ) optipng "$i" ;;
    esac
done

exit 0

Voilà voilà, en espérant accélérer vos sites :)

Jusqu'à présent, j'utilisais feh pour voir mes images et définir un fond d'écran.
Cependant, je le trouvais peu pratique pour la gestion du zoom (molette de la souris), surtout quand j'affiche en grand des images à mes élèves.

Il y a une alternative bien cool : sxiv, disponible d'ailleurs sous OpenBSD avec un package. L'option "-t" pour avoir des aperçus est giga chouette :) .
Seul souci, ce n'est pas prévu pour définir un fond d'écran.
Et ça m'embête de garder feh juste pour ça.

Heureusement, on peut se débrouiller avec imagemagick (qu'il est génial cet outil!), qui peut nous afficher un beau fond d'écran avec la commande display :

display -resize 1600x900\! -window root ~/Images/bg.jpg

Remplacez la résolution par celle qui va bien pour votre écran.

Un peu plus de minimalisme à bord :)

Si vous avez installé votre OpenBSD depuis quelques temps, peut-être souhaitez-vous faire un peu de ménage.
Rien de tel que de supprimer les ports et paquets inutilisés, puis terminer avec les commandes suivantes pour retirer les dépendances inutiles et vérifier le système :

pkg_delete -a
pkg_check

Afin de détecter quels paquets ne me servent plus depuis longtemps et que j'ai peut-être oublié, j'utilise le script suivant

Il regarde la liste des paquets installés puis affiche ceux qui ont un exécutable qui n'a pas été utilisé depuis plus d'un mois. (changez la variable DAYS pour un autre délai).

Voici le script :

#!/bin/sh
# print unused packages that may be deleted

# It only check if last access time of binaries is older than a month by default.
# It doesn't check for libs, only bins

DAYS=15    # Number of days since last access
LAST=$(($(date +%s) - ($DAYS * 24 * 3600)))

echo "Those packages haven't been used in the last $DAYS days : "

for P in $(pkg_info | cut -d' ' -f1); do 
        BINS=$(pkg_info -L $P |grep '/usr/local/bin')
        for B in $BINS; do
                # check if $B is a link
                B=$(readlink -f $B)
                if [ $(stat -f %a $B) -lt $LAST ]; then
                        echo "$P  | $B"
                fi
        done
done

Décidément, que j'aime OpenBSD. La simplicité de ses outils permet de, très facilement, récupérer des informations sans prise de tête.

Depuis la publication d'isotop, je me dis que ça serait intéressant d'expliquer un peu comment cette "non-distribution" est faîte. Vous allez, voir, c'est enfantin.
Je vais décrire la procédure en détaillant les commandes utilisées, sachant qu'en réalité tout ceci est mis dans des scripts pour se simplifier la vie.

Isotop n'est qu'une OpenBSD personnalisée. Pour ça, on récupère d'abord une image d'installation iso depuis un miroir.

ftp -o install6.2.iso https://ftp.fr.openbsd.org/pub/OpenBSD/6.2/amd64/install62.iso

Ensuite, on décompresse cette iso pour pouvoir modifier son contenu :

    mkdir -p loopdir
    mkdir -p ./install6.2
    if [ "$(uname)" = "OpenBSD" ]; then
        vnconfig vnd0 install6.2.iso
        mount -t cd9660 /dev/vnd0c loopdir/
        cp -r loopdir/* ./install6.2
        umount loopdir/
        vnconfig -u vnd0
    else
        mount -o loop install6.2.iso loopdir
        cp -r loopdir/* ./install6.2
        umount loopdir/
    fi
    rm -r loopdir/

Selon si on est sous OpenBSD ou Linux, la procédure n'est pas tout à fait la même. Ces commandes n'ont rien de magique, on trouve facilement sur le web comment extraire une iso.

Nous voilà donc avec un dossier install6.2 qui contient tout le nécessaire pour installer OpenBSD. C'est maintenant que la personnalisation commence. On peut configurer l'installation grâce à 3 mécanismes :

  • Intégrer une archive siteXX.tgz (remplacez XX par le numéro de version, ici 62) qui sera décompressée à l'installation sur la racine /. Cela permet d'intégrer les configurations voulues. Par exemple, le fichier /etc/doas.conf personnalisé, ou encore un dossier /etc/skel qui contient tout ce qui sera copié dans le dossier personnel d'un nouvel utilisateur (langue, profil firefox...)).
  • Ajouter un script "install.site" dans cette archive. ce dernier sera exécuté juste à la fin de l'installation. On peut y mettre un miroir pour récupérer les paquets, activer par défaut certains services comme le résolveur unbound...
  • Ajouter un script "etc/rc.firsttime" qui sera lancé au premier démarrage de la machine. Ce dernier me sert principalement à installer les paquets de logiciels.

C'est parti, on crée un dossier "site" dans lequel on va mettre tout notre bazar :

mkdir site

Allez, pour l'exemple, je vais ajouter un set d'icônes dedans :

mkdir -p site/usr/local/share/icons
cp -r /usr/local/share/icons/Arc site/usr/local/share/icons

J'y met aussi un script "install.site" qui va activer la gestion d'énergie juste après l'installation :

echo "rcctl enable apmd" >> site/install.site
echo "rcctl set apmd status on" >> site/install.site
echo "rcctl set apmd flags -A">> site/install.site
chmod +x site/install.site

Enfin, je mets dans le script lancé au premier démarrage de quoi installer un environnement de bureau :

echo "pkg_add xfce" >> site/etc/rc.firsttime
chmod +x site/etc/rc.firsttime

Allez zou, on met ces configurations dans une archive comme prévu :

cd site
tar cvzf ../site62.tgz *

Ne reste plus qu'à copier cette archive dans l'iso extraite :

cp site62.tgz install6.2/6.2/amd64/site62.tgz 

Lors de l'installation, il sera proposé d'installer le set site62 afin de profiter de cette configuration.

Enfin, on reconstruit l'iso. Remplacez genisoimage par mkisofs selon ce qui est disponible sur votre système :

genisoimage -r -no-emul-boot -b 6.2/amd64/cdbr -c boot.catalog -o ./CustomOBSD.iso install6.2 

Et voilà ;)
Fastoche non ?

Pour plus de détails ou d'idées, je vous invite à aller regarder le code source d'isotop, en particulier les scripts qui servent à la génération des images. Ces derniers permettent notamment de générer une iso personnalisée d'OpenBSD même à partir d'un sysètme Linux.