Cette page décrira notre utilisation de Squid à l'AUF.

Trucs et astuces (en attendant une vraie doc...)

Interception et redirection de requêtes vers un miroir local

Exemple d'options pour intercepter et rediriger les téléchargements de paquets Ubuntu vers son miroir local :

acl url_rewrite dstdomain .ubuntu.com .medibuntu.org .debian.org www.backports.org apt.hanoilug.org apt.auf.org
url_rewrite_access allow url_rewrite
url_rewrite_program /usr/local/sbin/squid-redirector
url_rewrite_children 5

Exemple de script de redirection (mauvais mais fonctionnel, fait à la vas-vite pour une urgence...) :

# /usr/local/sbin/squid-redirector, Progfou, 2008-01-14
# À refaire en Perl ou Python, un jour...
#
# URL <SP> client_ip "/" fqdn <SP> user <SP> method <SP> urlgroup <NL>
#
# ATTENTION : le miroir est incomplet => ne pas tout rediriger bêtement !!
#
while read URL CLIENT USER METHOD GROUP
do
  URL2="${URL/:\/\/apt.auf.org\//://cnf.vn.refer.org/mirror/auf/}"
  [ "$URL2" = "$URL" ] && URL2="${URL/:\/\/apt.hanoilug.org\/ubuntu\//://cnf.vn.refer.org/mirror/ubuntu/hanoilug/}"
  [ "$URL2" = "$URL" ] && URL2="${URL/:\/\/security.ubuntu.com\/ubuntu\//://cnf.vn.refer.org/mirror/ubuntu/security/}"
  [ "$URL2" = "$URL" ] && URL2="${URL/:\/\/*archive.ubuntu.com\/ubuntu\//://cnf.vn.refer.org/mirror/ubuntu/archive/}"
  [ "$URL2" = "$URL" ] && URL2="${URL/:\/\/*packages.medibuntu.org\/ubuntu\//://cnf.vn.refer.org/mirror/ubuntu/medibuntu/}"
  [ "$URL2" = "$URL" ] && URL2="${URL/:\/\/security.debian.org\/debian-security\//://cnf.vn.refer.org/mirror/debian/security/}"
  [ "$URL2" = "$URL" ] && URL2="${URL/:\/\/security.debian.org\//://cnf.vn.refer.org/mirror/debian/security/}"
  [ "$URL2" = "$URL" ] && URL2="${URL/:\/\/volatile.debian.org\/debian-volatile\//://cnf.vn.refer.org/mirror/debian/volatile/}"
  [ "$URL2" = "$URL" ] && URL2="${URL/:\/\/ftp*.debian.org\/debian\//://cnf.vn.refer.org/mirror/debian/archive/}"
  [ "$URL2" = "$URL" ] && URL2="${URL/:\/\/www.backports.org\/debian\//://cnf.vn.refer.org/mirror/debian/backports/}"
  if [ "$URL2" != "$URL" ] && HEAD "$URL2" > /dev/null
  then
    echo "$URL2"
  else
    echo "$URL"
  fi
done
exit 0