Porneia delights

— Nous avons tous encore en tête la censure qu'à subit Wikileaks courant novembre-décembre 2010 suite à ce qui fût connu comme étant l'opération Cablegate. Après la diffusion de plus de 250 000 télégrammes de la diplomatie états-unienne et relayés par cinq grand journaux, l'association à but non lucratif s'était vu subir une censure d'un niveau encore rarement atteint. Après la condamnation du geste de Wikileaks par de nombreux pays ainsi que par l'OTAN, le gouvernement états-unien, usant de tout son poid, avait réussi à faire fermer une partie de l'hébergement du site chez Amazon — entre autres — ; avait pressé Paypal de geler leur compte empêchant ainsi les dons — entre autres — ; avait fait pression sur Visa et Mastercard pour qu'il soit impossible de transférer de l'argent vers Wikileaks ou encore avait désactivé le nom de domaine wikileaks.org alors géré par EveryDNS. Les réactions de nombreuses communautés sur Internet ne se firent pas attendre. Ainsi que l'explique très clairement Benjamin Bayart dans son communiqué lors de la mise en place d'un des miroirs de Wikileaks sur FDN, la question n'était pas de prendre parti, de « savoir si ce que fait Wikileaks est bien ou mal ». La question était de contrer la censure. La question était — et est toujours — de continuer à diffuser les données. Car les données sont essentielles. Car les données doivent circuler. Ainsi naquirent d'abord des centaines de nouveau nom de domaine pointant vers les quelques serveurs de Wikileaks encore en ligne. Ainsi naquirent ensuite des centaines de miroirs préservant les données de toute destruction.

Aujourd'hui encore la censure est présente et toujours plus virulente de par le monde, tantôt s'attaquant à de simples citoyens, tantôt à de véritables institutions. Mais tous ont le même leïtmotiv : défendre la liberté d'expression et la libre circulation de l'information. Malheureusement tout le monde ne bénéficie pas de la vitrine médiatique ou des moyens techniques (ou plus simplement du savoir-faire) qui permet l'excercice de ces libertés. Fort de ce constat et « afin de permettre à des sites d'information indépendants victimes de cyber-attaques ou de blocages gouvernementaux de continuer leurs activités de publication et de diffusion en ligne, Reporters sans frontières (RSF) se lance dans la duplication de sites ». Ce 8 février 2012 c'est par ces mots que RSF a donc commencé à mettre en place des miroirs du travail de journalistes subissant la censure par filtrages, attaques en déni de service, retraits de contenus, ou encore — plus radical — par mise à feu de locaux.

Cette mission que se donne RSF a débuté par la duplication de deux médias en ligne, le magazine tchétchène Dosh et le journal sri-lankais Lanka-e News, et a monté en conséquence deux miroirs :

RSF nous appelle à les aider à mettre en place des mirroirs de ces sites qui sont menacés ou qui subissent déjà la censure. En effet leur miroir par exemple de Lankan-e News permet aux ressortissants sri-lankais de visiter ce journal depuis leur propre pays malgré la censure appliquée par leur gouvernement depuis octobre 2011. Mais ce miroir pourrait être un jour ou l'autre bloqué à son tour. En multipliant les miroirs, les articles de ces médias verraient leur libre accessibilité augmenter d'autant plus. Voici les autres miroirs disponibles (dernière MàJ le 13 février 2012 12:50 UTC) :

Il existe bien sûr d'autres sites d'information qui devraient bénéficier de cette action. Si vous en connaissez, n'hésitez pas à monter vos propres miroirs et proposer à RSF de les rajouter sur leur liste.

Comment participer ?

Méthodologie ¦ Il suffit pour cela de récupérer une copie des sites en question, de la déployer sur un serveur web puis d'envoyer un email à wefightcensorship[at]rsf.org afin qu'ils rajoutent votre miroir à la liste. Pour le moment deux méthodes sont proposées pour récupérer les données :

HTTrack ¦ C'est un logiciel libre et gratuit disponible sous Microsoft Windows et tous les Unix de manière générale (BSD, GNU/Linux, Mac OS X, etc.). Vous pouvez récupérer le programme sur la page de téléchargement du projet ; notez que toutes les distributions GNU/Linux et BSD doivent normalement l'avoir à disposition dans leurs dépôts. Notez aussi qu'HTTrack dispose d'une interface graphique pour les fanas de la souris, son utilisation en devient enfantine. Enfin il est important que vous pointiez HTTrack sur les miroirs de RSF et non sur les sites originaux, cela afin de leur épargner autant que possible une trop forte charge.

Archives ¦ Chaque miroir devrait mettre à sa racine une archive du contenu. C'est évidemment plus pratique mais vous êtes alors dépendant des mises à jour des sites miroirs. Pour le moment voici les archives mises à disposition (dernière MàJ le 13 février 2012 12:50 UTC) :

Note : les archives .tar, .tar.gz et .tar.bz2 se décompressent très simplement avec 7-zip (libre et gratuit) sous Microsoft Windows et avec The Unarchiver (libre et gratuit) sous Mac OS X.

Ressources requises ¦ En quelques mots : un serveur http (Apache, nginx, lighttpd, IIS, etc.) et 300Mo de place. N'importe quel serveur http fait l'affaire bien sûr. Le contenu étant statique, il n'est pas nécessaire d'avoir PHP ou SQL à disposition. Les archives à elles seules font pour le moment moins de 55Mo pour une taille d'environ 268Mo une fois décompressées.

À quelle fréquence faire les copies ? ¦ Un site d'information est en constante évolution évidemment. Après que nous les ayons contacté, RSF nous a indiqué qu'ils réalisaient des copies toutes les 24 heures. Les réplications des miroirs secondaires peuvent donc, dans le cas où elles sont automatisées, être faites toutes les 24 à 48 heures selon les conseils de RSF. Dans le cas où vous feriez la copie manuellement (à l'aide d'HTTrack tout de même) une mise à jour par semaine pourrait être suffisante.

Je souhaite mettre en place un miroir mais je n'ai pas de serveur web ¦ Plusieurs solutions s'offrent à vous. Tout d'abord si vous avez l'habitude de laisser votre ordinateur allumé 24/7 vous pouvez envisager d'héberger le contenu sur votre ordinateur. Si vous êtes néophytes en matière d'auto-hébergement il existe de nombreuses solutions faciles tout-en-un à mettre en place pour Windows, Mac OS X, GNU/Linux (GLAMP sous Ubuntu par exemple) entre autres. Après l'ouverture de votre port 80 et l'utilisation d'un service comme dyndns vous pourriez diffuser vos contenus. Vous pouvez aussi envisager de plaider votre cause après d'un des hébergeurs du Réseau d’Hébergeurs Indépendants et ENgagés, ou encore vous inscrire sur Toile Libre par exemple (prix libre, nécessite d'être actif au sein de l'association, partisant du DIY), voir même choisir parmi une liste d'hébergeur gratuit et payant. Attention, si vous passez par des hébergeurs indépendants et/ou associatifs, veuillez à mettre au courant l'administrateur de vos intentions. En effet, il est possible que vos miroirs — et donc potentiellement tout l'espace de l'hébergeur — soit blacklisté dans certaines parties du monde, voir même — bien que ça soit très peu probable — attaqué d'une manière ou d'une autre.

En pratique

« Tout est une copie d'une copie d'une copie… » ¦ Nous allons développer ici la manière dont nous avons automatiser le processus de réplication des deux miroirs de RSF. Elle est loin d'être parfaite mais à tout le moins çamarche©. Cela correspond évidemment à nos besoins et devrait, si vous comptez la réutiliser, être adapter pour satisfaire les vôtres. En substance, sur une Debian GNU/Linux, nous dupliquons les miroirs avec HTTrack directement dans nos archives sur un réseau local. Une fois fait nous synchronisons les répertoires des deux sites depuis le réseau local vers les répertoires présent dans la copie locale primaire du site du Porneia delights à l'aide de rsync. Pour finir cette copie locale est mise à jour avec la version en ligne grâce à lftp. Le tout étant lancé automatiquement par un tâche cron tous les jours.

Script ¦ Nous utilisons un simple script bash pour faire tout le travail. Il se nomme mirror-rsf.sh et vous pouvez pratiquement l'utiliser en l'état en prenant la peine de modifier les quelques variables en tête du script (notamment MIRROR et WWW). Notez que le script va vérifier si des mirroirs existent déjà localement. Ainsi si c'est le premier lancement du script, il créera automatiquement les mirroirs ainsi que leurs archives (tar avec compression gzip). Lors des lancements suivants, il mettra simplement tout cela à jour. Enfin, chose importante, si vous avez un httpd sur votre serveur et que vous n'avez donc pas besoin de mettre à jour un serveur ftp distant, pensez à supprimer ou commenter les lignes concernant lftp en bas du script. (dernière MàJ le 24 février 2012 14:31 UTC) :

#!/bin/bash

# We are the Porneia delights. We are persistent and reluctant.
# We also do not really come from outer space.
# http://porneia.free.fr

# Version: 0.2
# Time-stamp: <2012-02-20 14:25:53>

# This script replicates http://dosh.rsf.org and http://lankaenews.rsf.org
# See http://en.rsf.org/rwb-mirror-censorship-08-02-2012,41825.html
# for more details

# Released under WTFPLv2/Beer-ware License (Revision 42)

# Depends: httrack, rsync, lftp,
#          cigarettes without additives
#          and C8H10N4O2.

#### Change this variable to feet your needs
MIRROR="/mnt/data78/rsf"
WWW="$HOME/www/streisand.me"
FTP_USER="user"
FTP_PASS="password"
FTP_PORT="21"
FTP_HOST="ftpserveur.com"
FTP_PATH="/streisand.me/"

#### Ok, here we go

# Check for httrack
echo -en $(date --rfc-3339=seconds)": Checking for HTTrack..."
if [[ -z $(which httrack) ]]; then
    echo 1>&2 "Error: could not find httrack."
    echo 1>&2 $(date --rfc-3339=seconds)": Exiting. Please install httrack."
    exit 1
fi
echo "done."

# Check for lftp
echo -en $(date --rfc-3339=seconds)": Checking for lftp..."
if [[ -z $(which lftp) ]]; then
    echo 1>&2 "Error: could not find lftp."
    echo 1>&2 $(date --rfc-3339=seconds)": Exiting. Please install lftp."
    exit 1
fi
echo "done."

# Check if $WWW exist
echo -en $(date --rfc-3339=seconds)": Does $WWW exist?..."
if [[ ! -d "$WWW" ]]; then
    echo "no."
    echo -en "\nError: "$WWW" does not exist, please create this folder.\n"
    exit 1
else
    echo "yes."
fi

# Check if $MIRROR exist
echo -en $(date --rfc-3339=seconds)": Does "$MIRROR" exist?..."
if [[ ! -d "$MIRROR" ]]; then
    echo "no."
    echo -en "\nError: "$MIRROR" does not exist, please create this folder.\n"
    exit 1
else
    echo "yes."
fi

# Launching httrack
echo -en $(date --rfc-3339=seconds)": Launching httrack "
LOCKFILE="$MIRROR/hts-in_progress.lock"

[ -f "$LOCKFILE" ] && { echo "... Already running. Exiting.";exit 0; }
if [[ -d "$MIRROR/hts-cache" ]];then
    echo "for update, please fasten your seatbelt."
    PARAMS="-O $MIRROR -q -iC2 -X"
else
    echo "for the fist time, please fasten your seatbelt."
    PARAMS="http://dosh.rsf.org http://lankaenews.rsf.org -O $MIRROR -q -%v1 -r4"
fi
echo ""
httrack $PARAMS

sleep 1

# Starting rsync
echo -en "\n"$(date --rfc-3339=seconds)": Starting rsync..."
rsync --delete -rtoqu $MIRROR/dosh.rsf.org/ $WWW/doshdu.ru/
rsync --delete -rtoqu $MIRROR/lankaenews.rsf.org/ $WWW/lankaenews.com/
echo "done."

# Fixing modes
echo -en $(date --rfc-3339=seconds)": Fixing modes in "$WWW"..."
find $WWW -type d -exec chmod 755 {} \;
find $WWW -type f -exec chmod 644 {} \;
echo "done."

# Archives and md5sum
echo $(date --rfc-3339=seconds)": Building archives and md5sum..."
cd $WWW
echo -en "   * doshdu.ru.tar.gz..."
tar cf - doshdu.ru | gzip -c > doshdu.ru.tar.gz
echo "done."
echo -en "   * doshdu.ru.tar.gz.md5sum..."
md5sum doshdu.ru.tar.gz > doshdu.ru.tar.gz.md5sum
echo "done."
echo -en "   * lankaenews.com.tar.gz..."
tar cf - lankaenews.com | gzip -c > lankaenews.com.tar.gz
echo "done."
echo -en "   * lankaenews.com.tar.gz.md5sum..."
md5sum lankaenews.com.tar.gz > lankaenews.com.tar.gz.md5sum
echo "done."
cd $HOME

# Then push local copy online using lftp
# Note that you may add "set ftp:list-options -a;" before
# "open" to lftp commands in case your ftp server hide
# dot-files by default (e.g. .htaccess), and show them only when LIST
# command is used with -a command.  Please see lftp man for further
# details.
echo $(date --rfc-3339=seconds)": Local copy of "$WWW" is going to be pushed..."
lftp -c "open -u $FTP_USER,$FTP_PASS -p $FTP_PORT $FTP_HOST;
         lcd $WWW;
         cd $FTP_PATH;
         mirror --delete --reverse --verbose"

echo $(date --rfc-3339=seconds)": All done."

Le script est tout à fait perfectible nous en avons parfaitement conscience. Pour le moment il arrive cependant à nous satisfaire. Nous sommes malgré tout ouvert à toutes remarques et critiques à son propos.


Vous pouvez envoyer par mail vos commentaires et vos remarques à porneia[at]free[dot]fr.

Contrat
Creative Commons
Miroir, mon beau miroir... L'appel de Reporters sans frontières (2239 mots) de al. est mis à disposition selon les termes de la licence Creative Commons Paternité 3.0 (CC BY 3.0).

Vulnerant omnes, ultima necat. Sic transit hominis regnum.
Copyleft © 2012 — al.