"Miroir, mon beau miroir..." : L'appel de Reporters sans frontières

Porneia delights, 10 février 2012, al. — 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 :

  • À l'aide d'HTTrack, par exemple, qui est un aspirateur de site et qui va automatiser le processus de copie.
  • En téléchargeant les archives mises à disposition sur chaque miroir.

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. Ceci dit, du code valant toujours mieux que de longs discours :

Scripts ¦ Nous utilisons un simple script bash pour faire tout le travail. Il se nomme mirror-rsf.sh :

#!/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.1
# Time-stamp: <2012-02-10 02:35:15>

# 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, updateftp.sh,
#          cigarettes without additives
#          and C8H10N4O2.

#
REMOTE="/mnt/data78"

# for lftp
USERN="username"
PASSW="password"
HOST="host.com"

# Check for httrack
if [[ -z $(which httrack) ]]; then
    echo 1>&2 "Error: could not find httrack."
fi

# Check for remote then GO!
if [[ ! -d "$REMOTE" ]]; then
    echo 1>&2 "Error: "$REMOTE" not mounted."
else
    # Here we go!
    httrack http://dosh.rsf.org http://lankaenews.rsf.org \\
        -O $REMOTE/rsf/ --quiet -%v1 -r4 --update -X
fi

# Start rsyncing
rsync --delete -rtovu $REMOTE/rsf/dosh.rsf.org/ \\
    $HOME/www/streisand.me/doshdu.ru/
rsync --delete -rtovu $REMOTE/rsf/lankaenews.rsf.org/ \\
    $HOME/www/streisand.me/lankaenews.com/

# Build archives
cd $HOME/www/streisand.me/
tar cf - doshdu.ru | gzip -c > doshdu.ru.tar.gz
tar cf - lankaenews.com | gzip -c > lankaenews.com.tar.gz
md5sum doshdu.ru.tar.gz > doshdu.ru.tar.gz.md5sum
md5sum lankaenews.com.tar.gz > lankaenews.com.tar.gz.md5sum
cd $HOME

# Then push online using updateftp.sh
bash $HOME/bin/updateftp.sh $HOME/www/streisand.me/ \\
    ftp://$USERN:$PASSW@$HOST:21/pub/streisand.me/

Le script est tout à fait perfectible nous en avons parfaitement conscience. Il manque notamment quelques vérifications quant à la bonne marche d'HTTrack, des rsync, de la construction des archives ainsi que de la mise à jour sur le ftp. Un mail envoyé à l'$USER ainsi qu'à une adresse extérieure contenant un rapport daté serait un plus. Pour le moment il arrive cependant à nous satisfaire. Nous sommes malgré tout ouvert à toutes remarques et critiques à son propos.

Remarquez que nous utilisons l'option --update pour HTTrack car nous avons déjà une copie que nous souhaitons simplement mettre à jour. Si vous lancez HTTrack pour la première fois — autrement dit si vous n'avez pas encore de copie locale — vous devez enlever cette option.

Notez enfin l'appel à un autre script pour mettre à jour le ftp : updateftp.sh. Il n'est rien d'autre qu'une adaptation du script trouvé sur Wilson's Wiki et peut être utilisé pour mettre à jour n'importe quel ftp depuis un répertoire local :

#!/bin/bash

# Time-stamp: <2012-02-10 02:54:30>

# This script is based on a version found on Wilson's Wiki
# http://168.site90.net/doku.php?id=shell-script-mirror-ftp-sites-using-lftp
# CC Attribution-Share Alike 3.0 Unported

usage() {
  echo ""
  echo "USAGE: `basename $0` <local_dir> <dst_ftp_address>"
  echo "DESCRIPTION:"
  echo "    ftp_address is in the format of ftp://user:pass@host:port/path"
  echo "    e.g. ftp://user:pass@ndd.com:21/public_html"
  echo ""
}

# lftp is required
if [[ -z `which lftp` ]]; then
  echo 1>&2 "Error: could not find lftp."
  exit 1
fi

# save current path
CWD=`pwd`

# check arguments
if [[ $# -ne 2 ]]; then
  echo 1>&2 "Error: invalid arguments."
  usage
  exit 1
fi

# local dir
LOCAL_DIR=$1


# parse dst address
s=$2
[[ $s == ftp://* ]] && s=${s:6}
s1=`echo $s | awk -F @ '{print \\$1}'`
s2=`echo $s | awk -F @ '{print \\$2}'`
DST_FTP_USER=`echo $s1 | awk -F : '{print \\$1}'`
DST_FTP_PASS=`echo $s1 | awk -F : '{print \\$2}'`
DST_FTP_HOST=`echo $s2 | awk -F : '{print \\$1}'`
s3=`echo $s2 | awk -F : '{print \\$2}'`
i=`expr index $s3 /`
DST_FTP_PORT=${s3:0:$((i-1))}
[[ -z $DST_FTP_PORT ]] && DST_FTP_PORT=21
DST_FTP_PATH=${s3:$((i-1))}
DST_FTP_ADDR="ftp://${FTP_HOST}:${FTP_PORT}${FTP_PATH}"

# upload from local dir to dst ftp server
echo "Uploading $LOCAL_DIR to $DST_FTP_HOST..."

# Proceed.
# Note that you may add "set ftp:list-options -a;" before "open" 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.
lftp -c "open -u $DST_FTP_USER,$DST_FTP_PASS -p $DST_FTP_PORT $DST_FTP_HOST;
         lcd $LOCAL_DIR;
         cd $DST_FTP_PATH;
         mirror --delete --reverse --verbose"
Vus : 2163
Publié par Porneia delights : 16