Cette année, je participe à nouveau au concours d'informatique Prologin. Voici mes codes pour les qualifications (terminée le 5 janvier).
Également disponible sur mon dépôt SVN :
http://grapsus.net/svn/prog/trunk/prq10/
Wednesday 6 January 2010
By grapsus on Wednesday 6 January 2010, 12:42
Cette année, je participe à nouveau au concours d'informatique Prologin. Voici mes codes pour les qualifications (terminée le 5 janvier).
Également disponible sur mon dépôt SVN :
http://grapsus.net/svn/prog/trunk/prq10/
Tuesday 5 January 2010
By grapsus on Tuesday 5 January 2010, 20:28
Il y a de gros dysfonctionnements dans les derniers paquets du client torrent deluge, notamment l'interface web est inutilisable. Voici un moyen rapide pour revenir à la version précédente, celle de Debian lenny :
dpkg -r deluge deluge-common deluge-gtk deluge-torrent deluge-web deluge-webui wget http://ftp.de.debian.org/debian/pool/main/d/deluge-torrent/deluge-torrent-common_0.5.9.3-1_all.deb wget http://ftp.de.debian.org/debian/pool/main/d/deluge-torrent/deluge-torrent_0.5.9.3-1_i386.deb wget http://ftp.de.debian.org/debian/pool/main/b/boost/libboost-date-time1.34.1_1.34.1-14_i386.deb wget http://ftp.de.debian.org/debian/pool/main/b/boost/libboost-thread1.34.1_1.34.1-14_i386.deb wget http://ftp.de.debian.org/debian/pool/main/b/boost/libboost-filesystem1.34.1_1.34.1-14_i386.deb aptitude install python-dbus dpkg -i libboost-* deluge-*
Friday 1 January 2010
By grapsus on Friday 1 January 2010, 21:58
Nagios a plein de fonctionnalités intéressantes, mais du côté de la localisation et des encodages de caractères c'est très mal géré. Par exemple on ne peut pas choisir l'encodage des pages web de l'interface (à moins de faire des bidouilles du côté du serveur HTTP), les caractères accentués sont supposés être en ISO-8859 et sont automatiquement convertis en codes HTML ce qui rend impossible leur affichage correct sur un système fonctionnant en UTF-8. Encore, ces problèmes n'affectent pas les fonctionnalités du logiciel. Par contre les plugins s'amusent à exécuter des commandes sans se soucier de la locale utilisée, si bien que la sortie dépend de la langue du système ! À partir de là, les pages de résumé ne ressemblent à rien, Nagiosgrapher marche une fois sur deux etc. Je n'ai pas trouvé comment remédier à ce problème sur le net; dans les rapports de bugs Debian correspondants, on va jusqu'à dire que c'est normal. J'ai essayé de changer la locale de Nagios dans son script init, mais celui-ci se fork et certains résultats sont en anglais alors que d'autres restent en français de manière complètement aléatoire.
Voici ma solution définitive à ce problème : recompiler Nagios avec la modification suivante dans le fichier base/checks.c :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 350,352d349 < < char *current_locale; < char previous_locale[40]; 762,768d758 < /* Grapsus : run plugins with no locale */ < if(current_locale = getenv("LC_ALL")) < { < strncpy(previous_locale, current_locale, 40); < previous_locale[39] = 0; < } < setenv("LC_ALL", "C", 1); 770,774d759 < if(current_locale) < setenv("LC_ALL", previous_locale, 1); < else < unsetenv("LC_ALL"); < /* End grapsus run plugins with no locale */ |
Avec ce patch, Nagios va se mettre en locale par défaut avant d'exécuter un plugin, de sorte que les résultats seront homogènes et facilement lisibles avec Nagiosgrapher.
Voici comment obtenir le code source sous Debian :
apt-get source nagios3 apt-get build-dep nagios3
Une fois le patch appliqué, on reconstruit le paquet avec :
dpkg-buildpackage -uc -us
Tuesday 29 December 2009
By grapsus on Tuesday 29 December 2009, 20:11
Chez Free il est impossible, pour raisons de sécurité, de paramétrer un renvoi d'appels depuis une autre adresse IP que la sienne. Voici un script shell à éxécuter sur une machine chez soi pour contourner ce système et paramétrer le transfert d'appels depuis l'extérieur :
transfert.sh :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | #!/bin/bash LOGIN="" MDP="" TMP="/tmp/transtmp" if [ ! -d "$TMP" ] ; then mkdir -p "$TMP" || (echo "Dossier temporaire inaccessible" ; exit 1) fi NUMERO="$1" if [ -n "$NUMERO" ] ; then TRANSINC='&transinc=transinc' fi USERAGENT='Mozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5' wget --no-check-certificate --quiet --keep-session-cookies --save-cookies="$TMP/free-cookie" \ --user-agent="$USERAGENT" --post-data='login='"$LOGIN"'&ok=Connexion&pass='"$MDP" \ -O "$TMP/login.html" https://subscribes.free.fr/login/login.pl ID=`grep -o 'id=[[:alnum:]]*&idt=[[:alnum:]]*' "$TMP/login.html" | tail -n 1` if [ -z "$ID" ] ; then echo "Login : erreur." exit 1 fi echo "Login : OK" wget --no-check-certificate --quiet --keep-session-cookies --load-cookies="$TMP/free-cookie" \ --user-agent="$USERAGENT" --post-data='appsort=0000&delai=5&incon='\ "$NUMERO"'&mevo_delai=35&mevo_mode=5&nonrep=&occup='"$TRANSINC" \ -O "$TMP/transfert.html" 'https://adsls.free.fr/admin/tel/adminservice_valid.pl?'"$ID" export LC_ALL=c if grep -sq 'Donn.*valid.' "$TMP/transfert.html" ; then echo "Transfert : OK" else echo "Transfert : erreur" exit 2 fi rm -f "$TMP/*" |
Si aucun numéro n'est fourni en paramètre, le script désactive le renvoi d'appels, sinon il l'active pour ce numéro. Ne pas oublier de renseigner son login et son mot de passe Free au début du code.
Voici une version CGI (à placer dans un dossier cgi-bin Apache ou Lighttpd) qu'on peut exécuter par exemple à partir d'un smartphone ( transfert-cgi.sh?numero=... ) :
transfert-cgi.sh :
1 2 3 4 5 6 7 8 | #!/bin/bash echo "<html><body>" NUMERO=`echo "$QUERY_STRING" | cut -f 2 -d '='` ./transfert.sh "$NUMERO" echo "</body></html>" |
En plus ces scripts peuvent servir de base pour d'autres automatisations chez le même FAI, il suffit de récupérer la requête à rejouer avec Firebug ou Wireshark et de la lancer à la place de la deuxième requête du script.
L'interface de Free est passée en HTTPS, j'ai adapté le script présenté dans cet article.
Friday 25 December 2009
By grapsus on Friday 25 December 2009, 16:18
De nombreux jeux sous Wine affichent cette erreur avant de se planter lamentablement :
err:d3d:resource_init Out of adapter memory
Dans ce cas, soit vous n'avez pas assez de RAM vidéo, soit l'application fait une fuite de mémoire et cette erreur finit par arriver.
J'étais certain d'être dans le second cas, le jeu étant très léger et la carte Nvidia de mon portable disposant de 256 Mo de RAM. Il existe une clé du registre Wine pour spécifier la quantité de mémoire vidéo émulée (oui Wine n'est pas un émulateur, mais comment appeler ça sinon ?!). Sans cette clé, la valeur est calculée automatiquement. Étonnamment le jeu s'est mis à marcher lorsque j'ai forcé la valeur de cette variable à 512 Mo :
[Software\\Wine\\Direct3D] 1261753369 "VideoMemorySize"="512"
Je n'ai toujours pas d'explication à ce phénomène, mais je suis bien content de pouvoir jouer à Runaway A Twist of Fate.
« previous entries - page 3 of 4 - next entries »