<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Zapoyok &#187; Trucs et astuces</title>
	<atom:link href="http://www.zapoyok.info/category/trucs-et-astuces/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.zapoyok.info</link>
	<description></description>
	<lastBuildDate>Sun, 05 Feb 2012 09:12:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Comment remettre le « http:// » dans la barre d&#8217;adresse de Firefox 7</title>
		<link>http://www.zapoyok.info/2011/09/30/comment-remettre-le-%c2%ab-http-%c2%bb-dans-la-barre-dadresse-de-firefox-7/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=comment-remettre-le-%25c2%25ab-http-%25c2%25bb-dans-la-barre-dadresse-de-firefox-7</link>
		<comments>http://www.zapoyok.info/2011/09/30/comment-remettre-le-%c2%ab-http-%c2%bb-dans-la-barre-dadresse-de-firefox-7/#comments</comments>
		<pubDate>Fri, 30 Sep 2011 05:14:55 +0000</pubDate>
		<dc:creator>Jérôme FIX</dc:creator>
				<category><![CDATA[Trucs et astuces]]></category>
		<category><![CDATA[configuration]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[iceweasel]]></category>

		<guid isPermaLink="false">http://www.zapoyok.info/?p=541</guid>
		<description><![CDATA[Avec la sortie de Firefox 7 quelques changements que je ne désire pas sont apparus : la fausse bonne idée (à mon sens) de masquer la chaîne « http:// » dans la barre d’adresse à été reprise chez Google, toujours dans l’URL, seul le nom de domaine (« example.com ») est mis en surbrillance , pas [...]]]></description>
			<content:encoded><![CDATA[<p>Avec la sortie de Firefox 7 quelques changements que je ne désire pas sont apparus :</p>
<ul>
<li>la fausse bonne idée (à mon sens) de masquer la chaîne « http:// » dans la barre d’adresse à été reprise chez Google,</li>
<li>toujours dans l’URL, seul le nom de domaine (« example.com ») est mis en surbrillance , pas les sous‐domaines, ni le chemin de la ressource</li>
</ul>
<p>Pour rétablir l&#8217;ancien comportement : </p>
<ul>
<li>il faut mettre <code>browser.urlbar.trimURLs</code> à <code>false</code> (dans about:config).</li>
<li>l&#8217;option <code>browser.urlbar.formatting.enabled</code> qui grise toutes les parties de l&#8217;URL en dehors du domaine est elle aussi désactivable en mettant la valeur à <code>false</code>.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.zapoyok.info/2011/09/30/comment-remettre-le-%c2%ab-http-%c2%bb-dans-la-barre-dadresse-de-firefox-7/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Orange/Wanadoo et « Too many connections, slow down. OFR004_104 [104]) »</title>
		<link>http://www.zapoyok.info/2011/01/01/orangewanadoo-et-%c2%ab-too-many-connections-slow-down-ofr004_104-104-%c2%bb/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=orangewanadoo-et-%25c2%25ab-too-many-connections-slow-down-ofr004_104-104-%25c2%25bb</link>
		<comments>http://www.zapoyok.info/2011/01/01/orangewanadoo-et-%c2%ab-too-many-connections-slow-down-ofr004_104-104-%c2%bb/#comments</comments>
		<pubDate>Sat, 01 Jan 2011 16:58:31 +0000</pubDate>
		<dc:creator>Jérôme FIX</dc:creator>
				<category><![CDATA[Humeur]]></category>
		<category><![CDATA[Trucs et astuces]]></category>

		<guid isPermaLink="false">http://www.zapoyok.info/?p=465</guid>
		<description><![CDATA[Depuis le 17 décembre environ, Orange a modifié (une fois de plus) le fonctionnement de ses serveurs de mail. Cette fois la conséquence est la suivante : très rapidement lors d&#8217;un mailing les serveurs d&#8217;Orange refusent les mails avec le message suivant : Dec 20 12:32:33 ns303007 postfix/smtp[6102]: B454432E76: to=, relay=smtp.wanadoo.fr[80.12.242.82]:25, delay=23, delays=0.02/0/23/0, dsn=4.0.0, status=deferred [...]]]></description>
			<content:encoded><![CDATA[<p>Depuis le 17 décembre environ, Orange a modifié (une fois de plus) le fonctionnement de ses serveurs de mail.<br />
Cette fois la conséquence est la suivante : très rapidement lors d&#8217;un mailing les serveurs d&#8217;Orange refusent les mails avec le message suivant :</p>
<blockquote><p>Dec 20 12:32:33 ns303007 postfix/smtp[6102]: B454432E76: to=<xxxxxxxxxxxxxxxxx>, relay=smtp.wanadoo.fr[80.12.242.82]:25, delay=23, delays=0.02/0/23/0, dsn=4.0.0, status=deferred (host smtp.wanadoo.fr[80.12.242.82] refused to talk to me: 421 mwinf5c30 ME Trop de connexions, veuillez verifier votre configuration. Too many connections, slow down. OFR004_104 [104])</p></blockquote>
<p><a href="http://www.zapoyok.info/wp-content/uploads/2011/01/postfix_mailqueue-month.png"><img src="http://www.zapoyok.info/wp-content/uploads/2011/01/postfix_mailqueue-month-300x207.png" alt="" title="Exemple de queue suite au problèmes posés par Orange" width="300" height="207" class="alignright size-medium wp-image-468" /></a><br />
La file des messages se rempli  alors très rapidement pour monter facilement à plusieurs dizaine de milliers de mails en attente d&#8217;envoi et surtout totalement bloqués !</p>
<p>Autre souci les mails sont en status deferred, et seront donc supprimé de la file dans un délai de 5 jours par défaut (voir la configuration de <a href="http://www.postfix.org/postconf.5.html" target="_blank">maximal_queue_lifetime)</a>. C&#8217;est insuffisant pour laisser s&#8217;écouler les mails en attente !</p>
<p>Pour les serveurs de mail que je gère j&#8217;ai « bidouillé » un script pour vider manuellement la queue pour les mails destinés à Orange/Wanadoo afin que les personnes aient leur mail au plus tôt !<br />
Mais il fallait trouver une solution plus durable…</p>
<p>J&#8217;en ai mise une en place, elle n&#8217;est pas parfaite mais elle a permis de gérer et de délivrer les mailings de ces fêtes de fin d&#8217;année en temps et en heure !</p>
<h3>Détails de la solution : transport spécifique pour orange/wanadoo</h3>
<h4>/etc/postfix/transport </h4>
<p><code><br />
wanadoo.com     slow:<br />
wanadoo.fr      slow:<br />
orange.com      slow:<br />
orange.fr       slow:<br />
</code></p>
<p>puis <code>postmap /etc/postfix/transport </code></p>
<h4>dans /etc/postfix/master.cf</h4>
<p><code><br />
#==========================================================================<br />
# service type  private unpriv  chroot  wakeup  maxproc command + args<br />
#               (yes)   (yes)   (yes)   (never) (100)<br />
#==========================================================================<br />
slow      unix  -       -       n       -       5       smtp<br />
   -o syslog_name=postfix-slow<br />
   -o smtp_destination_concurrency_limit=3<br />
   -o slow_destination_rate_delay=1<br />
</code></p>
<h4>dans /etc/postfix/main.cf </h4>
<p><code><br />
slow_destination_recipient_limit = 20<br />
slow_destination_concurrency_limit = 2<br />
</code></p>
<p>et finalement : <code>/etc/init.d/postfix reload </code></p>
<p>Les mails se stockent tout de même en queue, mais la file se vide ensuite relativement rapidement !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zapoyok.info/2011/01/01/orangewanadoo-et-%c2%ab-too-many-connections-slow-down-ofr004_104-104-%c2%bb/feed/</wfw:commentRss>
		<slash:comments>27</slash:comments>
		</item>
		<item>
		<title>Aspirer un site internet pour une consultation hors-ligne</title>
		<link>http://www.zapoyok.info/2010/09/07/aspirer-un-site-internet-pour-une-consultation-hors-ligne/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=aspirer-un-site-internet-pour-une-consultation-hors-ligne</link>
		<comments>http://www.zapoyok.info/2010/09/07/aspirer-un-site-internet-pour-une-consultation-hors-ligne/#comments</comments>
		<pubDate>Tue, 07 Sep 2010 05:21:16 +0000</pubDate>
		<dc:creator>Jérôme FIX</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Trucs et astuces]]></category>
		<category><![CDATA[wget]]></category>

		<guid isPermaLink="false">http://www.zapoyok.info/?p=446</guid>
		<description><![CDATA[Il doit certainement exister des logiciels avec possibilité de filtres et de dizaines d&#8217;autres options, mais pour la plupart des cas cette simple commande me suffit : wget -r -k -np -T 10 -t 1 http://www.zapoyok.info -r : signifie que le téléchargement sera récursif et suit les liens présent dans la page -k : permet [...]]]></description>
			<content:encoded><![CDATA[<p>Il doit certainement exister des logiciels avec possibilité de filtres et de dizaines d&#8217;autres options, mais pour la plupart des cas cette simple commande me suffit :</p>
<p><code><strong>wget -r -k -np -T 10 -t 1 http://www.zapoyok.info</strong></code></p>
<ul>
<li><code>-r</code> : signifie que le téléchargement sera récursif et suit les liens présent dans la page</li>
<li><code>-k</code> : permet de reconstituer le site localement afin d&#8217;être consultable hors connexion : les liens sont modifié pour pointer localement</li>
<li><code>-np</code> empêche de remonter dans le répertoire parent.</li>
<li><code>-T 10</code> : Time connection. Le temps max en seconde pour aspirer un lien. Quand cette option est omis, un lien difficilement accessible peut ralentir considérablement l&#8217;aspiration du site.</li>
<li><code>-t 1</code> : nombre de tentative de connexion si il y a erreur 404 (pas de lien). Ici, on veut qu&#8217;il n&#8217;y ait qu&#8217;une seule tentative de connexion afin d&#8217;accélérer le traitement d&#8217;aspiration.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.zapoyok.info/2010/09/07/aspirer-un-site-internet-pour-une-consultation-hors-ligne/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>git svn clone &#8230;. et  « temp file with moniker &#8216;svn_delta&#8217; already in use »</title>
		<link>http://www.zapoyok.info/2010/08/17/git-svn-clone-et-%c2%ab-temp-file-with-moniker-svn_delta-already-in-use-%c2%bb/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=git-svn-clone-et-%25c2%25ab-temp-file-with-moniker-svn_delta-already-in-use-%25c2%25bb</link>
		<comments>http://www.zapoyok.info/2010/08/17/git-svn-clone-et-%c2%ab-temp-file-with-moniker-svn_delta-already-in-use-%c2%bb/#comments</comments>
		<pubDate>Mon, 16 Aug 2010 22:45:21 +0000</pubDate>
		<dc:creator>Jérôme FIX</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Trucs et astuces]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[serf]]></category>
		<category><![CDATA[subversion]]></category>

		<guid isPermaLink="false">http://www.zapoyok.info/?p=406</guid>
		<description><![CDATA[Lors d&#8217;essai de cloner des dépôts SVN pour travailler dessus avec GIT, je me retrouve chaque fois avec la même erreur : Temp file with moniker 'svn_delta' already in use at /usr/share/perl5/Git.pm line 1022. avec git 1.7.1 et Subversion 1.6.12 Après quelques recherches infructueuses une piste et une solution (à mon problème en tout cas). [...]]]></description>
			<content:encoded><![CDATA[<p>Lors d&#8217;essai de cloner des dépôts SVN pour travailler dessus avec GIT, je me retrouve chaque fois avec la même erreur :<br />
<code>Temp file with moniker 'svn_delta' already in use at /usr/share/perl5/Git.pm line 1022.</code> avec  git 1.7.1 et Subversion 1.6.12</p>
<p>Après quelques recherches infructueuses une piste et une solution (à mon problème en tout cas). Dans le fichier <code>~/.subversion/servers</code> j&#8217;avais la section suivante :</p>

<div class="wp_syntax"><div class="code"><pre class="ini" style="font-family:monospace;"><span style="color: #000066; font-weight:bold;"><span style="">&#91;</span>global<span style="">&#93;</span></span>
<span style="color: #000099;">http-library</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> serf</span></pre></div></div>

<p>Une simple suppression de cette ligne pour réutiliser Neon par défaut et cela marche tout de suite mieux !<br />
Je ne sais pas vraiment le pourquoi du comment, mais si cela aide quelqu&#8217;un à son tour c&#8217;est tant mieux ! </p>
<p>Pour en savoir plus :<br />
<a href="http://git.661346.n2.nabble.com/git-svn-fails-to-fetch-repository-td2151475.html">http://git.661346.n2.nabble.com/git-svn-fails-to-fetch-repository-td2151475.html</a><br />
<a href="http://subversion.tigris.org/issues/show_bug.cgi?id=2932">http://subversion.tigris.org/issues/show_bug.cgi?id=2932</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.zapoyok.info/2010/08/17/git-svn-clone-et-%c2%ab-temp-file-with-moniker-svn_delta-already-in-use-%c2%bb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installer Flash sous Debian Testing &#171;&#160;Squeeze&#160;&#187; amd64</title>
		<link>http://www.zapoyok.info/2010/08/01/installer-flash-sous-debian-testing-squeeze-amd64/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=installer-flash-sous-debian-testing-squeeze-amd64</link>
		<comments>http://www.zapoyok.info/2010/08/01/installer-flash-sous-debian-testing-squeeze-amd64/#comments</comments>
		<pubDate>Sun, 01 Aug 2010 07:21:49 +0000</pubDate>
		<dc:creator>Jérôme FIX</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Trucs et astuces]]></category>
		<category><![CDATA[Chroot]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://www.zapoyok.info/?p=347</guid>
		<description><![CDATA[Suite aux nombreuses failles sur le plugin Flash, Adobe a jeté l&#8217;éponge et ne maintient plus son plugin en version 64 bits (Lire l&#8217;annonce d&#8217;Adobe.) Il reste dès lors peu de solutions : Revenir sur une distrib 32 bits Installé − à l&#8217;instar de windows − le plugin en version 32 bits chrooter complètement son [...]]]></description>
			<content:encoded><![CDATA[<p>Suite aux nombreuses failles sur le plugin Flash, Adobe a jeté l&#8217;éponge et ne maintient plus son plugin en version 64 bits (<a href="http://labs.adobe.com/technologies/flashplayer10/64bit.html">Lire l&#8217;annonce d&#8217;Adobe.</a>)</p>
<p>Il reste dès lors peu de solutions :</p>
<ul>
<li>Revenir sur une distrib 32 bits</li>
<li>Installé − à l&#8217;instar de windows − le plugin en version 32 bits</li>
<li><a class="http" href="http://people.debian.org/%7Ebartm/flashplugin-nonfree/flashplugin-nonfree_10.1.53.64.1_amd64.deb">chrooter complètement son environnement</a> pour avoir un Firefox en 32 bits dans son environnement 64</li>
<li>Se passer de flash</li>
<li>Installer des alternatives : gnash,…</li>
</ul>
<p>Je vais retenir l&#8217;installation du plugin en version 32 bits.<br />
La méthode est entièrement décrite à l&#8217;adresse suivante : <a href="http://wiki.debian.org/FlashPlayer">http://wiki.debian.org/FlashPlayer</a> et plus particulièrement : <a href="http://wiki.debian.org/FlashPlayer#DebianTesting.27Squeeze.27amd64">« Installation sous Squeeze AMD64 »</a></p>
<p>Je cite : </p>
<p><quote></p>
<h4>Debian Testing &#8216;Squeeze&#8217; amd64</h4>
<p>Currently not supported by Adobe.  See the <a class="http" href="http://labs.adobe.com/technologies/flashplayer10/64bit.html">announcement by Adobe</a> and bug <a class="interwiki open-bug" href="http://bugs.debian.org/586273" title="Open in flashplugin-nonfree/1:2.8.1, flashplugin-nonfree/1:2.8: #586273: flashplugin-nonfree: useless on amd64">#586273</a>. </p>
<p>However, there is a workaround: </p>
<ol>
<li><code>aptitude install fakeroot binutils nspluginwrapper ia32-libs</code></li>
<li>Download and run this script: <a class="http" href="http://people.debian.org/%7Ebartm/flashplugin-nonfree/ia32-libs-workaround-499043-squeeze.sh">http://people.debian.org/~bartm/flashplugin-nonfree/ia32-libs-workaround-499043-squeeze.sh</a> </li>
<li><code>dpkg -i ia32-libs-workaround-499043_0.0.1+squeeze1_amd64.deb</code></li>
<li>Install this package: <a class="http" href="http://people.debian.org/%7Ebartm/flashplugin-nonfree/flashplugin-nonfree_10.1.53.64.1_amd64.deb">http://people.debian.org/~bartm/flashplugin-nonfree/flashplugin-nonfree_10.1.53.64.1_amd64.deb</a></li>
</ol>
<p>Note (21/08/2010) : Aller voir régulièrement à la page <a href="http://wiki.debian.org/FlashPlayer#DebianTesting.27Squeeze.27amd64">« Installation sous Squeeze AMD64 »</a>, les paquets et leur version changent de temps à autre ! </p>
<p>An entirely different approach is to install a browser and the 32 bit plugin in an i386 chroot as described in <a class="http" href="http://alioth.debian.org/docman/view.php/30192/21/debian-amd64-howto.html">the AMD64 HOWTO</a>.
</p>
<p></quote></p>
]]></content:encoded>
			<wfw:commentRss>http://www.zapoyok.info/2010/08/01/installer-flash-sous-debian-testing-squeeze-amd64/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Supprimer les tentatives d&#8217;accès à phpMyAdmin en utilisant fail2ban</title>
		<link>http://www.zapoyok.info/2010/07/30/supprimer-les-tentatives-dacces-a-phpmyadmin-en-utilisant-fail2ban/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=supprimer-les-tentatives-dacces-a-phpmyadmin-en-utilisant-fail2ban</link>
		<comments>http://www.zapoyok.info/2010/07/30/supprimer-les-tentatives-dacces-a-phpmyadmin-en-utilisant-fail2ban/#comments</comments>
		<pubDate>Fri, 30 Jul 2010 03:24:54 +0000</pubDate>
		<dc:creator>Jérôme FIX</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Trucs et astuces]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[bots]]></category>
		<category><![CDATA[fail2ban]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[phpMyAdmin]]></category>
		<category><![CDATA[sécurité]]></category>

		<guid isPermaLink="false">http://www.zapoyok.info/?p=283</guid>
		<description><![CDATA[Comme beaucoup de monde il m&#8217;arrive d&#8217;être « scanné » sur mon serveur Web pour accéder à phpMyAdmin ou en exploiter une faille. On trouve ce genre d&#8217;info dans les mails quotidiens généré par logwatch par exemple. --------------------- httpd Begin ------------------------ &#160; Requests with error response codes […] 404 Not Found /PMA/scripts/setup.php: 1 Time(s) /PMA2005/scripts/setup.php: [...]]]></description>
			<content:encoded><![CDATA[<p>Comme beaucoup de monde il m&#8217;arrive d&#8217;être « scanné » sur mon serveur Web pour accéder à phpMyAdmin ou en exploiter une faille.</p>
<p>On trouve ce genre d&#8217;info dans les mails quotidiens généré par <a href="http://logwatch.sourceforge.net/">logwatch</a> par exemple.</p>

<div class="wp_syntax"><div class="code"><pre class="log" style="font-family:monospace;">--------------------- httpd Begin ------------------------ 
&nbsp;
 Requests with error response codes
   […]
    404 Not Found
       /PMA/scripts/setup.php: 1 Time(s)
       /PMA2005/scripts/setup.php: 1 Time(s)
     […]
       /phpMyAdmin-2.3.0/scripts/setup.php: 1 Time(s)
       /phpMyAdmin-2.3.1/scripts/setup.php: 1 Time(s)
       /phpMyAdmin-2.3.2/scripts/setup.php: 1 Time(s)
       /phpMyAdmin-2.3.3/scripts/setup.php: 1 Time(s)
       /phpMyAdmin-2.3.4/scripts/setup.php: 1 Time(s)
       /phpMyAdmin-2.3.5/scripts/setup.php: 1 Time(s)
       /phpMyAdmin-2.3.6/scripts/setup.php: 1 Time(s)
       /phpMyAdmin-2.3.7/scripts/setup.php: 1 Time(s)
       /phpMyAdmin-2.3.8/scripts/setup.php: 1 Time(s)
       /phpMyAdmin-2.3.9/scripts/setup.php: 1 Time(s)
       /phpMyAdmin-2.4.0/scripts/setup.php: 1 Time(s)
       /phpMyAdmin-2.4.1/scripts/setup.php: 1 Time(s)
       /phpMyAdmin-2.4.2/scripts/setup.php: 1 Time(s)
       /phpMyAdmin-2.4.3/scripts/setup.php: 1 Time(s)
       /phpMyAdmin-2.4.4/scripts/setup.php: 1 Time(s)
     […]
&nbsp;
 ---------------------- httpd End -------------------------</pre></div></div>

<p>Pour y remédier : </p>
<ul>
<li>Ne pas l&#8217;installer !</li>
<li>N&#8217;autoriser que certaines IPs à y accéder </li>
<li>Utiliser <a href="http://www.fail2ban.org">fail2ban</a> pour limiter et contrer l&#8217;effet des scans</li>
</ul>
<h3>Utilisation de <a href="http://www.fail2ban.org">fail2ban</a></h3>
<p>J,ai trouvé un script tout fait… alors pourquoi se compliquer la vie ! Il est disponible à l&#8217;adresse suivante : <a href="http://foosel.org/blog/2008/04/banning_phpmyadmin_bots_using_fail2ban">http://foosel.org/blog/2008/04/banning_phpmyadmin_bots_using_fail2ban</a>.</p>
<p>Je le reprend ci-dessous avec quelques adaptations :</p>
<p><code>/etc/fail2ban/filter.d/apache-phpmyadmin.conf</code></p>

<div class="wp_syntax"><div class="code"><pre class="ini" style="font-family:monospace;"># Fail2Ban configuration file
# Bans bots scanning for non-existing phpMyAdmin installations on your webhost.
#
&nbsp;
<span style="color: #000066; font-weight:bold;"><span style="">&#91;</span>Definition<span style="">&#93;</span></span>
 # Option:  failregex
# Notes.:  Regexp to match often probed and not available phpmyadmin paths.
# Values:  TEXT
#
<span style="color: #000099;">failregex</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> <span style="color: #000066; font-weight:bold;"><span style="">&#91;</span><span style="">&#91;</span><span style="">&#93;</span>client &lt;HOST&gt;<span style="">&#91;</span><span style="">&#93;</span><span style="">&#93;</span></span> File does not exist: .*<span style="">&#40;</span>PMA|phpmyadmin|myadmin|mysql|mysqladmin|sqladmin|mypma|admin|xampp|mysqldb|mydb|db|pmadb|phpmyadmin1|myadmin2<span style="">&#41;</span></span>
&nbsp;
# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
<span style="color: #000099;">ignoreregex</span> <span style="color: #000066; font-weight:bold;">=</span></pre></div></div>

<p>Activer le filtre dans le fichier de configuration : <code>/etc/fail2ban/jail.conf</code> :</p>

<div class="wp_syntax"><div class="code"><pre class="ini" style="font-family:monospace;"><span style="color: #000066; font-weight:bold;"><span style="">&#91;</span>apache-phpmyadmin<span style="">&#93;</span></span>
<span style="color: #000099;">enabled</span>  <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> true</span>
<span style="color: #000099;">port</span>     <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> http,https</span>
<span style="color: #000099;">filter</span>   <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> apache-phpmyadmin</span>
<span style="color: #000099;">logpath</span>  <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> /var/log/apache/error.log</span>
<span style="color: #000099;">maxretry</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> 3</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.zapoyok.info/2010/07/30/supprimer-les-tentatives-dacces-a-phpmyadmin-en-utilisant-fail2ban/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Protection de vos scripts PHP : validation des données, XSS, CSRF,…</title>
		<link>http://www.zapoyok.info/2010/07/16/protection-de-vos-scripts-php-%c2%a0validation-des-donnees-xss-csrf%e2%80%a6/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=protection-de-vos-scripts-php-%25c2%25a0validation-des-donnees-xss-csrf%25e2%2580%25a6</link>
		<comments>http://www.zapoyok.info/2010/07/16/protection-de-vos-scripts-php-%c2%a0validation-des-donnees-xss-csrf%e2%80%a6/#comments</comments>
		<pubDate>Fri, 16 Jul 2010 06:15:31 +0000</pubDate>
		<dc:creator>Jérôme FIX</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Trucs et astuces]]></category>
		<category><![CDATA[CSRF]]></category>
		<category><![CDATA[filtre]]></category>
		<category><![CDATA[formulaire]]></category>
		<category><![CDATA[sécurité]]></category>
		<category><![CDATA[validate]]></category>
		<category><![CDATA[XSS]]></category>
		<category><![CDATA[Zend]]></category>

		<guid isPermaLink="false">http://www.zapoyok.info/?p=275</guid>
		<description><![CDATA[Aujourd&#8217;hui je commence une série d&#8217;articles sur quelques points de sécurité et de bon sens avec PHP. Ces articles n&#8217;ont et n&#8217;auront rien de bien original par rapport à ce que l&#8217;on peut glaner de ci de là sur Internet, mais ils pourront me ou vous servir d&#8217;aide mémoire ou de piqûre de rappel ! [...]]]></description>
			<content:encoded><![CDATA[<p>Aujourd&#8217;hui je commence une série d&#8217;articles sur quelques points de sécurité et de bon sens avec PHP.<br />
Ces articles n&#8217;ont et n&#8217;auront rien de bien original par rapport à ce que l&#8217;on peut glaner de ci de là sur Internet, mais ils pourront me ou vous servir d&#8217;aide mémoire ou de piqûre de rappel !</p>
<h2>Validation et filtrage des entrées</h2>
<p>Un maître mot : « <strong>Ne jamais faire confiance aux données étrangères</strong> » !<br />
Chaque donnée reçue doit être validée pour s&#8217;assurer qu&#8217;elle corresponde à ce que l&#8217;on attend réellement.</p>
<p>En PHP il existe de très nombreux outils de validation des données :</p>
<ol>
<li>Les opérateur de comparaison, de taille (chaînes, tableaux),…</li>
<li>L&#8217;utilisation de liste de valeurs autorisées (« white-list ») : <code lang="php">isset($hash[$var]) ... in_array($var, $allowed)</code></li>
<li>À l&#8217;aide d&#8217;expression régulières : preg_match(&#8216;/&#8230;/&#8217; , $var);</li>
<li>Extension <a href="http://fr.php.net/manual/fr/ref.ctype.php">ctype</a> : <code lang="php">ictype_digit($var);</code> qui va vérifier que <code lang="php">$var</code> ne contient que des chiffres</li>
<li>Les fonctions is_* : <code lang="php">is_scalar($var);</code></li>
<li>Depuis l&#8217;extension PHP 5.2, l&#8217;utilisation de l&#8217;extension <a href="http://fr.php.net/manual/fr/book.filter.php">Filter</a> est recommandée.<br />
Exemple d&#8217;utilisation  :</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$clean</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'param1'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">filter_input</span><span style="color: #009900;">&#40;</span>INPUT_POST<span style="color: #339933;">,</span> <span style="color: #0000ff;">'param1'</span><span style="color: #339933;">,</span> FILTER_VALIDATE_BOOLEAN<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$clean</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'email'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">filter_input</span><span style="color: #009900;">&#40;</span>INPUT_POST<span style="color: #339933;">,</span> <span style="color: #0000ff;">'email'</span><span style="color: #339933;">,</span> FILTER_VALIDATE_EMAIL<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

</li>
<li>Pour Zend l&#8217;utilisation des classes <a href="http://zendframework.com/manual/en/zend.validate.set.html">Zend_Validate_*</a> ainsi que la création de vos propres validateurs.</li>
</ol>
<p>Ces validations doivent s&#8217;appliquer sur les données reçues par  : <code lang="php">$_GET</code>, <code lang="php">$_POST</code>, <code lang="php">$_REQUEST</code>, <code lang="php">$_COOKIES</code>, <code lang="php">$_FILES</code> et certaines en provenance de <code lang="php">$_SERVER</code> (<code lang="php">$_SERVER['PHP_SELF']</code> par exemple.</p>
<h2>Échappement des sorties</h2>
<p>Une fois vos données validées, il reste à échapper les sorties afin d&#8217;éviter les attaques XSS (Cross-site scripting) : détournement de formulaires, modification de l&#8217;affichage, vols de cookies, de sessions, etc.</p>
<p>De même que pour la validation des données PHP contient tout le nécessaire pour effectuer ces opérations :</p>
<ul>
<li>Protéger les caractères sensibles : <code lang="php">htmlspecialchars($var);</code></li>
<li>Protéger tous les caractères : <code lang="php">htmlentities($var,...)</code> et <code lang="php">mb_htmlentities($var,...)</code>. Le deuxième paramètre, <code lang="php">ENT_COMPAT|ENT_QUOTES|ENT_NOQUOTES</code> est parfois important.</li>
<li>Enlever les balises HTML : <code lang="php">striptags($text);</code></li>
<li>Encodage spécique pour URL : <code lang="php">urlencode($var);</code></li>
<li>L&#8217;extension Filter peut non seulement valider comme vu au-dessus, mais aussi filtrer en sortie avec <code lang="php">FILTER_SANITIZE_*</code></li>
<li>Pour Zend l&#8217;utilisation des classes <a href="http://zendframework.com/manual/fr/zend.filter.set.html">Zend_Filter_*</a> est tout aussi aisée, avec la possibilité de <a href="http://zendframework.com/manual/fr/zend.filter.writing_filters.html">créer ses propres filtres</a> suivant ses besoins</li>
</ul>
<p>Attention au jeu de caractères, en particulier pour htmlentities() : problème d&#8217;affichage, voire de sécurité.<br />
Pour les charsets multi-octets (comme UTF-8), mb_htmlentities() est plus fiable.</p>
<h2>Protection des formulaires</h2>
<h3>S&#8217;assurer que les champs cachés ne sont pas modifiés</h3>
<p>Pour cela il suffit d&#8217;envoyer en parallèle un hash contrôlant la valeur du champ caché.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #000088;">$idhash</span> <span style="color: #339933;">=</span> <span style="color: #990000;">md5</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$id</span> <span style="color: #339933;">.</span> SALT<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
&lt;form action=&quot;edit.php&quot; method=&quot;POST&quot;&gt;
&lt;input type=&quot;hidden&quot; name=&quot;id&quot; value=&quot;<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$id</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&quot; /&gt;
&lt;input type=&quot;hidden&quot; name=&quot;idhash&quot; value=&quot;<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$idhash</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&quot; /&gt;
&lt;input type=&quot;submit&quot; value=&quot;Valider&quot; /&gt;
&lt;/form&gt;</pre></td></tr></table></div>

<p>Et à la réception des données, vérifier que le hash correspont bien à la valeur attendue :</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$id</span> <span style="color: #339933;">=</span> <span style="color: #990000;">filter_input</span><span style="color: #009900;">&#40;</span>INPUT_POST<span style="color: #339933;">,</span> <span style="color: #0000ff;">'id'</span><span style="color: #339933;">,</span> FILTER_VALIDATE_INT<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$idhash</span> <span style="color: #339933;">=</span> <span style="color: #990000;">filter_input</span><span style="color: #009900;">&#40;</span>INPUT_POST<span style="color: #339933;">,</span> <span style="color: #0000ff;">'idhash'</span><span style="color: #339933;">,</span> FILTER_VALIDATE_INT<span style="color: #339933;">,</span> FILTER_FLAG_ALLOW_HEX<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$idhash</span> <span style="color: #339933;">!==</span> <span style="color: #990000;">md5</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$id</span> <span style="color: #339933;">.</span> SALT<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Le formulaire est louche ! '</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<h3> Se prémunir des CSRF (Cross-Site Request Forgery) </h3>
<p>Les attaques CSRF consistent à faire exécuter des commandes involontaires aux utilisateurs accrédités d&#8217;un site. </p>
<p>Quelques astuces pour s&#8217;en prémunir ou au moins en limiter grandement la portée, certaines évidentes et facile à mettre en place, d&#8217;autres plus subtiles…</p>
<h4>Demander des confirmations à l&#8217;utilisateur pour les actions critiques</h4>
<p>Par exemple systématiquement demander une confirmation du style « Êtes vous certain de vouloir … » sur des actions sensibles comme la suppression, ou redemander de saisir le mot de passe lors de la modification de la configuration de votre site internet.</p>
<h4>Utiliser des jetons de validité dans les formulaires</h4>
<p>Le principe est simple : lorsqu&#8217;un utilisateur affiche un formulaire, on lui génère une clé. Cette clé sera valide pour un certain temps (quelques minutes, le temps de remplir le formulaire), et est liée uniquement au couple utilisateur/formulaire. Cette clé devra automatiquement être transmise avec le formulaire pour que celui ci puisse être validé ! </p>
<p>Dans le framework Zend il existe un élément de formulaire dédié à cet usage : <a href="http://framework.zend.com/apidoc/1.10/Zend_Form/Element/Zend_Form_Element_Hash.html"><strong>Zend_Form_Element_Hash,</strong></a> son utilisation est aisée :</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">class</span> Mon_Formulaire_anti_csrf <span style="color: #000000; font-weight: bold;">extends</span> Zend_Form <span style="color: #009900;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> init<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setMethod</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'post'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">addElement</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'submit'</span>
                     <span style="color: #339933;">,</span> <span style="color: #0000ff;">'submit'</span>
                     <span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'ignore'</span>   <span style="color: #339933;">=&gt;</span> <span style="color: #009900; font-weight: bold;">true</span>
                     <span style="color: #339933;">,</span> <span style="color: #0000ff;">'label'</span>    <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'Soumettre'</span>
                     <span style="color: #339933;">,</span><span style="color: #009900;">&#41;</span>
                     <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$form</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">addElement</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'hash'</span>
                       <span style="color: #339933;">,</span> <span style="color: #0000ff;">'no_csrf'</span>
                       <span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'salt'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'unique'</span><span style="color: #009900;">&#41;</span>
                       <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Le hash généré est stocké en session et sera ajouté  à la chaîne de validation du formulaire : s&#8217;il est différent de celui stocké, il y aura une erreur d&#8217;émise.</p>
<h4>Éviter d&#8217;utiliser des requêtes HTTP GET pour effectuer des actions</h4>
<p>Passer systématiquement par POST pour toutes les actions autres que celles de consultation de ressource : insertion, mise à jour ou suppression de données.<br />
Cette mesure va vous prémunir des attaques simples basées sur les images, mais pas de requêtes HTTP POST forgée en JavaScript par exemple.</p>
<h2>Quelques liens pour aller plus loin :</h2>
<ol>
<li><a href="http://fr.wikipedia.org/wiki/Cross-site_request_forgery">http://fr.wikipedia.org/wiki/Cross-site_request_forgery</a></li>
<li><a href="http://framework.zend.com/apidoc/1.10/Zend_Form/Element/Zend_Form_Element_Hash.html">Zend_Form_Element_Hash</a></li>
<li><a href="http://bigornot-fr.blogspot.com/2008/07/csrf-sea-surf-and-zend.html">http://bigornot-fr.blogspot.com/2008/07/csrf-sea-surf-and-zend.html</a></li>
<li><a href="http://truffo.fr/2010/03/les-filtres-php/">http://truffo.fr/2010/03/les-filtres-php/</a></li>
<li><a href="http://zendframework.com/manual/fr/zend.filter.html">http://zendframework.com/manual/fr/zend.filter.html</a></li>
<li><a href="http://zendframework.com/manual/fr/zend.validate.html">http://zendframework.com/manual/fr/zend.validate.html</a></li>
<li><a href="http://fr.php.net/manual/fr/book.filter.php">Extension Filter</a></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.zapoyok.info/2010/07/16/protection-de-vos-scripts-php-%c2%a0validation-des-donnees-xss-csrf%e2%80%a6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hugin &#8211; logiciel d&#8217;assemblage de panorama</title>
		<link>http://www.zapoyok.info/2010/05/24/hugin-logiciel-dassemblage-de-panorama/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=hugin-logiciel-dassemblage-de-panorama</link>
		<comments>http://www.zapoyok.info/2010/05/24/hugin-logiciel-dassemblage-de-panorama/#comments</comments>
		<pubDate>Mon, 24 May 2010 20:11:30 +0000</pubDate>
		<dc:creator>Jérôme FIX</dc:creator>
				<category><![CDATA[Trucs et astuces]]></category>
		<category><![CDATA[hugin]]></category>
		<category><![CDATA[panorama]]></category>
		<category><![CDATA[photo]]></category>

		<guid isPermaLink="false">http://www.zapoyok.info/?p=234</guid>
		<description><![CDATA[La problématique : Piètre photographe, un appareil numérique qui ne veut plus faire de photos nettes depuis une baignade forcée, pas de pied pour effectuer un panoramique : voilà le tableau est peint ! Mais voilà arrivé au col du Veyre au-dessus des Lacs de Crupillouse, j&#8217;ai tenté d&#8217;effectuer un diaporama à la main. De [...]]]></description>
			<content:encoded><![CDATA[<h2>La problématique :</h2>
<p>Piètre photographe, un appareil numérique qui ne veut plus faire de photos nettes depuis une baignade forcée, pas de pied pour effectuer un panoramique : voilà le tableau est peint !</p>
<p>Mais voilà arrivé  au <a href="http://www.geoportail.fr/visu2D.do?cg=djoxLjEqYzptZXRyb3BvbGUqY3Y6MS4wKnZ2OjEuMSp4eTo2LjI1MTYwNTc3NzA3NTk2fDQ0Ljc3NDMxMTkwMTE5OTIzKnM6NypwdjoxLjAqcDpkZWNvdXZlcnRlKmw6UGhvdG98MXwxMDB8MCxTY2FufDF8NjB8Mg%3D%3D"><strong>col du Veyre au-dessus des Lacs de Crupillouse</strong></a>, j&#8217;ai tenté d&#8217;effectuer un diaporama à la main.</p>
<p>De retour à la maison, j&#8217;ai bien tenté de réunir et réassembler les photos, mais le résultat n&#8217;était pas fameux, jugez plutôt :</p>
<div id="attachment_235" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.zapoyok.info/wp-content/uploads/2010/05/lacs_crupillouses.jpg"><img src="http://www.zapoyok.info/wp-content/uploads/2010/05/lacs_crupillouses-300x74.jpg" alt="" title="lacs de crupillouses (Hautes Alpes)" width="300" height="74" class="size-medium wp-image-235" /></a><p class="wp-caption-text">Assemblage barbare à la main</p></div>
<p>J&#8217;ai laissé tombé jusqu&#8217;à tomber sur Hugin, logiciel open source (GPL) permettant à des béotiens comme moi d&#8217;assembler facilement plusieurs photos ensemble pour recomposer um panorama.</p>
<h2>Les données − 4 photos de départ :</h2>
<p><a href="http://www.zapoyok.info/wp-content/uploads/2010/05/DSC06004.jpg"><img src="http://www.zapoyok.info/wp-content/uploads/2010/05/DSC06004-150x150.jpg" alt="" title="DSC06004" width="150" height="150" class="alignleft size-thumbnail wp-image-243" /></a></p>
<p><a href="http://www.zapoyok.info/wp-content/uploads/2010/05/DSC06005.jpg"><img src="http://www.zapoyok.info/wp-content/uploads/2010/05/DSC06005-150x150.jpg" alt="" title="DSC06005" width="150" height="150" class="alignleft size-thumbnail wp-image-243" /></a></p>
<div style="clear:both"></div>
<p><a href="http://www.zapoyok.info/wp-content/uploads/2010/05/DSC06007.jpg"><img src="http://www.zapoyok.info/wp-content/uploads/2010/05/DSC06007-150x150.jpg" alt="" title="DSC06007" width="150" height="150" class="alignleft size-thumbnail wp-image-243" /></a></p>
<p><a href="http://www.zapoyok.info/wp-content/uploads/2010/05/DSC06008.jpg"><img src="http://www.zapoyok.info/wp-content/uploads/2010/05/DSC06008-150x150.jpg" alt="" title="DSC06008" width="150" height="150" class="alignleft size-thumbnail wp-image-243" /></a></p>
<div style="clear:both"></div>
<h2>Utilisation du logiciel <a href="http://hugin.sourceforge.net/" lang="en">hugin</a></h2>
<p>Hugin est un logiciel d&#8217;assemblage de panorama et bien plus encore.</p>
<p>Le logiciel fonctionne de manière très intuitive, on « lie » les photos les unes au autres en faisant correspondre quelques points remarquables.<br />
<div id="attachment_248" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.zapoyok.info/wp-content/uploads/2010/05/liaison.png"><img src="http://www.zapoyok.info/wp-content/uploads/2010/05/liaison-300x180.png" alt="" title="liaison entre deux images" width="300" height="180" class="size-medium wp-image-248" /></a><p class="wp-caption-text">Exemple de points ramarquables entre deux photos</p></div><br />
Une fois toutes les photos rattachées il suffit de générer l&#8217;image finale, de vérifier, d&#8217;éventuellement reprendre quelques points… et d&#8217;admirer !</p>
<div id="attachment_238" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.zapoyok.info/wp-content/uploads/2010/05/lacs_crupillouse_200908.png"><img src="http://www.zapoyok.info/wp-content/uploads/2010/05/lacs_crupillouse_200908-300x75.png" alt="" title="lacs_crupillouse_200908" width="300" height="75" class="size-medium wp-image-238" /></a><p class="wp-caption-text">L'assemblage réalisé avec Hugin</p></div>
<p>Le logiciel est bourré d&#8217;options qui permettent sans doute d&#8217;améliorer le rendu, mais je n&#8217;ai pas pris le temps de jouer avec, le résultat suffisait à mon bonheur !</p>
<p>La page des tutoriaux : <a href="http://hugin.sourceforge.net/tutorials/index.shtml">http://hugin.sourceforge.net/tutorials/index.shtml</a></p>
<h2>Quelques mots sur les lacs de Crupillouse :</h2>
<p><a href="http://www.zapoyok.info/wp-content/uploads/2010/05/DSC05983.jpg"><img src="http://www.zapoyok.info/wp-content/uploads/2010/05/DSC05983-150x150.jpg" alt="" title="En route vers les lacs de Crupillouse" width="150" height="150" class="alignright size-thumbnail wp-image-251" /></a><br />
Les lacs surplombent la vallée de <a href="http://fr.wikipedia.org/wiki/Champol%C3%A9on">Champoléon</a> dans les Hautes-Alpes. On y accède par un excellent sentier muletier serpentant dans les barres rocheuses.<br />
La balade est longue (4 heures environ) mais le chemin n&#8217;est jamais difficile et le paysage est saisissant et les lacs valent vraiment le détour.</p>
<p>En cours de chemin on peut − avec un peu de chance − apercevoir des chamois dans les parois de la seconde partie de la randonnée.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zapoyok.info/2010/05/24/hugin-logiciel-dassemblage-de-panorama/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Utilisation de mysqlsniffer</title>
		<link>http://www.zapoyok.info/2010/05/21/utilisation-de-mysqlsniffer/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=utilisation-de-mysqlsniffer</link>
		<comments>http://www.zapoyok.info/2010/05/21/utilisation-de-mysqlsniffer/#comments</comments>
		<pubDate>Fri, 21 May 2010 17:47:31 +0000</pubDate>
		<dc:creator>Jérôme FIX</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[Trucs et astuces]]></category>
		<category><![CDATA[base de données]]></category>
		<category><![CDATA[libpcap]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[mysqlsniffer]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[tcpdump]]></category>

		<guid isPermaLink="false">http://www.zapoyok.info/?p=154</guid>
		<description><![CDATA[But et utilité : Pour pouvoir − en temps réel − visualiser et analyser et/ou capturer les requêtes effectuées sur un serveur ce petit logiciel est quasiment indispensable. Il permet d&#8217;afficher en détails les requêtes effectuées, les résultats de ces dernières,… Il est disponible sur le site : http://hackmysql.com/mysqlsniffer Installation : Sous Debian, il faut [...]]]></description>
			<content:encoded><![CDATA[<h2>But et utilité :</h2>
<p>Pour pouvoir − en temps réel − visualiser et analyser et/ou capturer les requêtes effectuées sur un serveur ce petit logiciel est quasiment indispensable.<br />
Il permet d&#8217;afficher en détails les requêtes effectuées, les résultats de ces dernières,…</p>
<p>Il est disponible sur le site : <a href="http://hackmysql.com/mysqlsniffer" target="_blank">http://hackmysql.com/mysqlsniffer</a></p>
<h2>Installation :</h2>
<p>Sous Debian, il faut au préalable installer libpcap-dev : <code>aptitude install libpcap-dev</code>.<br />
Puis :</p>
<ol>
<li><code>mkdir </code><code>mysqlsniffer </code></li>
<li><code>cd mysqlsniffer </code></li>
<li><code>wget http://hackmysql.com/code/mysqlsniffer.tgz </code></li>
<li><code>tar zxvf mysqlsniffer.tgz </code></li>
<li><code>gcc -O2 -lpcap -o mysqlsniffer mysqlsniffer.c packet_handlers.c misc.c </code></li>
</ol>
<h2>Utilisation :</h2>
<p>Attention ! La connexion à « écouter » doit se faire en TCP, il faut mettre 127.0.0.1 au lieu de localhost dans la configuration du client pour avoir un résultat !</p>
<p>Ensuite il suffit de lancer la commande <code>mysqlsniffer</code> et de lire le résultat dans la console ou le stocker dans un fichier pour une analyse ultérieure.</p>
<h3>Exemple de dump :</h3>
<p>Une simple requête (SELECT) qui récupère des préférences : </p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
</pre></td><td class="code"><pre class="sql" style="font-family:monospace;">127<span style="color: #66cc66;">.</span>0<span style="color: #66cc66;">.</span>0<span style="color: #66cc66;">.</span>1<span style="color: #66cc66;">.</span>47254 <span style="color: #66cc66;">&gt;</span> server: ID <span style="color: #cc66cc;">0</span> len <span style="color: #cc66cc;">26</span> COM_QUERY: <span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">*</span> <span style="color: #993333; font-weight: bold;">FROM</span> preferences
server <span style="color: #66cc66;">&gt;</span> 127<span style="color: #66cc66;">.</span>0<span style="color: #66cc66;">.</span>0<span style="color: #66cc66;">.</span>1<span style="color: #66cc66;">.</span>47254: ID <span style="color: #cc66cc;">1</span> len <span style="color: #cc66cc;">1</span> <span style="color: #cc66cc;">6</span> <span style="color: #993333; font-weight: bold;">FIELDS</span>
        ID <span style="color: #cc66cc;">2</span> len <span style="color: #cc66cc;">76</span> <span style="color: #993333; font-weight: bold;">FIELD</span>: preferences<span style="color: #66cc66;">.</span>categorie <span style="color: #66cc66;">&lt;</span>type var string <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">509</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">SIZE</span> <span style="color: #cc66cc;">50</span><span style="color: #66cc66;">&gt;</span>
        ID <span style="color: #cc66cc;">3</span> len <span style="color: #cc66cc;">66</span> <span style="color: #993333; font-weight: bold;">FIELD</span>: preferences<span style="color: #66cc66;">.</span><span style="color: #993333; font-weight: bold;">TYPE</span> <span style="color: #66cc66;">&lt;</span>type var string <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">509</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">SIZE</span> <span style="color: #cc66cc;">50</span><span style="color: #66cc66;">&gt;</span>
        ID <span style="color: #cc66cc;">4</span> len <span style="color: #cc66cc;">62</span> <span style="color: #993333; font-weight: bold;">FIELD</span>: preferences<span style="color: #66cc66;">.</span>id <span style="color: #66cc66;">&lt;</span>type var string <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1021</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">SIZE</span> <span style="color: #cc66cc;">255</span><span style="color: #66cc66;">&gt;</span>
        ID <span style="color: #cc66cc;">5</span> len <span style="color: #cc66cc;">82</span> <span style="color: #993333; font-weight: bold;">FIELD</span>: preferences<span style="color: #66cc66;">.</span>defaultvalue <span style="color: #66cc66;">&lt;</span>type <span style="color: #993333; font-weight: bold;">BLOB</span> <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">4604</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">SIZE</span> <span style="color: #cc66cc;">65535</span><span style="color: #66cc66;">&gt;</span>
        ID <span style="color: #cc66cc;">6</span> len <span style="color: #cc66cc;">68</span> <span style="color: #993333; font-weight: bold;">FIELD</span>: preferences<span style="color: #66cc66;">.</span>label <span style="color: #66cc66;">&lt;</span>type var string <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">509</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">SIZE</span> <span style="color: #cc66cc;">255</span><span style="color: #66cc66;">&gt;</span>
        ID <span style="color: #cc66cc;">7</span> len <span style="color: #cc66cc;">80</span> <span style="color: #993333; font-weight: bold;">FIELD</span>: preferences<span style="color: #66cc66;">.</span>description <span style="color: #66cc66;">&lt;</span>type <span style="color: #993333; font-weight: bold;">BLOB</span> <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">4604</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">SIZE</span> <span style="color: #cc66cc;">65535</span><span style="color: #66cc66;">&gt;</span>
        ID <span style="color: #cc66cc;">8</span> len <span style="color: #cc66cc;">5</span> <span style="color: #993333; font-weight: bold;">END</span> <span style="color: #66cc66;">&lt;</span>warnings <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&gt;</span>
        ID <span style="color: #cc66cc;">9</span> len <span style="color: #cc66cc;">119</span> <span style="color: #66cc66;">||</span> diagnostic <span style="color: #66cc66;">|</span> text <span style="color: #66cc66;">|</span> departement_favori <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">57</span> <span style="color: #66cc66;">|</span> Département par défaut <span style="color: #66cc66;">|</span> Doit être un des départements français <span style="color: #66cc66;">&#40;</span>format numérique<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">||</span>
        ID <span style="color: #cc66cc;">10</span> len <span style="color: #cc66cc;">49</span> <span style="color: #66cc66;">||</span> synchro <span style="color: #66cc66;">|</span> text <span style="color: #66cc66;">|</span> login <span style="color: #66cc66;">|</span> XXX <span style="color: #66cc66;">|</span> Votre compte utilisateur <span style="color: #66cc66;">|</span>  <span style="color: #66cc66;">||</span>
        ID <span style="color: #cc66cc;">11</span> len <span style="color: #cc66cc;">61</span> <span style="color: #66cc66;">||</span> divers <span style="color: #66cc66;">|</span> text <span style="color: #66cc66;">|</span> nb_clients_par_page <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">30</span> <span style="color: #66cc66;">|</span> Nombre de clients listés <span style="color: #66cc66;">|</span>  <span style="color: #66cc66;">||</span> 
        ID <span style="color: #cc66cc;">12</span> len <span style="color: #cc66cc;">61</span> <span style="color: #66cc66;">||</span> divers <span style="color: #66cc66;">|</span> text <span style="color: #66cc66;">|</span> nb_projets_par_page <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">30</span> <span style="color: #66cc66;">|</span> Nombre de projets listés <span style="color: #66cc66;">|</span>  <span style="color: #66cc66;">||</span>
        ID <span style="color: #cc66cc;">13</span> len <span style="color: #cc66cc;">48</span> <span style="color: #66cc66;">||</span> synchro <span style="color: #66cc66;">|</span> String <span style="color: #66cc66;">|</span> password <span style="color: #66cc66;">|</span> XXX <span style="color: #66cc66;">|</span> Votre mot de passe <span style="color: #66cc66;">|</span>  <span style="color: #66cc66;">||</span>
        ID <span style="color: #cc66cc;">14</span> len <span style="color: #cc66cc;">66</span> <span style="color: #66cc66;">||</span> diagnostic <span style="color: #66cc66;">|</span> text <span style="color: #66cc66;">|</span> rapport_pcs_2_m3 <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">10.6</span> <span style="color: #66cc66;">|</span> Taux de conversion PCS<span style="color: #66cc66;">-&gt;</span>M3 <span style="color: #66cc66;">|</span>  <span style="color: #66cc66;">||</span>
        ID <span style="color: #cc66cc;">15</span> len <span style="color: #cc66cc;">60</span> <span style="color: #66cc66;">||</span> synchro <span style="color: #66cc66;">|</span> text <span style="color: #66cc66;">|</span> sapid <span style="color: #66cc66;">|</span> xxx <span style="color: #66cc66;">|</span> Votre identifiant de compte <span style="color: #66cc66;">&#40;</span>SAPID<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">|</span>  <span style="color: #66cc66;">||</span>
        ID <span style="color: #cc66cc;">16</span> len <span style="color: #cc66cc;">5</span> <span style="color: #993333; font-weight: bold;">END</span> <span style="color: #66cc66;">&lt;</span>warnings <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&gt;</span></pre></td></tr></table></div>

<h2>Une autre façon de récupérer toutes les requêtes exécutées sur le serveur en écoute : <strong>TCPDUMP</strong></h2>
<p>Cette méthode ne permet pas de récupérer les infos complètes</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;">tcpdump <span style="color: #660033;">-i</span> lo <span style="color: #660033;">-s</span> <span style="color: #000000;">0</span> <span style="color: #660033;">-l</span> <span style="color: #660033;">-w</span> - dst port <span style="color: #000000;">3306</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">strings</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">perl</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">'
while(&amp;lt;&amp;gt;) { chomp; next if /^[^ ]+[ ]*$/;
if(/^(SELECT|UPDATE|DELETE|INSERT|SET|COMMIT|ROLLBACK|CREATE|DROP|ALTER|SHOW)/i) {
if (defined $q) { print &quot;$q\n&quot;; }
$q=$_;
} else {
$_ =~ s/^[ \t]+//; $q.=&quot; $_&quot;;
}
}'</span></pre></td></tr></table></div>

<p>On peut trouver de nombreux autres outils pour MYSQL sur le site : <a href="http://hackmysql.com/tools" lang="en">http://hackmysql.com/tools</a> avec notamment <a href="http://hackmysql.com/mysqlreport" lang="en">mysqlreport</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.zapoyok.info/2010/05/21/utilisation-de-mysqlsniffer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mozilla Weave &#8211; Intérêt et mise en place</title>
		<link>http://www.zapoyok.info/2010/03/14/mozilla-weave-interet-et-mise-en-place/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mozilla-weave-interet-et-mise-en-place</link>
		<comments>http://www.zapoyok.info/2010/03/14/mozilla-weave-interet-et-mise-en-place/#comments</comments>
		<pubDate>Sun, 14 Mar 2010 10:01:00 +0000</pubDate>
		<dc:creator>Jérôme FIX</dc:creator>
				<category><![CDATA[Trucs et astuces]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[synchronisation]]></category>
		<category><![CDATA[weave]]></category>

		<guid isPermaLink="false">http://devel.zapoyok.dnsalias.com/2010/03/14/mozilla-weave-interet-et-mise-en-place/</guid>
		<description><![CDATA[<p><img title="weave-header.png, mar. 2010" style="margin: 0 0 1em 1em; float: right;" alt="" src="/public/2010/03/weave-header.png" />Mozilla Weave kezaco ? </p> <p>Il s'agit de la solution de Mozilla qui permet de partager entre plusieurs versions de Firefox un même profil (historique de navigation, marque-pages, mots de passe,…)</p> <p>Il s'utilise de deux façons différentes : </p> <ol><li>stockage des informations sur un serveur hébergé chez la Fondation Mozilla.</li> <li>Ou sur un serveur que vous auriez monté vous même</li> </ol> A la vue des informations stockées, c'est le second type de configuration que je trouve la plus intéressante.<br />]]></description>
			<content:encoded><![CDATA[<p><img title="weave-header.png, mar. 2010" style="margin: 0 0 1em 1em; float: right;" alt="" src="/public/2010/03/weave-header.png" />Mozilla Weave kezaco ? </p>
<p>Il s&#8217;agit de la solution de Mozilla qui permet de partager entre plusieurs versions de Firefox un même profil (historique de navigation, marque-pages, mots de passe,…)</p>
<p>Il s&#8217;utilise de deux façons différentes : </p>
<ol>
<li>stockage des informations sur un serveur hébergé chez la Fondation Mozilla.</li>
<li>Ou sur un serveur que vous auriez monté vous même</li>
</ol>
<p> A la vue des informations stockées, c&#8217;est le second type de configuration que je trouve la plus intéressante.<br />
<span id="more-51"></span></p>
<h3>Quels en sont les principaux intérêts ?</h3>
<ul>
<li>Obtenir les mêmes résultats en faisant ses recherches avec la «&nbsp;<acronym title="barre géniale">Awesome Bar</acronym>&nbsp;» pour toutes les instances de Firefox (pc de la maison, PC du bureau, Notebook, …) grâce au partage de l&#8217;historique et des favoris.</li>
<li>La possibilité d&#8217;ouvrir le même set de tabs que sur une autre machine (Onglet Historique)</li>
<li>Partager ses favoris entre les différents Firefox utilisé.</li>
<li>Partager ses mots de passe entre plusieurs machines.</li>
<li>Les données sont cryptées pour les transferts et pour le stockage</li>
<li>Possibilité d&#8217;avoir et de maintenir <strong>son propre serveur Weave</strong></li>
</ul>
<h3> Quelques inconvénients :</h3>
<ul>
<li>« Mozilla centrique »</li>
<li>Installation du serveur d&#8217;enregistrement et de synchronisation nécessite de mettre un peu les mains dans le cambouis.</li>
</ul>
<p>
<h3>Installation de son propre serveur Weave</h3>
<p>
<h4>The Weave Registration Server</h4>
<p> On va éviter de reprendre mot pour mot la page de Mozilla, surtout qu&#8217;elle est complète et plus que compréhensive : <a hreflang="en" href="https://wiki.mozilla.org/Labs/Weave/User/1.0/Setup">https://wiki.mozilla.org/Labs/Weave/User/1.0/Setup</a>.<br />J&#8217;ai suivi les instructions fournies sur cette page mot à mot et c&#8217;est ok.<br />Les pré-requis sont du plus classique : PHP 5.1+, MySQL, &#8230; J&#8217;ai fait l&#8217;installation sous PHP 5.3 et aucun souci !</p>
<h4><span class="mw-headline">Weave Authentication </span></h4>
<p> Idem que le service précédent, pas de difficulté particulière à l&#8217;installation et/ou la configuiration en suivant les instructions de la page suivante : <a hreflang="en" href="https://wiki.mozilla.org/Labs/Weave/Sync/1.0/Setup">https://wiki.mozilla.org/Labs/Weave/Sync/1.0/Setup</a></p>
<p>Il existe aussi une <a hreflang="en" href="https://wiki.mozilla.org/Weave/Experimental_Clients/Web">application Web</a> permettant de consulter les informations stockées via un navigateur (pas encore essayé).</p>
<p>Quelques liens utiles :
<ul>
<li><a hreflang="en" href="https://mozillalabs.com/weave/">https://mozillalabs.com/weave/</a></li>
<li><a hreflang="en" href="https://wiki.mozilla.org/Weave/Experimental_Clients/Web">https://wiki.mozilla.org/Weave/Experimental_Clients/Web</a></li>
<li><a hreflang="en" href="https://wiki.mozilla.org/Labs/Weave/User/1.0/Setup">https://wiki.mozilla.org/Labs/Weave/User/1.0/Setup</a></li>
<li><a hreflang="en" href="https://wiki.mozilla.org/Labs/Weave/Sync/1.0/Setup">https://wiki.mozilla.org/Labs/Weave/Sync/1.0/Setup</a></li>
</ul>
<p></p>
]]></content:encoded>
			<wfw:commentRss>http://www.zapoyok.info/2010/03/14/mozilla-weave-interet-et-mise-en-place/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

