<?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>Le blog de Michauko &#187; autres outils</title>
	<atom:link href="http://michauko.org/blog/category/autres-outils/feed/" rel="self" type="application/rss+xml" />
	<link>http://michauko.org/blog</link>
	<description>Si tu ne comprends pas le titre de l&#039;article, passe ton chemin</description>
	<lastBuildDate>Tue, 29 Nov 2011 11:45:57 +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>scp et SSH en PHP</title>
		<link>http://michauko.org/blog/2011/06/29/scp-et-ssh-en-php/</link>
		<comments>http://michauko.org/blog/2011/06/29/scp-et-ssh-en-php/#comments</comments>
		<pubDate>Wed, 29 Jun 2011 11:36:49 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[autres outils]]></category>
		<category><![CDATA[dev]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[pecl]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[scp]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[ssh2.so]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=1244</guid>
		<description><![CDATA[Hop, J&#8217;ai eu besoin de faire un script un peu évolué pour jouer avec une base Oracle et des fichiers à ramener depuis un serveur distant. Bref, j&#8217;ai pensé au PHP pour faire un truc assez fin, mêlant Oracle et des transferts de fichiers en &#171;&#160;scp&#160;&#187;. Seule difficulté, installer le module SSH pour PHP. Ce [...]]]></description>
			<content:encoded><![CDATA[<p>Hop,<br />
J&#8217;ai eu besoin de faire un script un peu évolué pour jouer avec une base Oracle et des fichiers à ramener depuis un serveur distant.<br />
Bref, j&#8217;ai pensé au PHP pour faire un truc assez fin, mêlant Oracle et des transferts de fichiers en &laquo;&nbsp;scp&nbsp;&raquo;.</p>
<p>Seule difficulté, installer le module SSH pour PHP. Ce que je décris ici.<br />
Ensuite, les bouts de codes exemple sont sur <a href="http://www.php.net/manual/fr/book.ssh2.php" target="_blank">la doc de PHP</a>.</p>
<h1>Côté serveur Debian</h1>
<p>J&#8217;étais parti de l&#8217;installation PECL directement, ça plante, il manquait des petits bouts côté Debian<span id="more-1244"></span>. Je montre pour l&#8217;exemple :</p>
<pre>srv:~# pecl install ssh2 "channel://pecl.php.net/ssh2-0.11.2"
Failed to download pecl/ssh2 within preferred state "stable", latest release is version 0.11.2, stability "beta", use "channel://pecl.php.net/ssh2-0.11.2" to install
downloading ssh2-0.11.2.tgz ...
Starting to download ssh2-0.11.2.tgz (22,740 bytes)
........done: 22,740 bytes
[...]
checking for ssh2 files in default path... not found
configure: error: The required libssh2 library was not found.  You can obtain that package from http://sourceforge.net/projects/libssh2/
ERROR: `/tmp/pear/temp/ssh2/configure --with-ssh2' failed
</pre>
<p>Donc, il faut d&#8217;abord installer tout ça :</p>
<pre>srv:~# apt-cache search libssh2
libnet-ssh2-perl - Perl module for the SSH 2 protocol
libssh2-1-dbg - SSH2 client-side library (debug package)
libssh2-1-dev - SSH2 client-side library (development headers)
libssh2-1 - SSH2 client-side library
libssh2-php - PHP Bindings for libssh2
python-libssh2 - Python binding for libssh2 library

srv:~# aptitude install libssh2-1-dev libssh2-php</pre>
<h1>Installation du module avec PECL</h1>
<p>On peut donc enfin installer le module :</p>
<pre>srv:~# pecl install ssh2 "channel://pecl.php.net/ssh2-0.11.2"
Failed to download pecl/ssh2 within preferred state "stable", latest release is version 0.11.2, stability "beta", use "channel://pecl.php.net/ssh2-0.11.2" to install
[...]
Build process completed successfully
Installing '/usr/lib/php5/20090626+lfs/ssh2.so'
install ok: channel://pecl.php.net/ssh2-0.11.2
configuration option "php_ini" is not set to php.ini location
You should add "extension=ssh2.so" to php.ini
aladdin:~# grep extension /etc/php5 -r
/etc/php5/conf.d/gd.ini:extension=gd.so
/etc/php5/conf.d/ssh2.ini:extension=ssh2.so
/etc/php5/conf.d/snmp.ini:extension=snmp.so</pre>
<p>L&#8217;installation se charge toute seule d&#8217;activer l&#8217;extension ssh2.so dans les fichiers de conf PHP.</p>
<h1>Exemple de code d&#8217;un transfert</h1>
<pre>define ("SSH_KEY","/path/to/.ssh/id_dsa");
define ("SSH_FINGERPRINT","BXXXXXXXXXXXXXXXXXXXXXX81"); # à récupérer la première fois
...
$ssh = ssh2_connect(SSH_SERVER,SSH_PORT);
if (ssh2_fingerprint ($ssh,SSH2_FINGERPRINT_MD5) != SSH_FINGERPRINT) { # bien penser à contrôler le fingerprint ; c'est dommage de s'en priver !
  echo "c'est mal";
}
if (!ssh2_auth_pubkey_file($ssh, SSH_LOGIN, SSH_KEY.".pub", SSH_KEY, '')) {
  echo "authentif par clef ratée";
}
...
if (@ssh2_scp_recv ($ssh, $fich_src, $fich_dest)) {
  echo "transfert OK";
}
...
</pre>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2011/06/29/scp-et-ssh-en-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VMESXi 4.0, accès root et authentification par clef SSH</title>
		<link>http://michauko.org/blog/2010/10/28/vmesxi-4-0-acces-root-et-authentification-par-clef-ssh/</link>
		<comments>http://michauko.org/blog/2010/10/28/vmesxi-4-0-acces-root-et-authentification-par-clef-ssh/#comments</comments>
		<pubDate>Thu, 28 Oct 2010 08:42:36 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[autres outils]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[datastore]]></category>
		<category><![CDATA[ESXi]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[unsupported]]></category>
		<category><![CDATA[VMWare]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=1151</guid>
		<description><![CDATA[Hello, Ce qui suit était valable jusqu&#8217;à ESXi 4.0. Je n&#8217;ai pas regardé en 4.1 pour l&#8217;instant. Vous me direz (ou moi plus tard). Cet article explique comment activer le serveur SSH sur un hôte VMWare ESXi 4.0 et comment mettre en place un &#171;&#160;authorized_keys&#160;&#187; durable (car le home du root saute à chaque reboot). [...]]]></description>
			<content:encoded><![CDATA[<p>Hello,</p>
<p>Ce qui suit était valable jusqu&#8217;à ESXi 4.0. Je n&#8217;ai pas regardé en 4.1 pour l&#8217;instant. Vous me direz (ou moi plus tard).<br />
Cet article explique comment activer le serveur SSH sur un hôte VMWare ESXi 4.0 et comment mettre en place un &laquo;&nbsp;authorized_keys&nbsp;&raquo; durable (car le home du root saute à chaque reboot). Je présente aussi rapidement quelques trucs indispensables pour se promener dans l&#8217;hôte.<br />
L&#8217;intérêt de la chose est de pouvoir lancer directement certaines commandes depuis un serveur ESXi via une session SSH et aussi, pour l&#8217;authentification par clef, de scripter certaines choses. Par exemple l&#8217;arrêt / copie des fichiers vmdk / relance de serveurs pour automatiser des full backup offline.</p>
<p>Let&#8217;s go!<span id="more-1151"></span></p>
<h1>Activation du SSH</h1>
<p>Ce n&#8217;est pas supporté par VMWare, mais ça existe quand même. On se demande bien pourquoi <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Sur la console de votre hôte, vous appuyez sur ALT-F1 pour passer sur une session console &laquo;&nbsp;habituelle&nbsp;&raquo; du monde Linux.<br />
Là, en aveugle (pas d&#8217;écho à l&#8217;écran), vous tapez &laquo;&nbsp;unsupported&nbsp;&raquo;, sans les guillemets bien sûr et validez par la touche &laquo;&nbsp;Entrée&nbsp;&raquo;.<br />
Vous obtiendrez une demande de mot de passe, le pass de votre compte root.<br />
Ca y est, vous êtes connecté à la console.<br />
Vous pouvez alors aller éditer le fichier <code>/etc/inetd.conf</code>, avec l&#8217;éditeur &laquo;&nbsp;<code>vi</code>&nbsp;&raquo; et décommenter la ligne SSH en IPv4.<br />
Ensuite, soit vous redémarrez le serveur, soit vous redémarrez <code>inetd</code>.<br />
Testez votre connexion SSH depuis un autre ordi, histoire de valider.</p>
<h1>Et maintenant ?</h1>
<p>Super, je peux faire du SSH sur le serveur, mais pour quoi faire ?<br />
Personnellement, il m&#8217;arrive de déplacer des machines virtuelles d&#8217;un serveur à l&#8217;autre, dont les fichiers vmdk ne sont pas sur un SAN partagé. Plutôt que de super-galérer avec le &laquo;&nbsp;vSphere Client&nbsp;&raquo; -> &laquo;&nbsp;Browse datastore&nbsp;&raquo; -> etc, je préfère faire faire quelques &laquo;&nbsp;scp&nbsp;&raquo; par exemple.<br />
Et surtout, vous pouvez faire tout ce que permet &laquo;&nbsp;vSphere Client&nbsp;&raquo; mais en mode texte. Bref, parfois, c&#8217;est pratique.</p>
<h2>vim-cmd</h2>
<p>L&#8217;outil essentiel est la command &laquo;&nbsp;<code>vim-cmd</code>&nbsp;&raquo; (rien à voir avec &laquo;&nbsp;VIm&nbsp;&raquo;), documentez-vous dessus.<br />
Commencez par taper &laquo;&nbsp;<code>vim-cmd</code>&nbsp;&raquo; tout seul, puis &laquo;&nbsp;<code>vim-cmd vmsvc/</code>&nbsp;&raquo; par exemple. Les noms de fonctions sont souvent éloquents.</p>
<p>Vous pourrez par exemple :</p>
<ul>
<li>
obtenir la liste des VM : vim-cmd vmsvc/getallvms
</li>
<li>
obtenir l&#8217;état d&#8217;une VM : vim-cmd vmsvc/power.getstate &lt;ID&gt;
</li>
<li>
en arrêter proprement une (pas &laquo;&nbsp;électriquement&nbsp;&raquo;) : vim-cmd vmsvc/power.off &lt;ID&gt;
</li>
<li>
en rallumer une : vim-cmd vmsvc/power.on &lt;ID&gt;
</li>
</ul>
<p>etc&#8230;</p>
<h2>Stockage des machines virtuelles</h2>
<p>Dans <code>/vmfs/volumes/</code>, vous trouverez les noms de code de vos &laquo;&nbsp;datastores&nbsp;&raquo; et des liens symboliques pointant vers ces noms pourris, histoire de s&#8217;y retrouver. Ces liens sont les noms que vous avez affecté via &laquo;&nbsp;vSphere Client&nbsp;&raquo;.<br />
De là, vous allez vite retrouver vos fichiers vmdk &#038; co.</p>
<h1>authorized_keys</h1>
<p>Si vous avez besoin de stocker dans le home du root (qui est &laquo;&nbsp;/&nbsp;&raquo; et non un habituel &laquo;&nbsp;/root&nbsp;&raquo;) un fichier &laquo;&nbsp;~/.ssh/authorized_keys&nbsp;&raquo;, sachez qu&#8217;il saute à chaque reboot.<br />
Ce que j&#8217;ai fait pour contrer celà, c&#8217;est d&#8217;ajouter au script &laquo;&nbsp;/etc/rc.local&nbsp;&raquo; la recopie de ce fichier stocké au préalable dans un &laquo;&nbsp;datastore&nbsp;&raquo; local.<br />
Ca donne :</p>
<pre>~ # tail /etc/rc.local
         if [ -f $filename ] &#038;&#038; [ -x $filename ]; then
            log "running $filename"
            $filename
         fi
      done
fi

<strong>mkdir /.ssh
cd /vmfs/volumes/DataStoreLocal/pour_reboot/.ssh/
cp authorized_keys /.ssh/</strong></pre>
<p>J&#8217;avais d&#8217;abord créé ce fameux &laquo;&nbsp;pour_reboot&nbsp;&raquo; + le répertoire &laquo;&nbsp;.ssh/&nbsp;&raquo; + le fichier &laquo;&nbsp;authorized_keys&nbsp;&raquo; dans le datastore qui va bien (ce n&#8217;est pas son nom d&#8217;origine, c&#8217;est plutôt &laquo;&nbsp;datastore1&#8243; sur une machine fraîchement installée).</p>
<p>Et voilà, avec un accès SSH, un hôte ESXi ressemble quand même plus à quelque chose, non ? <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2010/10/28/vmesxi-4-0-acces-root-et-authentification-par-clef-ssh/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Changer son mot de passe dans roundcubemail+postfix+utilisateurs virtuels</title>
		<link>http://michauko.org/blog/2010/10/07/changer-son-mot-de-passe-dans-roundcubemailpostfixutilisateurs-virtuels/</link>
		<comments>http://michauko.org/blog/2010/10/07/changer-son-mot-de-passe-dans-roundcubemailpostfixutilisateurs-virtuels/#comments</comments>
		<pubDate>Thu, 07 Oct 2010 15:42:02 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[autres outils]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[postfix]]></category>
		<category><![CDATA[roundcube]]></category>
		<category><![CDATA[webmail]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=1126</guid>
		<description><![CDATA[Dans la lignée des articles suivant : Montage d&#8217;un serveur complet postfix et outils annexes &#8230;en y ajoutant des domaines et utilisateurs virtuels &#8230;et à la limite un répondeur (vacation) sur des utilisateurs virtuels &#8230;en oubliant la partie roundcubemail (facile à installer, j&#8217;ai pas fait d&#8217;article, désolé) Voici maintenant comment &#171;&#160;configurer et activer le plugin [...]]]></description>
			<content:encoded><![CDATA[<p>Dans la lignée des articles suivant :</p>
<ul>
<li>
<a href="http://michauko.org/blog/2009/09/21/montage-dun-serveur-de-mail-complet-postfix-postgrey-amavisd-new-clamav-spamassassin-etc/">Montage d&#8217;un serveur complet postfix et outils annexes</a>
</li>
<li>
<a href="http://michauko.org/blog/2009/10/20/postfix-utilisateurs-virtuels-mysql-acces-pop3s-imaps-sasl-et-tls-quota-bingo-jai-tout-mis-dans-le-titre/">&#8230;en y ajoutant des domaines et utilisateurs virtuels</a>
</li>
<li>
<a href="http://michauko.org/blog/2010/06/16/utilisateurs-postfix-virtuels-ajouter-un-repondeur-vacation/">&#8230;et à la limite un répondeur (vacation) sur des utilisateurs virtuels</a>
</li>
<li>
&#8230;en oubliant la partie roundcubemail (facile à installer, j&#8217;ai pas fait d&#8217;article, désolé)
</li>
</ul>
<p>Voici maintenant comment &laquo;&nbsp;<strong>configurer et activer le plugin de changement de mot de passe dans roundcubemail (actuellement v0.4) sur des utilisateurs virtuels (SQL)</strong>&laquo;&nbsp;. Depuis la 0.4, le plugin est intégré et propre. Pas la peine d&#8217;ajouter du code PHP un peu partout.<br />
Notez que le plugin est modulaire et gère des &laquo;&nbsp;drivers&nbsp;&raquo; pour l&#8217;authentification : sql, ldap, poppassd, cyrus/SASL etc.<br />
Allez, let&#8217;s go!<span id="more-1126"></span></p>
<p>Vu que j&#8217;avais eu quelques déboires avec les vieilles versions de roundcube, je suis parti sur la dernière release stable du site officiel, pas d&#8217;une version packagée Debian.</p>
<p>Toute la doc tient dans un README simpliste, dans vos sources roundcubemail, fichier <code>/plugins/password/README</code>. Mon article applique ceci en expliquant un peu plus&#8230;</p>
<p>Je considère que vous partez d&#8217;une configuration d&#8217;utilisateurs virtuels comme décrite dans mes docs mentionnés en haut de l&#8217;article. Sinon il faut adapter et je ne peux pas prédire ce que vous devez écrire <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .<br />
Dans vos sources roundcube, renommez/copiez le fichier <code>/plugins/password/config.inc.php.dist</code> en <code>/plugins/password/config.inc.php</code> et modifiez uniquement ce qui suit :</p>
<pre>$rcmail_config['password_db_dsn'] = 'mysql://admin:son_pass@localhost/ma_base';
$rcmail_config['password_query'] = 'UPDATE ma_base.users SET password=ENCRYPT(%p) WHERE email=%u LIMIT 1';</pre>
<p>Dans <code>password_db_dsn</code>, on indique la base de données des utilisateurs virtuels. Puisque l&#8217;outil roundcube bosse sur SA base de données, il faudra bien qu&#8217;il aille voir autre part. A vous de voir si vous lui donnez l&#8217;accès admin à votre base ou un compte sur mesure capable de faire des UPDATE uniquement sur la table des utilisateurs. Ca ou tous les droits, c&#8217;est pas foncièrement différent me direz-vous.<br />
Dans <code>password_query</code>, on indique la requête d&#8217;UPDATE. Remarques :</p>
<ul>
<li>
Non, pas la peine d&#8217;ajouter un &laquo;&nbsp;WHERE&#8230; AND password = ENCRYPT(%o)&nbsp;&raquo; pour soit disant contrôler que l&#8217;ancien pass est le bon. D&#8217;une part c&#8217;est contrôlé au niveau de la session PHP via une fonction &laquo;&nbsp;decrypt&nbsp;&raquo; (cherchez dans le code) et d&#8217;autre part, ENCRYPT ne produit pas nécessairement le même résultat pour un pass donné, l&#8217;histoire du &#8216;salt&#8217;, aléatoire lorsqu&#8217;on ne le précise pas (amha).
</li>
<li>
On limite à 1 par sécurité et aussi car le plugin gueule s&#8217;il n&#8217;a pas modifié qu&#8217;une ligne. En même temps, il a raison <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />
</li>
<li>
Je préfère forcer le nom complet &laquo;&nbsp;ma_base.users&nbsp;&raquo; pour éviter une erreur, si 2 tables avaient le même nom dans les 2 bases, je pense</li>
</ul>
<p>J&#8217;ai passé sous silence ces 2 paramètres déjà OK de base :</p>
<pre>$rcmail_config['password_driver'] = 'sql';
$rcmail_config['password_confirm_current'] = true;</pre>
<p>Enfin, on active le plugin dans la conf principale, fichier <code>config/main.inc.php</code> :</p>
<pre>$rcmail_config['plugins'] = array('password');</pre>
<p>Voilà, c&#8217;est tout. Rechargez la page des préférences sur roundcube. Tout ceci étant en PHP, c&#8217;est dynamique et vous verrez l&#8217;onglet de changement de mot de passe, et il devrait fonctionner <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://michauko.org/blog/wp-content/uploads/2010/10/rcube_password.png"><img src="http://michauko.org/blog/wp-content/uploads/2010/10/rcube_password.png" alt="" title="rcube_password" width="636" height="241" class="aligncenter size-full wp-image-1134" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2010/10/07/changer-son-mot-de-passe-dans-roundcubemailpostfixutilisateurs-virtuels/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>PS3mediaserver sur une Debian toute fraîche : serveur DLNA/uPNP/bidule pour la PS3</title>
		<link>http://michauko.org/blog/2010/09/29/ps3mediaserver-sur-une-debian-toute-fraiche-serveur-dlnaupnpbidule-pour-la-ps3/</link>
		<comments>http://michauko.org/blog/2010/09/29/ps3mediaserver-sur-une-debian-toute-fraiche-serveur-dlnaupnpbidule-pour-la-ps3/#comments</comments>
		<pubDate>Wed, 29 Sep 2010 09:40:14 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[autres outils]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[PS3]]></category>
		<category><![CDATA[DLNA]]></category>
		<category><![CDATA[ffmpeg]]></category>
		<category><![CDATA[mencoder]]></category>
		<category><![CDATA[mplayer]]></category>
		<category><![CDATA[PS3mediaserver]]></category>
		<category><![CDATA[tsmuxer]]></category>
		<category><![CDATA[uPNP]]></category>
		<category><![CDATA[VLC]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=1108</guid>
		<description><![CDATA[Hop, J&#8217;ai rangé mon NAS (qui trainait en terme de firmware et ne me permettait pas de lire des photos de + de 12 Mpixels&#8230;) au profit d&#8217;un vieux PC avec une Debian et PS3 Media Server (PMS) comme interface entre la PS3 et mes &#171;&#160;fichiers multimédia&#160;&#187;. Le principe de PMS est simple : utiliser [...]]]></description>
			<content:encoded><![CDATA[<p>Hop,</p>
<p>J&#8217;ai rangé mon NAS (qui trainait en terme de firmware et ne me permettait pas de lire des photos de + de 12 Mpixels&#8230;) au profit d&#8217;un vieux PC avec une Debian et PS3 Media Server (PMS) comme interface entre la PS3 et mes &laquo;&nbsp;fichiers multimédia&nbsp;&raquo;.</p>
<p>Le principe de PMS est simple : utiliser tous les outils standards du monde libre (ffmpeg, mplayer, mencoder, vlc, tsmuxer) qui font déjà bien le boulot et simplement ajouter une surcouche (en Java, why not) pour faire l&#8217;interface DLNA / uPNP (je confonds un peu les 2, on s&#8217;en tape). Le but est de lire tout ça depuis la PS3.<br />
Encore mieux, il permet de présenter à la PS3 des formats qu&#8217;elle ne sait pas lire en assurant derrière, à la volée, le transcodage ou le réencodage qui va bien. Attention : transcoder un mkv 1080p en réencodant la partie audio DTS à la volée ne se fait pas avec votre vieux PC pourri qui fait office de NAS&#8230; Là il faudra du multi-coeur qui envoie du gros !<br />
Et fin du fin, vous choisissez depuis la PS3 la méthode de transcodage/réencodage, la langue etc, depuis la PS3 via des menus spécifiques qui apparaissent.</p>
<p>A noter que Twonky Media Server est aussi un bon logiciel, mais payant.<br />
Je décris ici la procédure pour installer correctement l&#8217;outil, en partant d&#8217;une Debian Lenny absolument vide (ssh seulement, et wget). La &laquo;&nbsp;difficulté&nbsp;&raquo; est d&#8217;utiliser des outils un peu récents en Debian, côté multimedia. On ira voir du côté des dépôts <a href="http://www.debian-multimedia.org/">www.debian-multimedia.org</a>.<br />
A noter qu&#8217;en Squeeze, ce sera encore plus la fête, car les outils Lenny de &laquo;&nbsp;debian multimedia&nbsp;&raquo; datent aussi un peu, pour certains.<span id="more-1108"></span></p>
<p>J&#8217;ai installé l&#8217;outil sur un compte utilisateur dédié à cela. Afin d&#8217;avoir des permissions sur mes fichiers multimédia en cohérence et de ne pas faire tourner ça au nom du root, évidemment.</p>
<h1>Ajout du dépôt multimedia</h1>
<p>Le <a href="http://www.debian-multimedia.org/">site </a>décrit la procédure. Dans notre cas, on importe les clefs de signature des paquets :</p>
<pre>$ wget http://www.debian-multimedia.org/pool/main/d/debian-multimedia-keyring/
$ dpkg -i debian-multimedia-keyring_2008.10.16_all.deb</pre>
<p>Puis on ajoute le dépôt et on met à jour :</p>
<pre>$ cat >> /etc/apt/sources.list
deb http://www.debian-multimedia.org lenny main non-free
&lt;CTRL-D&gt;
$ aptitude update</pre>
<h1>Installation des outils</h1>
<p>On installe à la fois les outils vidéos et ce qu&#8217;il faut pour faire tourner le Java + 2/3 trucs annexes.</p>
<pre>$ aptitude install screen rar unrar zip unzip bzip2 vlc mplayer mencoder ffmpeg sun-java6-jre</pre>
<p>Là j&#8217;installe &laquo;&nbsp;screen&nbsp;&raquo;, voir plus bas ; rar/zip pour pouvoir lire directement certaines archives ; les outils vidéos ; le java SUN.<br />
A noter que tsMuxeR est fourni avec PMS.</p>
<h1>Installation de PMS</h1>
<p>En tant que l&#8217;utilisateur &laquo;&nbsp;pms&nbsp;&raquo; (appelons-le comme ça), j&#8217;installe PMS et règle 2/3 trucs.<br />
Récupérez le depuis <a href="http://code.google.com/p/ps3mediaserver/downloads/list">http://code.google.com/p/ps3mediaserver/downloads/list</a>, actuellement avec un <code>wget http://ps3mediaserver.googlecode.com/files/pms-linux-1.10.5.tgz</code><br />
Puis :</p>
<pre>pms@nas:~$ tar xzvf pms-linux-1.10.5.tgz
pms@nas:~$ ln -sf pms-linux-1.10.5 pms
pms@nas:~$ chmod u+x pms/PMS.sh pms/linux/tsMuxeR</pre>
<p>Les permissions d&#8217;exécution ne sont pas bonnes et il manquerait notamment tsmuxer dans le panel d&#8217;outil.</p>
<p>Voilà, normalement c&#8217;est fini. Pas compliqué <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h1>Lancement graphique de PMS</h1>
<p>La première fois, il faut le lancer graphiquement pour paramétrer 2/3 choses. Ensuite, on va scripter ce qu&#8217;il faut pour qu&#8217;il démarre au boot, en mode texte, dans un &laquo;&nbsp;screen&nbsp;&raquo;.<br />
Si vous intervenez à distance, faites un tunnel SSH avec déport X11 pour récupérer l&#8217;interface graphique.<br />
<strong>Le principe de PMS est le suivant : soit il voit un serveur X qui répond, alors il part en mode graphique, soit il n&#8217;en voit pas, alors il part en mode texte.</strong></p>
<pre>pms@nas:$ cd pms ; ./PMS.sh</pre>
<p>Il faut faire 3 choses :</p>
<ul>
<li>
Passer dans tous les onglets (s&#8217;il ne voit pas votre PS3, sur le premier onglet, pensez à l&#8217;allumer&#8230; mais ce n&#8217;est pas nécessaire pour configurer) et réfléchir 2 minutes. Notez par exemple la génération des vignettes accompagnant les vidéos, vignettes générées en prenant l&#8217;image à la X-ième seconde du film grâce à mencoder&#8230;.
</li>
<li>
Aller obligatoirement dans l&#8217;onglet &laquo;&nbsp;Transcoding settings&nbsp;&raquo; pour vérifier que tout est vert, que tous les outils vidéo/audio sont installés. Sinon, lire ce que ça raconte.
</li>
<li>
Aller dans &laquo;&nbsp;Folders Sharing&nbsp;&raquo;, ajouter les répertoires qui vous intéressent et activer le partage, sans quoi, il ne va pas se passer grand chose&#8230;
</li>
</ul>
<p>D&#8217;avance, je précise que l&#8217;outil n&#8217;a pas besoin de parcourir à l&#8217;avance tous les répertoires, il génère à la volée lorsqu&#8217;on rentre dans un répertoire depuis la PS3. Enorme. Très dynamique.<br />
Voyez les photos d&#8217;écran sur le site officiel s&#8217;il faut : <a href="http://code.google.com/p/ps3mediaserver/">http://code.google.com/p/ps3mediaserver/</a></p>
<h1>Lancement en mode texte</h1>
<p>Enfin, une fois que tout est paramétré et que ça fonctionne depuis la PS3, on passe à l&#8217;industrialisation en mode texte <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Je recommande un petit script comme ceci :</p>
<pre>pms@nas:~$ cat ~/lance_pms.sh
#!/bin/sh
cd /home/pms/pms
screen -S pms -d -m ./PMS.sh</pre>
<p>Avec les permissions qui vont bien <code>chmod u+x ~/lance_pms.sh</code></p>
<p>Une fois lancé, prenez la main sur votre screen (<code>screen -r pms</code>) et vérifiez que ça ne gueule pas. Ca doit ressembler à :</p>
<pre>GUI environment no available
Switching to console mode
[main] TRACE 13:45:19.739 Starting Java PS3 Media Server v1.10.5
[main] TRACE 13:45:19.740 by shagrath / 2008-2009
[main] TRACE 13:45:19.740 http://ps3mediaserver.blogspot.com
[main] TRACE 13:45:19.740 http://code.google.com/p/ps3mediaserver
[main] TRACE 13:45:19.740
[main] TRACE 13:45:19.741 Java 1.6.0_20-Sun Microsystems Inc.
[main] TRACE 13:45:19.741 OS Linux i386 2.6.26-2-686
[main] TRACE 13:45:19.741 Encoding: UTF-8
[main] TRACE 13:45:19.748 Temp folder: /tmp/javaps3media
[main] TRACE 13:45:19.776 Registering transcoding engine FFmpeg Audio
[main] TRACE 13:45:19.789 Registering transcoding engine MEncoder
[main] TRACE 13:45:19.790 Registering transcoding engine MPlayer Audio
[main] TRACE 13:45:19.791 Registering transcoding engine MEncoder Web
[main] TRACE 13:45:19.791 Registering transcoding engine MPlayer Video Dump
[main] TRACE 13:45:19.792 Registering transcoding engine MPlayer Web
[main] TRACE 13:45:19.795 Registering transcoding engine TsMuxer
[main] TRACE 13:45:19.795 Registering transcoding engine Audio High Fidelity
[main] TRACE 13:45:19.796 Registering transcoding engine VideoLan Audio Streaming
[main] TRACE 13:45:19.796 Registering transcoding engine VideoLan Video Streaming
[main] TRACE 13:45:19.797 Registering transcoding engine Raws Thumbnailer
[main] TRACE 13:45:19.912 Scanning network interface eth0 / eth0
[main] TRACE 13:45:19.914 Using address /192.168.x.y found on network interface: name:eth0 (eth0) index: 2 addresses: /192.168.x.y;
[main] TRACE 13:45:19.915 Created socket: /192.168.x.y:5001
[Thread-1] TRACE 13:45:19.924 Starting DLNA Server on host 192.168.x.y and port 5001...
[main] TRACE 13:45:19.933 Using database located at : /home/pms/pms-linux-1.10.5/database
[main] TRACE 13:45:20.448 Sending ALIVE...
[main] TRACE 13:45:20.454 Using following UUID: 00a29-blabla-3e839
[main] TRACE 13:45:25.422 It's ready! You should see the server appears on XMB
[Thread-8] TRACE 13:45:35.420 Sending ALIVE...</pre>
<p>On voit qu&#8217;il a bien trouvé tous les outils </p>
<h1>Divers</h1>
<h2>&laquo;&nbsp;crontab&nbsp;&raquo; pour un lancement/relance automatique</h2>
<p>Ca vaut ce que ça vaut, mais au moins ça limite mes interventions du type &laquo;&nbsp;papaaaaaa, y&#8217;a les dessins animés qui marchent plus&nbsp;&raquo;. Dans la crontab de l&#8217;utilisateur &laquo;&nbsp;pms&nbsp;&raquo;, j&#8217;ai ceci :</p>
<pre>LANG=fr_FR.utf8
# m h  dom mon dow   command
* * * * * x=`ps u |grep java | grep -v grep` ; if [ "x$x" == "x" ]; then /home/pms/lance_pms.sh; fi</pre>
<p>J&#8217;insiste sur le &laquo;&nbsp;UTF8&#8243;, sinon il zappe tout ce qui contient des accents&#8230; et ça, on s&#8217;en rend compte avec la lancement automatique, pas le lancement depuis le compte utilisateur qui lui, a bien la variable LANG comme il faut dans son environnement utilisateur.</p>
<h2>bug</h2>
<p>J&#8217;avais noté un bug : attention si vous avez lancé l&#8217;outil avec un autre utilisateur, le répertoire /tmp/javaps3media reste, avec des permissions restreintes. Donc ça plante lorsque vous voulez le lancer depuis un autre utilisateur.</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2010/09/29/ps3mediaserver-sur-une-debian-toute-fraiche-serveur-dlnaupnpbidule-pour-la-ps3/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>SFTP, chroot et pas de SSH : bloquer un utilisateur dans un répertoire</title>
		<link>http://michauko.org/blog/2010/09/27/sftp-chroot-et-pas-de-ssh-bloquer-un-utilisateur-dans-un-repertoire/</link>
		<comments>http://michauko.org/blog/2010/09/27/sftp-chroot-et-pas-de-ssh-bloquer-un-utilisateur-dans-un-repertoire/#comments</comments>
		<pubDate>Mon, 27 Sep 2010 08:15:21 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[autres outils]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[reseau et sécu]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[chroot]]></category>
		<category><![CDATA[rssh]]></category>
		<category><![CDATA[scp]]></category>
		<category><![CDATA[sftp]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=1099</guid>
		<description><![CDATA[Salut, Un petit article sur ce sujet récurrent car il y a plein de méthodes, dont une assez simple, mais avec 2/3 points de paramétrage précis. Le but est de permettre à un client/fournisseur d&#8217;envoyer/récupérer des fichiers sur un serveur, en SFTP, sans pour autant lui donner accès en SSH (exécuter des commandes) et sans [...]]]></description>
			<content:encoded><![CDATA[<p>Salut,<br />
Un petit article sur ce sujet récurrent car il y a plein de méthodes, dont une assez simple, mais avec 2/3 points de paramétrage précis.<br />
Le but est de permettre à un client/fournisseur d&#8217;envoyer/récupérer des fichiers sur un serveur, en SFTP, sans pour autant lui donner accès en SSH (exécuter des commandes) et sans voir autre part que son &laquo;&nbsp;home&nbsp;&raquo;.<br />
Le tout sur un serveur SSH déjà monté et par ailleurs utilisé pour du SSH normal en interne, avec du SFTP normal aussi.</p>
<p>Il y a 3 méthodes courantes pour commencer à jouer avec les chroot ssh/sftp :</p>
<ul>
<li>
Héberger un serveur SSH en chroot normal : c&#8217;est chiant. Créer un &laquo;&nbsp;home&nbsp;&raquo;, reproduire un minimum d&#8217;arborescence standard, d&#8217;utilisateurs etc.
</li>
<li>
Utiliser rssh comme shell alternatif, c&#8217;est un shell qui limite l&#8217;utilisateur à du SFTP, SCP, CVS, RSYNC etc. On choisit ce qu&#8217;on veut tolérer. Mais, l&#8217;utilisateur peut quand même se promener dans le système (tout &laquo;&nbsp;/&nbsp;&raquo;).
</li>
<li>
Enfin, ce que je vais décrire : utiliser la fonctionnalité de &laquo;&nbsp;chroot&nbsp;&raquo; intégrée aux serveurs SSH (serveur ssh >= 4.8, donc n&#8217;importe quel SSH d&#8217;une Debian stable de nos jours). On va simplement brider quelques comptes et mettre quelques permissions bien senties.
</li>
</ul>
<p><span id="more-1099"></span></p>
<h1>Adaptation d&#8217;un utilisateur</h1>
<p>Le mieux est de prévoir large : on risque d&#8217;avoir plusieurs clients/fournisseurs qui voudront accéder.<br />
On va donc créer un groupe des utilisateurs SFTP seulement, nommé &laquo;&nbsp;sftpusers&nbsp;&raquo;.<br />
Je crée un utilisateur pour mon client, nommé xfer1, en changeant son home :</p>
<pre>xfer1:x:1011:1012:Transfert client1,,,:/transferts_partenaires/xfer1/:bin/bash</pre>
<p>Notez que le groupe 1012 est le groupe &laquo;&nbsp;sftpusers&nbsp;&raquo; :</p>
<pre>$ id xfer1
uid=1011(xfer1) gid=1012(sftpusers) groupes=1012(sftpusers)</pre>
<h1>Création du répertoire d&#8217;échange, permissions</h1>
<p>On crée l&#8217;arborescence qui va servir de home bidon à tout ces utilisateurs :</p>
<pre>$ mkdir --parents /transferts_partenaires/xfer1/
$ chown -R root:sftpusers /transferts_partenaires/
$ chmod -R 750 /transferts_partenaires/</pre>
<p>Les permissions ci-dessus sont hyper importantes. Le serveur SFTP refusera la connexion si le home de ces utilisateurs n&#8217;est pas en <strong>écriture uniquement pour le root </strong>! Donc oui, en l&#8217;état, notre utilisateur <code>xfer1:sftpusers</code> ne peut pas écrire dans son home. Il pourra lire, ce qui peut être suffisant si vous lui mettez simplement des fichiers à disposition. Mais pour écrire, il faudra créer un sous-répertoire, genre &laquo;&nbsp;upload&nbsp;&raquo;.</p>
<pre>mkdir /transferts_partenaires/xfer1/upload/
chown xfer1:sftpusers /transferts_partenaires/xfer1/upload/
chmod 700 /transferts_partenaires/xfer1/upload/</pre>
<h1>Déclaration du compte en SFTP uniquement</h1>
<p>Enfin, on paramètre le serveur SSH comme suit. Modifiez votre fichier <code>/etc/ssh/sshd_config</code> :</p>
<pre># param par défaut, on change : Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem     sftp   internal-sftp -f AUTH -l VERBOSE

# plus loin...
Match Group sftpusers
        ChrootDirectory /transferts_partenaires/%u
        ForceCommand internal-sftp
        AllowTcpForwarding no
        GatewayPorts no
        X11Forwarding no</pre>
<p>A noter que les AllowUsers/DenyUsers s&#8217;appliquent toujours. L&#8217;utilisateur xfer1 &#8211; ou plutôt les utilisateurs du groupe sftpusers &#8211; doivent être autorisés d&#8217;une manière ou d&#8217;une autre.<br />
A noter aussi la beauté du geste avec le &laquo;&nbsp;%u&nbsp;&raquo; pour indiquer le nom de l&#8217;utilisateur.</p>
<p>Ensuite vous recharger le serveur SSH et testez les connexions SFTP et SSH-qui-passent-pas, sans oublier la distinction lecture/écriture.</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2010/09/27/sftp-chroot-et-pas-de-ssh-bloquer-un-utilisateur-dans-un-repertoire/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>tag MP3 : les paroles automatiquement !</title>
		<link>http://michauko.org/blog/2010/08/16/tag-mp3-les-paroles-automatiquement/</link>
		<comments>http://michauko.org/blog/2010/08/16/tag-mp3-les-paroles-automatiquement/#comments</comments>
		<pubDate>Mon, 16 Aug 2010 13:03:54 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[autres outils]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[flac]]></category>
		<category><![CDATA[lyrics3]]></category>
		<category><![CDATA[metatOGGer]]></category>
		<category><![CDATA[mp3]]></category>
		<category><![CDATA[ogg]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=1091</guid>
		<description><![CDATA[Après une longue errance pour trouver un logiciel potable pour tagger automatiquement des mp3 &#8211; en fait, pour inclure les paroles, le reste, c&#8217;est bon &#8211; je suis enfin tombé sur MetatOGGer, qui fonctionne, et qui est gratuit mais que sous windows je crois Il récupère les paroles de chansons automatiquement, depuis wikia.com. Rien à [...]]]></description>
			<content:encoded><![CDATA[<p>Après une longue errance pour trouver un logiciel potable pour tagger automatiquement des mp3 &#8211; en fait, pour inclure les paroles, le reste, c&#8217;est bon &#8211; je suis enfin tombé sur <a href="http://www.luminescence-software.org/">MetatOGGer</a>, qui fonctionne, et qui est gratuit <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  mais que sous windows je crois<br />
Il récupère les paroles de chansons automatiquement, depuis wikia.com.<br />
Rien à dire. Parfois il sort une erreur 404 qui vient de nulle part, c&#8217;est qu&#8217;il n&#8217;arrivera pas à traiter telle chanson, on l&#8217;enlève de la liste et on relance.<br />
youhouuuu</p>
<p><strong>Les paroles sont stockées dans le mp3 (le tag &laquo;&nbsp;lyrics3&#8243; je suppose) et du coup lisible sur un lecteur qui se respecte. En l&#8217;occurrence un iphone.</strong></p>
<p>Ca gère évidemment les OGG, les FLAC etc&#8230; en plus des MP3.</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2010/08/16/tag-mp3-les-paroles-automatiquement/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>dotProject &amp; LDAP (Active Directory plus précisemment)</title>
		<link>http://michauko.org/blog/2010/03/30/dotproject-ldap-active-directory-plus-precisemment/</link>
		<comments>http://michauko.org/blog/2010/03/30/dotproject-ldap-active-directory-plus-precisemment/#comments</comments>
		<pubDate>Tue, 30 Mar 2010 13:36:14 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[autres outils]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[active directory]]></category>
		<category><![CDATA[dotProject]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=1029</guid>
		<description><![CDATA[C&#8217;est pas que je sois fanatique des outils de ce genre là, mais bon, parfois, le boss veut ça pour hier. Ca permet de faire euh&#8230; de la gestion de projets, c&#8217;est open-source, tout ça. Voyez ici : http://www.dotproject.net/ Bon bref, on s&#8217;en fout. Si vous lisez cet article c&#8217;est que vous comptez l&#8217;installer, je [...]]]></description>
			<content:encoded><![CDATA[<p>C&#8217;est pas que je sois fanatique des outils de ce genre là, mais bon, parfois, le boss veut ça pour hier.<br />
Ca permet de faire euh&#8230; de la gestion de projets, c&#8217;est open-source, tout ça. Voyez ici : <a href="http://www.dotproject.net/">http://www.dotproject.net/</a><br />
Bon bref, on s&#8217;en fout. Si vous lisez cet article c&#8217;est que vous comptez l&#8217;installer, je suppose.<br />
Je donne 2/3 remarques d&#8217;installation, notamment la configuration au LDAP de Microsoft : Active Directory.<span id="more-1029"></span></p>
<h1>Dézip, install etc</h1>
<p>Pour monter le site, je passe en quelques mots.</p>
<ul>
<li>
Vous dézippez le .tar.gz (pas de paquet Debian ; et puis c&#8217;est généralement en retard de versions pour ce genre d&#8217;outils). Par exemple dans /var/www
</li>
<li>
Vous avez en amont un serveur MySQL et Apache en état. Et éventuellement créé un schéma de base dotproject, un admin DB dédié et tout le toutim. Exemple :</p>
<pre>create database dotproject;
create user 'dpadmin'@'localhost' identified by 'mon_passwd_qui_tache';
grant all on dotproject.* to 'dpadmin'@'localhost';</pre>
</li>
<li>
Bien sûr, le paquet php5-ldap est installé et LDAP activé dans votre conf PHP :</p>
<pre>votre.serveur:/srv/www/dotproject# grep -r ldap /etc/php5/
/etc/php5/conf.d/ldap.ini:extension=ldap.so
/etc/php5/cli/conf.d/ldap.ini:extension=ldap.so
/etc/php5/apache2/conf.d/ldap.ini:extension=ldap.so
</pre>
</li>
<li>
De même pour php5-mysql&#8230;
</li>
<li>
Vous accédez à http://votre.serveur/dotproject/install/
</li>
<li>
L&#8217;install se déroule paisiblement. Vérifiez que les modules qui vous intéressent sont bien détectés. Ajoutez les permissions sur /files et créez un fichier /includes/config.php vide, modifiable par www-data.<br />
Bref, du classique.
</li>
<li>
Une fois installé, le mot de passe par défaut du compte admin est passwd. J&#8217;ai cherché quelques temps <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> .
</li>
</ul>
<p>A la fin, supprimez le répertoire d&#8217;&nbsp;&raquo;install&nbsp;&raquo;.</p>
<h1>Conf Active Directory</h1>
<p>Dans le menu d&#8217;admin, vous configurerez la connexion à l&#8217;AD comme suit (dans Administration Système -> Configuration système) &#8211; si votre LDAP est en clair (port 389) :<br />
<div id="attachment_1031" class="wp-caption aligncenter" style="width: 468px"><a href="http://michauko.org/blog/wp-content/uploads/2010/03/20100330_151648.png"><img src="http://michauko.org/blog/wp-content/uploads/2010/03/20100330_151648.png" alt="Conf dotproject Active Directory" title="Conf dotproject Active Directory" width="458" height="423" class="size-full wp-image-1031" /></a><p class="wp-caption-text">Conf dotproject Active Directory</p></div><br />
Remarques :</p>
<ul>
<li>
<strong>Méthode d&#8217;authentif</strong>&#8230; : LDAP
</li>
<li>
Avant d&#8217;oublier : BIEN COCHER LA CASE &laquo;&nbsp;LDAP autorise également les connexions standards&nbsp;&raquo;. Sinon, si vous ratez votre conf LDAP et déconnectez votre compte admin => Boum (probablement).
</li>
<li>
<strong>Hôte LDAP </strong>: j&#8217;ai galéré longtemps en mettant le FQDN, comme préconisé un peu partout. C&#8217;est passé lorsque j&#8217;ai mis l&#8217;IP ! Arg !
</li>
<li>
<strong>Base DN LDAP </strong>: le noeud racine des utilisateurs qui pourront se signer. Par exemple : <code>ou=Users,cn=domaine,cn=fr</code>
</li>
<li>
<strong>Filtre Utilisateur LDAP</strong>. Pour un AD : <code>(sAMAccountName=%USERNAME%)</code>. Ca veut dire : on comparera la variable %USERNAME% au champ LDAP sAMAccountName, qui est le login dans un AD.
</li>
<li>
<strong>Recherche Utilisateur LDAP </strong>: le chemin complet pour atteindre l&#8217;utilisateur capable de faire la recherche dans l&#8217;AD. Exemple : <code>CN=sonlogin,CN=Users,dc=domaine,dc=fr</code>
</li>
</ul>
<p>Mais d&#8217;où toute cette syntaxe sort-elle ???? non non, pas DT&#8230; Je vous recommande &laquo;&nbsp;<a href="http://technet.microsoft.com/en-us/sysinternals/bb963907.aspx">AD Explorer</a>&laquo;&nbsp;. Ca permet de vous promener dans votre AD et de connaître le DN (Distinguished Name) de n&#8217;importe quel élément.<br />
Le cas standard est que les utilisateurs sont dans <code>Ou=Users,dc=votredomaine,dc=com</code>. Mais bon, quelques fois, on ose le changement.</p>
<h1>Traduction</h1>
<p>Vous trouverez le paquet français sur le site officiel. Il faut dézipper dans /locales, ça crée un sous-répertoire &laquo;&nbsp;fr&nbsp;&raquo;. Reste à mettre le français par défaut aux utilisateurs dans un des menus d&#8217;admin.</p>
<p>Et voilà, c&#8217;était &laquo;&nbsp;j&#8217;ai pris aucune note d&#8217;installation ni de photo d&#8217;écran donc je torche un papier vite fait mais ça peut rendre service&nbsp;&raquo;.<br />
A+</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2010/03/30/dotproject-ldap-active-directory-plus-precisemment/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>OracleToolbox sous Linux, pour analyser vos perfs Oracle</title>
		<link>http://michauko.org/blog/2010/02/03/oracletoolbox-sous-linux-pour-analyser-vos-perfs-oracle/</link>
		<comments>http://michauko.org/blog/2010/02/03/oracletoolbox-sous-linux-pour-analyser-vos-perfs-oracle/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 17:19:56 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[autres outils]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[oci8]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[oracletoolbox]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=1005</guid>
		<description><![CDATA[L&#8217;objectif Afin de creuser certaines baisses de perfs d&#8217;une base Oracle non loin de là, j&#8217;ai cherché un outil, si possible libre, pour obtenir facilement des infos du genre top-ten des requêtes les plus lancées, les plus longues, qui brassent le plus de données etc etc. Et de faire un EXPLAIN sur celles-ci pour trouver [...]]]></description>
			<content:encoded><![CDATA[<h1>L&#8217;objectif</h1>
<p>Afin de creuser certaines baisses de perfs d&#8217;une base Oracle non loin de là, j&#8217;ai cherché un outil, si possible libre, pour obtenir facilement des infos du genre top-ten des requêtes les plus lancées, les plus longues, qui brassent le plus de données etc etc. Et de faire un EXPLAIN sur celles-ci pour trouver l&#8217;index qu&#8217;on a raté, l&#8217;algorithme pensé avec les pieds et ce genres de choses.</p>
<p>Comme Oracle est un lointain souvenir, je n&#8217;avais pas envie de me plonger dans la liste des tables V_$TRUC qui contiennent tout ceci, mais dont je n&#8217;ai aucune envie de me souvenir.</p>
<h1>Quelques outils</h1>
<p>Bilan, on trouve rapidement :<span id="more-1005"></span></p>
<ul>
<li>
l&#8217;Enterprise Manager d&#8217;Oracle (java, lourd, chiant, façon Oracle tout simplement)
</li>
<li>
SpotLight de l&#8217;éditeur Quest Software (celui qui pond T.O.A.D). Ca balance du gros, mais c&#8217;est commercial, cher etc. Vu que tout est dans des tables et que j&#8217;ai simplement besoin d&#8217;un outil qui me présente ça lisiblement, c&#8217;est presque trop. M&#8217;enfin, si vous êtes fortunés, n&#8217;hésitez pas.
</li>
<li>
Enfin, OracleToolBox sur <a href="http://www.oracletoolbox.org/">http://www.oracletoolbox.org/</a>
</li>
</ul>
<h1>La configuration de OracleToolbox</h1>
<p>Je livre ici 2/3 détails sur l&#8217;installation de Oracle Toolbox, après avoir ramé un peu.<br />
C&#8217;est rapide, mais ça vaut sûrement le coup d&#8217;être résumé :</p>
<h2>Couche Oracle</h2>
<p>Il faut d&#8217;abord avoir une couche cliente Oracle et PHP/OCI8 fonctionnelle. Ca tombe bien je l&#8217;ai décrit ici : <a href="http://michauko.org/blog/2009/05/07/installer-le-client-oracle-sur-debianlenny-interco-avec-php/">http://michauko.org/blog/2009/05/07/installer-le-client-oracle-sur-debianlenny-interco-avec-php/</a></p>
<h2>Installation</h2>
<p>Facile, il suffit de dézipper, par exemple dans <code>/var/www/oracletoolbox/</code>.</p>
<h2>Variables globales</h2>
<p>Il faut activer le passage de variables globales. C&#8217;est le choix de codage qui est fait avec l&#8217;application. Côté PHP, il s&#8217;agit d&#8217;un paramètre sensible permettant éventuellement quelques failles de sécurité.<br />
Donc 2 options s&#8217;offrent à nous :</p>
<ul>
<li>la première, crade pour tester, c&#8217;est de passer à &laquo;&nbsp;On&nbsp;&raquo; la variable <code>register_globals</code> dans <code>/etc/php5/apache2/php.ini</code>
</li>
<li>la deuxième sera plutôt d&#8217;intégrer cette modification uniquement pour le répertoire <code>/var/www/oracletoolbox/</code>, décrit ci-dessous avec au passage la restriction d&#8217;accès à l&#8217;outil par htaccess.
</li>
</ul>
<h2>htpasswd &#038; register_globals</h2>
<p>Pour protéger l&#8217;accès à l&#8217;outil, je propose une conf spécifique pour ce répertoire (<code>/var/www/oracletoolbox/</code>) qu&#8217;on décrira par exemple dans <code>/etc/apache2/conf.d/oracletoolbox</code> :</p>
<pre>&lt;Directory /var/www/oracletoolbox>
        AuthName "Acces restreint"
        AuthType Basic
        AuthUserFile /etc/oracle/toolbox.htpass
        &lt;limit GET POST>
                require user toolbox
        &lt;/Limit>
        php_value register_globals 1
        &lt;Files *.ini>
                Order allow,deny
                Deny from all
        &lt;/Files>

&lt;/Directory></pre>
<p>A noter le &laquo;&nbsp;php_value&nbsp;&raquo;, qui évite d&#8217;activer &laquo;&nbsp;register_globals&nbsp;&raquo; sur toute l&#8217;installation Apache/PHP. Donc de la restreindre à l&#8217;application OracleToolbox.<br />
La restriction sur les fichiers ini évitera qu&#8217;un gros malin récupère les mots de passe.</p>
<p>
Pour créer un mot de passe associé au compte &laquo;&nbsp;toolbox&nbsp;&raquo; dans le fichier <code>/etc/oracle/toolbox.htpass</code> (emplacement complètement arbitraire), il faut utiliser l&#8217;outil <code>htpasswd</code>, comme d&#8217;hab :</p>
<pre>srv:/# htpasswd -bc /etc/oracle/toolbox.htpass toolbox mon_pass
Adding password for user toolbox
srv:/# cat /etc/oracle/toolbox.htpass
toolbox:76X12345jNUkI</pre>
<h2>Déclaration des bases, tnsnames, tout ça</h2>
<p>Le fichier &laquo;&nbsp;INSTALL&nbsp;&raquo; fourni dans le package donne tous les pré-requis logiciels, en incluant les lib GD, PNG etc. Du facile à installer si vous n&#8217;avez pas ces modules (php5-gd etc).<br />
Ce fichier donne surtout quelques indices sur le reste de la configuration Oracle.<br />
Il faudra donc jeter en vrac tous les logins/passwd des comptes Oracle qui vous permettront d&#8217;accéder à vos bases, dans <code>/var/www/oracletoolbox/pswd.ini</code>. L&#8217;outil testera tout ce qu&#8217;il trouve, quelle que soit la base à laquelle vous vous connectez, en espérant qu&#8217;un marchera.<br />
Au premier lancement de l&#8217;outil (http://votre.serveur/oracletoolbox/), il vous demandera aussi où est votre fichier &laquo;&nbsp;tnsnames.ora&nbsp;&raquo; qui décrit vos bases et lesquelles vous voudrez &laquo;&nbsp;installer&nbsp;&raquo;, c&#8217;est-à-dire rendre accessible depuis OracleToolbox. En gros, il se refait une copie locale de celles qui vous intéressent parmi toutes celles de votre tnsnames.ora. Soit. Si vous avez suivi <a href="http://michauko.org/blog/2009/05/07/installer-le-client-oracle-sur-debianlenny-interco-avec-php/">ma doc de mise en place d&#8217;Oracle sur Debian, citée plus haut</a>, le fichier est <code>/etc/oracle/tnsnames.ora</code>.<br />
Tout ceci est au final stocké dans <code>/var/www/oracletoolbox/tnsnames</code>. Au besoin ça s&#8217;édite à la main, ça va plus vite.</p>
<p>Voilà, normalement-ça-marche &#8482;.</p>
<h1>LE bug corrigé &#038; version Windows autonome</h1>
<p>Il existe une version autonome (portable ?) pour windows embarquant un apache, php et le code source. Bref tout ce qu&#8217;il faut pour lancer l&#8217;outil (il manque peut-être le client Oracle et configuration à faire avant). Ca marche bien. Juste que chaque utilisateur doit avoir tout ça en local, faire tourner momentanément un Apache sur son PC etc.</p>
<p>A côté de cette version Windows, il y a le zip des sources dont je parle depuis le début. Ca marcherait sûrement sur un Windows avec un environnement Apache/PHP/Oracle déjà mis en place d&#8217;ailleurs.<br />
Dans cette version, il y avait un léger bug dans le packaging (dans le zip), l&#8217;auteur m&#8217;a confirmé ça ce matin, qui faisait qu&#8217;un champ RAW d&#8217;Oracle était mal interpreté par PHP. Bref, ça merdait. Normalement, le package est corrigé ce jour et vous n&#8217;aurez pas de problème.<br />
Si toutefois vous voyez une réaction comme ci-dessous dans le top-ten des &laquo;&nbsp;Disk/Buffer intensive request&nbsp;&raquo;, vous êtes concerné, prenez le code de l&#8217;autre zip (celui pour windows) ou retéléchargez les sources si vous l&#8217;avez fait avant la correction :<br />
<div id="attachment_1022" class="wp-caption alignnone" style="width: 585px"><a href="http://michauko.org/blog/wp-content/uploads/2010/02/20100126_1111451.png"><img src="http://michauko.org/blog/wp-content/uploads/2010/02/20100126_1111451.png" alt="OracleToolbox avec RAWTOHEX manquant" title="OracleToolbox avec RAWTOHEX manquant" width="575" height="199" class="size-full wp-image-1022" /></a><p class="wp-caption-text">OracleToolbox avec RAWTOHEX manquant</p></div><br />
Pour en avoir le coeur net, cherchez &laquo;&nbsp;rawtohex&nbsp;&raquo; dans &laquo;&nbsp;fonction_oracle.php&nbsp;&raquo;. Si ça n&#8217;y est pas, c&#8217;est pas bon.</p>
<p>Allez, bonne analyse de perfs</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2010/02/03/oracletoolbox-sous-linux-pour-analyser-vos-perfs-oracle/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>wordpress sur un iphone (blackberry, android) : plugin WPTouch</title>
		<link>http://michauko.org/blog/2009/12/14/wordpress-sur-un-iphone-blackberry-android-plugin-wptouch/</link>
		<comments>http://michauko.org/blog/2009/12/14/wordpress-sur-un-iphone-blackberry-android-plugin-wptouch/#comments</comments>
		<pubDate>Mon, 14 Dec 2009 10:24:47 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[autres outils]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[WPTouch]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=995</guid>
		<description><![CDATA[J&#8217;ai découvert par hasard ce plugin pour WordPress : il s&#8217;agit d&#8217;un plugin modifiant à la volée le thème du site pour le rendre merveilleusement lisible sur un iPhone (le site dit Blackberry et Android aussi, mais je n&#8217;ai pas de terminal pour tester). Ca se passe comme d&#8217;habitude pour un plugin bien fait sous [...]]]></description>
			<content:encoded><![CDATA[<p>J&#8217;ai découvert par hasard <a href="http://wordpress.org/extend/plugins/wptouch/" target="_blank">ce plugin </a>pour WordPress : il s&#8217;agit d&#8217;un plugin modifiant à la volée le thème du site pour le rendre merveilleusement lisible sur un iPhone (le site dit Blackberry et Android aussi, mais je n&#8217;ai pas de terminal pour tester).</p>
<p>Ca se passe comme d&#8217;habitude pour un plugin bien fait sous WordPress :<br />
- <a href="http://wordpress.org/extend/plugins/wptouch/" target="_blank">Téléchargez le zip</a> dans <code>/votre/serveur/wp-content/plugins/</code><br />
- Dézippez la chose, ça crée un sous-répertoire wptouch dans &laquo;&nbsp;plugins&nbsp;&raquo;<br />
- Rendez-vous dans la page d&#8217;administration de WordPress, section plugins, pour l&#8217;activer. C&#8217;est-tout-ça-marche.</p>
<p>Il y a des options, notamment pour l&#8217;intégration de pubs Ad-Sense. Je n&#8217;ai pas cherché, les sites sur lesquels je l&#8217;ai activé s&#8217;en passeront très bien.</p>
<p>Un must !</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2009/12/14/wordpress-sur-un-iphone-blackberry-android-plugin-wptouch/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Montage NTFS et CIFS en fstab</title>
		<link>http://michauko.org/blog/2009/12/02/montage-ntfs-et-cifs-en-fstab/</link>
		<comments>http://michauko.org/blog/2009/12/02/montage-ntfs-et-cifs-en-fstab/#comments</comments>
		<pubDate>Wed, 02 Dec 2009 16:30:08 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[autres outils]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[ligne de commande]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[CIFS]]></category>
		<category><![CDATA[ntfs]]></category>
		<category><![CDATA[ntfs-3g]]></category>
		<category><![CDATA[samba]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=983</guid>
		<description><![CDATA[Ca peut s&#8217;avérer pratique parfois, et lors d&#8217;une automatisation d&#8217;un traitement quelconque, carrément indispensable. Voici un rapide aide-mémoire pour déclarer en /etc/fstab des montages CIFS (montage de répertoires partagés Windows via Samba) et NTFS (des partitions, disques USB etc, mais en lecture/écriture, pas lecture seule). D&#8217;abord, s&#8217;assurer que vous avez le paquet ntfs-3g (si besoin [...]]]></description>
			<content:encoded><![CDATA[<p>Ca peut s&#8217;avérer pratique parfois, et lors d&#8217;une automatisation d&#8217;un traitement quelconque, carrément indispensable. Voici un rapide aide-mémoire pour déclarer en <code>/etc/fstab</code> des montages CIFS (montage de répertoires partagés Windows via Samba) et NTFS (des partitions, disques USB etc, mais en lecture/écriture, pas lecture seule).</p>
<p>D&#8217;abord, s&#8217;assurer que vous avez le paquet <code>ntfs-3g</code> (si besoin d&#8217;écriture sur le disque/partition NTFS) et le paquet <code>smbfs</code> (Samba FileSystem) pour les partages CIFS.</p>
<p>Vous pouvez tester facilement avec des commandes genre <code>mount -t cifs</code> ou <code>mount -t ntfs-3g</code>. Dans le cas du CIFS, il  y a certaines options à passer, notamment l&#8217;utilisateur, le domaine etc. C&#8217;est presque plus simple dans <code>/etc/fstab</code>.</p>
<p>Bref, voici la chose illustrée par l&#8217;exemple :</p>
<pre>srv:/etc# cat fstab
###
# blabla habituel
### puis :
//srvwin1/partage1      /mnt/srv1prt1      cifs    uid=root,credentials=/etc/cifs.credentials,domain=MONDOM 0 0
//srvwin1/partage2      /mnt/srv1prt2      cifs    uid=root,credentials=/etc/cifs.credentials,domain=MONDOM 0 0
//srvwin2/blabla1       /mnt/srv2prt1      cifs    uid=root,credentials=/etc/cifs.credentials,domain=MONDOM 0 0
/dev/sdb1               /mnt/usbsdb1       ntfs-3g defaults,locale=fr_FR.utf8 0 0</pre>
<p>Dans cet exemple tout simple, on monte 3 partages CIFS, mappé sur l&#8217;utilisateur root de la machine linux, en se signant avec les informations contenues dans <code>/etc/cifs.credentials</code> (ci-dessous) sur le domaine NT &laquo;&nbsp;MONDOM&nbsp;&raquo;.<br />
Et dans /mnt/usbsdb1, on monte un disque USB (ou SCSI ou SATA d&#8217;ailleurs), en NTFS lecture/écriture.</p>
<p>Ensuite, de simples &laquo;&nbsp;<code>mount /mnt/celui_que_vous_voulez</code>&nbsp;&raquo; pour monter.</p>
<p>Le contenu de /etc/cifs.credentials est de la forme :</p>
<pre>username=mon_login_windows
password=mon_p4ss</pre>
<p>Il peut évidemment être différent pour chaque montage. Pensez à le protéger (<code>chmod 600 /etc/cifs.credentials</code>)</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2009/12/02/montage-ntfs-et-cifs-en-fstab/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Monter un serveur NTP, configurer les clients Windows et Linux</title>
		<link>http://michauko.org/blog/2009/11/13/monter-un-serveur-ntp-configurer-les-clients-windows-et-linux/</link>
		<comments>http://michauko.org/blog/2009/11/13/monter-un-serveur-ntp-configurer-les-clients-windows-et-linux/#comments</comments>
		<pubDate>Fri, 13 Nov 2009 14:44:50 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[autres outils]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[ligne de commande]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[reseau et sécu]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[GPO]]></category>
		<category><![CDATA[ntp]]></category>
		<category><![CDATA[ntpd]]></category>
		<category><![CDATA[ntpdate-debian]]></category>
		<category><![CDATA[tcpdump]]></category>
		<category><![CDATA[W32Time]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=926</guid>
		<description><![CDATA[Bon, un p&#8217;tit billet aide-mémoire sur la configuration d&#8217;un serveur NTP Linux et des postes Windows et Linux de votre LAN. C&#8217;est un sujet tout bête, mais entre les postes Windows qui ne sont pas très bavards à ce sujet et l&#8217;amalgame, côté Linux, entre les paquets ntp et ntpdate utilisant ou pas des fichiers [...]]]></description>
			<content:encoded><![CDATA[<p>Bon, un p&#8217;tit billet aide-mémoire sur la configuration d&#8217;un serveur NTP Linux et des postes Windows et Linux de votre LAN.<br />
C&#8217;est un sujet tout bête, mais entre les postes Windows qui ne sont pas très bavards à ce sujet et l&#8217;amalgame, côté Linux, entre les paquets <code>ntp</code> et <code>ntpdate</code> utilisant ou pas des fichiers communs de conf, on peut être momentanément perdu. J&#8217;espère être clair par la suite.<span id="more-926"></span></p>
<h1>Préparez le serveur</h1>
<h2>Le paquet qui va bien</h2>
<p>Sur le serveur, installez le paquet &laquo;&nbsp;ntp&nbsp;&raquo;. Faisant office de serveur, il se met à jour (donc il fait office de client, si je ne dis pas connerie). Pas la peine donc d&#8217;installer &laquo;&nbsp;ntpdate&nbsp;&raquo; qui est un autre client possible.<br />
Les options du serveur sont dans <code>/etc/default/ntp.conf</code>, j&#8217;en parle un peu plus bas. Lisez le <code>man</code>.<br />
Les paramètres de <code>/etc/ntp.conf</code> sont :</p>
<pre>serv:~# egrep -v "^#|^$" /etc/ntp.conf
driftfile /var/lib/ntp/ntp.drift
statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable
server 0.debian.pool.ntp.org iburst dynamic
server 1.debian.pool.ntp.org iburst dynamic
server 2.debian.pool.ntp.org iburst dynamic
server 3.debian.pool.ntp.org iburst dynamic
restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
restrict 127.0.0.1
restrict ::1
restrict 10.0.0.0 mask 255.0.0.0 nomodify notrap</pre>
<p>J&#8217;ai juste ajouté la plage 10.0.0.0 (c&#8217;est un exemple) pour autoriser mon LAN à joindre ce serveur.</p>
<h2>Firewalling ?</h2>
<p>Il faudra ouvrir en sortie le port &laquo;&nbsp;ntp&nbsp;&raquo; (123), en UDP, depuis le serveur vers les serveurs amonts. Si c&#8217;est la liste par défaut de <code>/etc/ntp.conf</code>, à savoir les &laquo;&nbsp;*.pool.ntp.org&nbsp;&raquo;, c&#8217;est une longue liste, amenée à évoluer dans le temps je suppose. A vous de voir comment faire. Le plus simple : ouvrir UDP/123 vers le web, point.<br />
Pour que les clients joignent votre serveur, c&#8217;est pareil, il faudra ouvrir le LAN vers votre passerelle, port UDP/123.</p>
<h2>Testez</h2>
<p>Je recommande d&#8217;ajouter <code>-l /var/log/ntp.log</code> dans les options du fichier <code>/etc/default/ntp</code>, soit :</p>
<pre>NTPD_OPTS='-g -l /var/log/ntp.log'</pre>
<p>Puis de redémarrer le service via :</p>
<pre>/etc/init.d/ntpd restart</pre>
<p>Vous verrez dans <code>/var/log/ntp.log</code> si votre serveur se met à jour, de combien de temps etc. <strong>Pensez à enlever ce log ou sinon à mettre en place une rotation de logs qui va avec</strong>.<br />
Ca ressemble à ça :</p>
<pre>13 Nov 11:19:30 ntpd[18381]: synchronized to 91.121.121.160, stratum 2
13 Nov 11:19:30 ntpd[18381]: time reset -0.169417 s
13 Nov 11:19:30 ntpd[18381]: kernel time sync status change 0001
13 Nov 11:23:57 ntpd[18381]: synchronized to 91.121.121.160, stratum 2
13 Nov 11:31:29 ntpd[18381]: synchronized to 91.121.86.143, stratum 2
13 Nov 11:35:30 ntpd[18381]: time reset +0.189846 s
13 Nov 11:35:50 ntpd[18381]: synchronized to 91.121.121.160, stratum 2
13 Nov 11:40:06 ntpd[18381]: synchronized to 81.19.16.225, stratum 2
13 Nov 11:42:57 ntpd[18381]: synchronized to 91.121.121.160, stratum 2</pre>
<p>On est maintenant prêt à dire à notre LAN d&#8217;aller taper sur ce serveur pour régler l&#8217;heure.</p>
<h1>Les postes Windows</h1>
<p>Le service W32Time (&laquo;&nbsp;Horloge Windows&nbsp;&raquo;) est en automatique par défaut depuis Windows XP. Il s&#8217;appuie sur le paramètre qu&#8217;on trouvera dans la clef de registre <code>HKLM/SOFTWARE/Policies/Microsoft/W32Time/Parameters</code>. La clef est &laquo;&nbsp;NtpServer&nbsp;&raquo;.<br />
Il faut donc mettre à jour cette clef, d&#8217;une manière ou d&#8217;une autre.</p>
<h2>&#8230;via des GPO</h2>
<p>Si vous êtes en domaine Windows, le réglage est ici :<br />
<a href="http://michauko.org/blog/wp-content/uploads/2009/11/20091113_1502521.png"><img src="http://michauko.org/blog/wp-content/uploads/2009/11/20091113_1502521-150x150.png" alt="NTP" title="NTP" width="150" height="150"  /></a></p>
<p>En gros, vous indiquez le nom de votre serveur.<br />
Vous pouvez forcer la mise à jour des GPO sur un poste, pour tester, via <code>gpupdate /force</code>.</p>
<h2>En pas GPO (domaine Samba-sans-GPO, Workgroup etc)</h2>
<p>Il faut modifier la clef mentionnée plus haut, d&#8217;une manière ou d&#8217;une autre ; et probablement relancer le service &laquo;&nbsp;Horloge Windows&nbsp;&raquo;.</p>
<h2>Sous Windows, comment tester</h2>
<p>Le service Windows ne raconte rien et les &laquo;&nbsp;event logs&nbsp;&raquo; systèmes, c&#8217;est chiant.<br />
Je suggère sur le serveur, un joli <code>tcpdump</code> qui vous montrera qui fait quoi :</p>
<pre>serv:~# tcpdump -i eth0 dst port ntp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
15:14:49.071538 IP pc315.maboite.fr.ntp > imag.imag.fr.ntp: NTPv3, symmetric active, length 48
15:14:49.172627 IP imag.imag.fr.ntp > pc315.maboite.fr.ntp: NTPv3, symmetric active, length 48
15:15:29.305824 IP pc666.maboite.fr.ntp > serv.maboite.fr.ntp: NTPv3, symmetric active, length 48
15:15:29.306158 IP serv.maboite.fr.ntp > pc666.maboite.fr.ntp: NTPv3, symmetric active, length 48
</pre>
<p>Là, on voit un &laquo;&nbsp;pc315&#8243; qui continue de demander à l&#8217;extérieur (le firewall l&#8217;autorise pour l&#8217;instant) et un pc666 qui a prit le pli.</p>
<h1>Les postes Linux</h1>
<p>Installez le paquet &laquo;&nbsp;ntpdate&nbsp;&raquo; et planifiez <code>ntpdate-debian</code> en crontab. Le manuel explique : ntpdate-debian utilise le fichier <code>/etc/default/ntpdate</code> pour la configuration (liste des serveurs de temps etc). Il contient, sans les commentaires :</p>
<pre>NTPDATE_USE_NTP_CONF=yes
NTPSERVERS="0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org"
NTPOPTIONS=""</pre>
<p>Mais, dans ce cas, à cause du &laquo;&nbsp;yes&nbsp;&raquo;, il utilise la conf de l&#8217;éventuel <code>/etc/ntp.conf</code> installé via le serveur NTP (paquet ntp). Comme on ne l&#8217;a pas mis sur les clients (ça sert à rien de faire tourner un serveur NTP), il faut donc soit passer <code>NTPDATE_USE_NTP_CONF</code> à &laquo;&nbsp;no&nbsp;&raquo;, soit ne pas planifier <code>ntpdate-debian</code>, mais <code>ntpdate</code> avec une tartine de paramètres.<br />
Si vous mettez &laquo;&nbsp;no&nbsp;&raquo;, il faudra indiquer dans NTPSERVERS au moins / uniquement votre serveur du LAN. J&#8217;ai constaté qu&#8217;avec le nom de machine, ça ne passait pas. Mais avec l&#8217;IP, c&#8217;est OK. A creuser.</p>
<p>Pigé ? moi-même, je me perds régulièrement là-dedans.</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2009/11/13/monter-un-serveur-ntp-configurer-les-clients-windows-et-linux/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Arborescence de proxy &#171;&#160;Squid&#160;&#187;, calamaris sous Windows&#8230;</title>
		<link>http://michauko.org/blog/2009/11/03/arborescence-de-proxy-squid-calamaris-sous-windows/</link>
		<comments>http://michauko.org/blog/2009/11/03/arborescence-de-proxy-squid-calamaris-sous-windows/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 15:04:56 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[autres outils]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[ActivePERL]]></category>
		<category><![CDATA[calamaris]]></category>
		<category><![CDATA[proxy]]></category>
		<category><![CDATA[squid]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=902</guid>
		<description><![CDATA[Pour les planet-libristes extrêmistes : oui je parle aussi de Windows, pas la peine de balancer vos trolls habituels. Je parle ici d&#8217;un environnement mixte Windows/Linux sur fond avant tout de Squid, Calamaris et PERL. Hop, Dans une infra avec un proxy central et des sites distants reliés par des connexions assez lentes (et pas [...]]]></description>
			<content:encoded><![CDATA[<p><em>Pour les planet-libristes extrêmistes : oui je parle aussi de Windows, pas la peine de balancer vos trolls habituels. Je parle ici d&#8217;un environnement mixte Windows/Linux sur fond avant tout de Squid, Calamaris et PERL.</em></p>
<p>Hop,<br />
Dans une infra avec un proxy central et des sites distants reliés par des connexions assez lentes (et pas d&#8217;accès web direct), j&#8217;ai décidé de mettre en place des proxies &laquo;&nbsp;fils&nbsp;&raquo; sur les sites distants, pour soulager l&#8217;inter-site.<br />
Manque de bol, à distance, uniquement des serveurs Windows sous la main&#8230;<br />
Bon, squid existe sous Windows. Et &laquo;&nbsp;calamaris&nbsp;&raquo; n&#8217;est que du PERL. Ca doit pouvoir le faire.<br />
Je fais cet article comme aide-mémoire, comme souvent, et surtout parce-que quand il faut automatiser des choses sous Windows, on voit vite que c&#8217;est vraiment la merde&#8230; Alors pour ne pas chercher 107 ans la prochaine fois, voici les quelques commandes à enchainer.</p>
<p>Et puis je n&#8217;avais pas envie/possibilité d&#8217;installer un superbe proxy-by-Microsoft, genre ISA ou je ne sais plus comment il s&#8217;appelle. Pas la peine non plus de chercher les ennuis quand on a un squid qui marche très bien <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><em>Je parle sur mon blog <a href="http://michauko.org/blog/?s=squid" target="_blank">à différents moments de Squid</a>, ou de proxy. Ca me fait penser que je n&#8217;ai rien écrit sur la mise en place d&#8217;un squid tout bête. On va considérer que c&#8217;est acquis. Sinon, avec le présent article et les autres, vous devriez avoir une certaine aide.</em><span id="more-902"></span></p>
<h1>Installation et configuration des squid Windows</h1>
<p>Je passe sur le <del datetime="2009-11-02T14:05:38+00:00">aptitude install </del>téléchargement à la main du gros zip contenant squid pour Windows, qu&#8217;on trouve à partir du <a href="http://www.squid-cache.org/" target="_blank">site officiel</a> (faut chercher un peu. Bon OK, <a href="http://squid.acmeconsulting.it/download/squid.html" target="_blank">c&#8217;est là</a>). J&#8217;ai pris la même version que pour Debian Lenny, histoire d&#8217;interconnecter des squid de même génération&#8230; sait-on jamais. C&#8217;est donc la 2.7-STABLE7 (en fait ça doit être 2.7-STABLE5 en Debian, il me semble).<br />
Ensuite, j&#8217;ai dézippé comme un cochon dans <code>c:\squid\</code> et adapté la conf. Ce que je décris ci-dessous.</p>
<h2>Configuration minimale</h2>
<p>Il faut copier les fichiers <code>c:\squid\etc\*conf.default</code> en <code>c:\squid\etc\*conf</code> et adapter les contenus, notamment dans <code>squid.conf</code> :</p>
<ul>
<li>
Adapter &laquo;&nbsp;acl localnet src&nbsp;&raquo; pour votre sous-réseau
</li>
<li>
Déclarer le cache à utiliser : cache_dir ufs d:/squid/var/cache 4000 16 256
</li>
<li>
Taille limite des objets mis en cache, à voir suivant votre cas : maximum_object_size 81920 KB
</li>
<li>
Différents répertoires pour les fichiers de logs : cache_log d:/squid/var/logs/cache.log
</li>
<li>
cache_store_log d:/squid/var/logs/store.log
</li>
<li>
netdb_filename d:/squid/var/logs/netdb.state
</li>
</ul>
<p>J&#8217;ai voulu séparer les logs sur un disque à part. <strong>A noter les &laquo;&nbsp;/&nbsp;&raquo; (et non pas des &laquo;&nbsp;\&nbsp;&raquo;).</strong></p>
<h2>Service, initialisation du cache</h2>
<p>Ensuite, il faut installer le service et créer le cache (j&#8217;ai laissé le format de cache par défaut, une arborescence de répertoires avec des fichiers aux noms codés) :</p>
<pre>cd c:\squid\sbin
squid -k
squid -i
net start Squid</pre>
<p>A noter que le nom du service n&#8217;est pas spécifié, ce sera donc par défaut &laquo;&nbsp;Squid&nbsp;&raquo;, c&#8217;est important pour la rotation de logs.<br />
<strong>Le &laquo;&nbsp;<code>net start Squid</code>&nbsp;&raquo; ne devrait être fait qu&#8217;après configuration du lien avec le proxy &laquo;&nbsp;père&nbsp;&raquo; central, ce qu&#8217;on n&#8217;a pas encore fait. Mais bon, je le montre maintenant pour illustrer.</strong></p>
<p>En images, ça donne :<br />
<div id="attachment_903" class="wp-caption alignleft" style="width: 677px"><a href="http://michauko.org/blog/wp-content/uploads/2009/11/20091029_165018.png"><img src="http://michauko.org/blog/wp-content/uploads/2009/11/20091029_165018.png" alt="squid windows" title="Installation de Squid sous Windows" width="667" height="330" class="size-full wp-image-903" /></a><p class="wp-caption-text">Installation de Squid sous Windows</p></div></p>
<h2>Déclaration du squid &laquo;&nbsp;père&nbsp;&raquo;</h2>
<p>Dans la conf, il faut simplement caser un :</p>
<pre>cache_peer proxycentral.maboite.fr parent 3128 3130 name=pxycentral
acl ftp proto FTP
always_direct allow ftp</pre>
<p>J&#8217;explique : on déclare que ce proxy a un père (parent), sur le port 3128, machine &laquo;&nbsp;proxycentral.maboite.fr&nbsp;&raquo;. On attaquera l&#8217;interrogation du contenu de son cache via le protocole <a href="http://en.wikipedia.org/wiki/Internet_Cache_Protocol" target="_blank">ICP</a> (UDP/3130) et on le surnomme &laquo;&nbsp;pxycentral&nbsp;&raquo; dans les logs <code>access.log</code> histoire d&#8217;y voir clair.<br />
Evidemment, le proxy central doit être ouvert sur le port TCP/3128 et UDP/3130 depuis les proxies &laquo;&nbsp;fils&nbsp;&raquo;.</p>
<h2>Rotation de logs</h2>
<p>Pour la rotation de logs, c&#8217;est en général un grand moment de bonheur pur sous Windows lorsqu&#8217;on amène un outil &laquo;&nbsp;du monde libre, tout ça&nbsp;&raquo; dans Windows. Heureusement ce coup-ci, Squid embarque ce qu&#8217;il faut :</p>
<pre>c:
cd \squid\sbin
squid -k rotate -n Squid</pre>
<p>Reste à mettre ça en &laquo;&nbsp;tâche planifiée&nbsp;&raquo; Windows.</p>
<p>Maintenant que ça tourne (testez), reste à synthétiser les logs, comme on le ferait naturellement sous Linux.</p>
<h1>calamaris sous Windows, youpiiiii</h1>
<p>Dans mon cas, ramener les logs sur un Linux qui aurait fait tourné calamaris était compliqué à mettre en oeuvre. Dans votre cas aussi, je suppose, car la rotation des logs fait que les fichiers sont renommés. Donc même avec un rsync (ou truc du genre), vous allez vous resynchroniser des Mo de logs (compressés éventuellement) à chaque fois.<br />
Bref, j&#8217;ai opté pour un déploiement de PERL sur les serveurs distants et une &laquo;&nbsp;tâche planifiée&nbsp;&raquo; pour générer les pages statiques de statistiques des &laquo;&nbsp;fils&nbsp;&raquo; Squid.</p>
<p>Sous Windows, rien n&#8217;est fourni, je noterai donc ici la ligne de commande bien longue qu&#8217;on n&#8217;a pas besoin de chercher sous Linux, car les scripts &laquo;&nbsp;cron&nbsp;&raquo; sont fournis avec le paquet calamaris. Sous Debian en tout cas.</p>
<p>J&#8217;ai donc utilisé ActivePerl et récupéré calamaris en .tar.gz sur le site de l&#8217;éditeur. Manque de bol, j&#8217;ai retrouvé <a href="http://michauko.org/blog/2009/04/21/calamaris-en-debian-stable-ca-bug/" target="_blank">le même bug que décrit ici</a>, donc j&#8217;ai fini par recopier le script perl <code>/usr/bin/calamaris</code> issu de ma Debian, patché pour corriger ledit bug.<br />
Ensuite, plutôt que de ramer avec le fichier de conf, j&#8217;appelle calamaris en ligne de commande, via une &laquo;&nbsp;tâche planifiée&nbsp;&raquo;, et ça fait le boulot. C&#8217;est pas terrible mais bon, ça marche.<br />
Pire que tout, pour générer les stats &laquo;&nbsp;weekly&nbsp;&raquo; et &laquo;&nbsp;monthly&nbsp;&raquo;, je recalcule tout en concaténant les différents &laquo;&nbsp;access.log.*&nbsp;&raquo; issus des rotations de logs, sur <em>X</em> jours.</p>
<p>En résumé, ça donne :</p>
<ul>
<li>
Installation de ActivePERL
</li>
<li>
Création dans C:\PERL\lib d&#8217;un répertoire calamaris avec les 3 fichiers .pm (modules PERL) pour la génération de graphiques dans les stats ; je n&#8217;ai pas trouvé comment lui spécifier d&#8217;utiliser ces modules, sans avoir à les copier dans PERL/lib. Je n&#8217;ai pas trop cherché non plus. Ca doit être avec &laquo;&nbsp;-I&nbsp;&raquo; ou quelque chose comme ça.
</li>
<li>
Recopie du script &laquo;&nbsp;calamaris&nbsp;&raquo; issu de Debian, quelque part sur le Windows
</li>
<li>
Mise en place de tâches planifiées appelant des &laquo;&nbsp;.bat&nbsp;&raquo; dans ce genre là :</p>
<pre>@echo off
d:
cd D:\calamaris-2.99.4.0
type d:\squid\var\logs\access.log.0 | perl calamaris -a -F html,graph -H lookup --output-path d:\calamaris\output\daily</pre>
</li>
</ul>
<p>Notez que GD::Graph, nécessaire pour les graphiques, est installé par défaut avec ActivePERL.</p>
<p>Et voilà, mettez tout ça en oeuvre et ça devrait le faire.</p>
<h1>Quelques remarques en vrac</h1>
<p>Si tous les codes de retours de Squid ne vous parlent pas, <a href="http://wiki.squid-cache.org/SquidFaq/SquidLogs?highlight=%28%28SquidFaq|SquidLogs%29%29" target="_blank">lisez cette documentation là</a>.</p>
<p>Comme je parle dans cet article d&#8217;un environnement mixte Windows &#038; Linux, on peut parler de WSUS. Ces considérations pour Squid concernant les mises à jour Windows peuvent vous intéresser : <a href="http://wiki.squid-cache.org/SquidFaq/WindowsUpdate" target="_blank">http://wiki.squid-cache.org/SquidFaq/WindowsUpdate</a></p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2009/11/03/arborescence-de-proxy-squid-calamaris-sous-windows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FluxBB : confirmation d&#8217;inscription ?</title>
		<link>http://michauko.org/blog/2009/10/05/fluxbb-confirmation-dinscription/</link>
		<comments>http://michauko.org/blog/2009/10/05/fluxbb-confirmation-dinscription/#comments</comments>
		<pubDate>Mon, 05 Oct 2009 12:13:29 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[autres outils]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[captcha]]></category>
		<category><![CDATA[FluxBB]]></category>
		<category><![CDATA[PunBB]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=685</guid>
		<description><![CDATA[Récemment, j&#8217;ai monté un forum FluxBB (version en cours 1.2.22). C&#8217;est un outil qui fait ce qu&#8217;il a à faire. Pas de fioriture. Bref, simple et ça marche. MAIS : rien pour valider les inscriptions. Soit on les ferme, soit on demande confirmation de l&#8217;expéditeur (il reçoit un mail avec son pass et confirme). Pas [...]]]></description>
			<content:encoded><![CDATA[<p>Récemment, j&#8217;ai monté un forum FluxBB (version en cours 1.2.22).<br />
C&#8217;est un outil qui fait ce qu&#8217;il a à faire. Pas de fioriture. Bref, simple et ça marche.</p>
<p>MAIS : rien pour valider les inscriptions. Soit on les ferme, soit on demande confirmation de l&#8217;expéditeur (il reçoit un mail avec son pass et confirme). Pas d&#8217;intermédiaire.</p>
<p>Résultat : des robots un peu partout qui s&#8217;inscrivent. Aucun message derrière, ptet juste pour garder un compte pour le jour où telle faille est publiée. Je ne sais pas.<br />
Bon bref, <a href="http://www.punbb.fr/forums/viewtopic.php?id=2621" target="_blank">en suivant ce qui est expliqué là</a>, vous ajouterez sans mal une question lors de l&#8217;inscription. Question si possible assez balaise pour qu&#8217;un robot ne sache pas y répondre.<span id="more-685"></span></p>
<p><em>EDIT : il y avait des balises php, interprétées&#8230; :</em><br />
Modifiez donc le fichier &laquo;&nbsp;register.php&nbsp;&raquo; comme indiqué <a href='http://michauko.org/blog/wp-content/uploads/2009/10/diff.txt'>dans ce fichier</a> (ou sur le site).</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2009/10/05/fluxbb-confirmation-dinscription/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Pidgin 2.6.1 &amp; OpenFire (Jabber) 3.6.* =&gt; bug</title>
		<link>http://michauko.org/blog/2009/08/27/pidgin-2-6-1-openfire-jabber-3-6-bug/</link>
		<comments>http://michauko.org/blog/2009/08/27/pidgin-2-6-1-openfire-jabber-3-6-bug/#comments</comments>
		<pubDate>Thu, 27 Aug 2009 07:32:03 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[autres outils]]></category>
		<category><![CDATA[bugs]]></category>
		<category><![CDATA[bureautique]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[jabber]]></category>
		<category><![CDATA[libpurple.dll]]></category>
		<category><![CDATA[openfire]]></category>
		<category><![CDATA[pidgin]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=576</guid>
		<description><![CDATA[Ca peut resservir à d&#8217;autres je pense. Depuis mon passage en Pidgin 2.6.1 (version portable, sous windows), la connexion au serveur Jabber OpenFire 3.6.4 (sous Debian) ne marchait plus, voire faisait planter Pidgin. Le fix est décrit ici, il faut remplacer votre libpurple.dll par celle-ci. En attendant un repackaging officiel (de Pidgin je suppose, pas [...]]]></description>
			<content:encoded><![CDATA[<p>Ca peut resservir à d&#8217;autres je pense.<br />
Depuis mon passage en Pidgin 2.6.1 (version portable, sous windows), la connexion au serveur Jabber OpenFire 3.6.4 (sous Debian) ne marchait plus, voire faisait planter Pidgin.</p>
<p>Le fix est <a href="http://developer.pidgin.im/ticket/10095">décrit ici</a>, il faut remplacer votre libpurple.dll par <a href="http://pidgin.im/~nosnilmot/2.6.1/srvfix/libpurple.dll">celle-ci</a>. En attendant un repackaging officiel (de Pidgin je suppose, pas d&#8217;OpenFire).</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2009/08/27/pidgin-2-6-1-openfire-jabber-3-6-bug/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress 2.8 et plug-ins</title>
		<link>http://michauko.org/blog/2009/06/30/wordpress-28-et-plug-ins/</link>
		<comments>http://michauko.org/blog/2009/06/30/wordpress-28-et-plug-ins/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 15:54:58 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[autres outils]]></category>
		<category><![CDATA[bugs]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[nextgen-gallery]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wp-table]]></category>
		<category><![CDATA[wp-table-reloaded]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=367</guid>
		<description><![CDATA[Petit retour d&#8217;expérience suite au passage en WordPress 2.8 &#8211; en fait il s&#8217;agissait d&#8217;installations directe en 2.8 par rapport à une en 2.7, mais ça revient au même. Sur certains sites que j&#8217;ai créés sous WordPress, j&#8217;utilise certains plugins assez géniaux, comme NextGen-Gallery pour des galeries de photos faciles et jolies et aussi wp-table [...]]]></description>
			<content:encoded><![CDATA[<p>Petit retour d&#8217;expérience suite au passage en WordPress 2.8 &#8211; en fait il s&#8217;agissait d&#8217;installations directe en 2.8 par rapport à une en 2.7, mais ça revient au même.<span id="more-367"></span></p>
<p>Sur certains sites que j&#8217;ai créés sous WordPress, j&#8217;utilise certains plugins assez géniaux, comme <a href="http://wordpress.org/extend/plugins/nextgen-gallery/">NextGen-Gallery</a> pour des galeries de photos faciles et jolies et aussi wp-table (et maintenant <a href="http://wordpress.org/extend/plugins/wp-table-reloaded/">wp-table-reloaded</a>) pour gérer des tableaux facilement et sans pondre un code bancal (sans compter les fonctions d&#8217;import depuis fichiers CSV, tri par colonne etc)</p>
<p>Sur un de mes sites, j&#8217;ai hésité à passer en 2.8 suite à une remarque lue par rapport à NextGen-Gallery indiquant qu&#8217;on risquait de péter une limite mémoire. Je n&#8217;ai donc pas encore testé (manque de temps histoire d&#8217;éviter le gros downtime sur le site&#8230;)<br />
<strong>C&#8217;est sur wp-table que j&#8217;ai eu un problème, </strong>je vous en fais part car la solution est triviale, alors que le problème est de taille.</p>
<p>Lorsqu&#8217;on cherche un plug-in pour gérer les tables facilement, sous wordpress, on tombe en premier lieu sur un plug-in nommé wp-table. Si on ne fait pas gaffe, on ne voit pas qu&#8217;il est validé pour WordPress 2.3 max&#8230; Bon, à part ça, jusqu&#8217;à wordpress 2.7 (et même 2.8 bleeding edge), ça tourne bien.<br />
Mais en 2.8 officielle, ça tourne de manière bancale : les tables sont bien intégrées (bonnes balises dans le code) lorsqu&#8217;on les voit dans un article. Mais si on les voit en naviguant dans les &laquo;&nbsp;catégories&nbsp;&raquo; ou &laquo;&nbsp;tags&nbsp;&raquo; d&#8217;article, les balises HTML/CSS ne sont pas positionnées. Résultat, un tableau dégueulasse, du ligne à ligne sans aucune mise en page.</p>
<p><strong>Grosso-modo </strong>: le code appelant les vues par catégories et par tags a dû fortement changer et le plug-in n&#8217;est pas inséré où il faut en 2.8&#8230;</p>
<p><strong>Panique </strong>: il faut vite trouver un plug-in correct et exporter/réimporter tout. L&#8217;horreur en perspective.<br />
En recherchant cette fois un plug-in potable en 2.8 p our les tables, on tombe sur &laquo;&nbsp;wp-table Reloaded&nbsp;&raquo; valide en 2.8. Tiens tiens&#8230;<br />
C&#8217;est carrément extra : après l&#8217;installation (wget+unzip+activate, comme d&#8217;hab), le menu d&#8217;import trouve tout seul les tables crées par le vieux wp-table dont il semble être issu. Vu le nom, remarquez, ça semble presque logique.<br />
Résultat, à part une réindexation des numéros de tables (on recommence à 1) et la balise &laquo;&nbsp;table&nbsp;&raquo; entre crochets qui change un peu (donc tous les &laquo;&nbsp;posts&nbsp;&raquo; et &laquo;&nbsp;pages&nbsp;&raquo; à modifier un peu), le boulot est vite torché.<br />
Reste que le CSS par défaut des tables me semble un peu light.<br />
Le tri par colonne existe toujours, mais il nécessite un plugin JQuery. Je ne l&#8217;ai pas encore mis en place, mais ça ne semble pas compliqué.</p>
<p>Si vous connaissez mieux comme plug-ins de galerie photos et de gestion de tables, n&#8217;hésitez pas à en faire part. Les notations sur la page de plug-ins de WordPress sont assez légères (en général plusieurs dizaines de votes pour des dizaines de milliers de download), il est donc difficile parfois de voir si un plug-in tient la route ou pas&#8230;</p>
<p>Bloggez bien.</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2009/06/30/wordpress-28-et-plug-ins/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>SquidGuard : filtre d&#8217;URL et listes à jour (le plus dur)</title>
		<link>http://michauko.org/blog/2009/05/20/squidguard-filtre-durl-et-listes-a-jour-le-plus-dur/</link>
		<comments>http://michauko.org/blog/2009/05/20/squidguard-filtre-durl-et-listes-a-jour-le-plus-dur/#comments</comments>
		<pubDate>Wed, 20 May 2009 07:53:27 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[autres outils]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[reseau et sécu]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[filtre]]></category>
		<category><![CDATA[proxy]]></category>
		<category><![CDATA[squid]]></category>
		<category><![CDATA[squidguard]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=313</guid>
		<description><![CDATA[Edit 02/02/2011 : l&#8217;auteur de Squidguard précise : Bonjour à tous, Suite à une demande récurrente, et visiblement partagée par un certain nombre d'organisme, nous créons une nouvelle catégorie : "social_networks". Elle permettra de filtrer plus spécifiquement les sites de réseaux sociaux, en ne les incluant pas dans des catégories finalement inadaptées. Nous essayerons, tant [...]]]></description>
			<content:encoded><![CDATA[<hr />
<strong>Edit 02/02/2011 : l&#8217;auteur de Squidguard précise :</strong></p>
<pre>    Bonjour à tous,

    Suite à une demande récurrente, et visiblement partagée par un certain nombre d'organisme, nous créons une nouvelle catégorie : "social_networks".

    Elle permettra de filtrer plus spécifiquement les sites de réseaux sociaux, en ne les incluant pas dans des catégories finalement inadaptées.

    Nous essayerons, tant que faire ce peut, de sortir les sites complets des autres catégories (par exemple facebook de la catégorie blog).

    Cordialement </pre>
<p><strong>FIN</strong></p>
<hr />
<p>Pour faire suite à l&#8217;article sur la mise en place de <a href="http://michauko.org/blog/2009/05/19/privoxy-sur-squid-virer-les-pubs-pour-tout-le-monde/">Privoxy pour faire sauter les pubs</a> dans toute votre société (ou chez vous sur votre petit réseau local), voici un complément : le filtre d&#8217;URL par catégorie.<span id="more-313"></span></p>
<p>J&#8217;ai eu l&#8217;occasion de jouer avec SquidGuard à travers un serveur IPCOP mis en place par mes soins dans l&#8217;école primaire de mon village, avec la bénédiction du Ministère de l&#8217;Education. Ca marche pas mal, il faut avouer. N&#8217;ayant pas de moyen, une école optera certainement pour des listes de filtrages gratuites. Si une seule était à retenir, ce serait <a href="http://cri.univ-tlse1.fr/blacklists/">celle de l&#8217;Université de Toulouse</a>.</p>
<p><strong>Deux objectifs possibles :</strong></p>
<ul>
<li>éviter les abus en entreprises :sites sociaux à la facebook, vidéos à gogos, porno et autres contre-productivités sur le clavier etc&#8230;</li>
<li>filtrer les sites pour vos enfants (<a href="http://cri.univ-tlse1.fr/documentations/cache/protection_enfance.html">lisez ça aussi, ça donnera d&#8217;autres pistes</a>)</li>
</ul>
<h1>Mise en place sur Debian</h1>
<h2>Installation et docs de base</h2>
<p>Contrairement à pas mal d&#8217;outils sous Debian, l&#8217;installation ne fait rien en soit, elle amène simplement de l&#8217;outillage et la plus grosse part est après.<br />
Commencez par installer le logiciel, via un classique <code>aptitude install squidguard</code>.<br />
Evidemment, votre squid est déjà en place et fonctionnel.</p>
<p>Pensez à lire le fichier <code>/usr/share/doc/squidguard/README.Debian</code> ; c&#8217;est d&#8217;ailleurs une règle générale après une installation de paquet Debian, mais surtout pour SquidGuard qui, après l&#8217;installation, ne fait rien tout seul.</p>
<h2>Principes de fonctionnement</h2>
<p>Je décris le principe avant de foncer la tête dans le guidon.</p>
<p>SquidGuard est simplement une sorte d&#8217;extension à base de scripts et d&#8217;ACL Squid pour filtrer des URL en se basant sur des domaines et des expressions régulières d&#8217;URL<br />
Lui même n&#8217;apporte aucun niveau de filtrage et il faudra aller chercher une liste à jour de sites. C&#8217;est là toute la difficulté.<br />
J&#8217;arrête tout de suite ceux qui pensent bloquer facebook.com en écrivant une ACL bidon genre <code>deny blabla facebook.com</code> dans Squid. Entre les sites genre how-to-un-unblock-facebook.com et les &laquo;&nbsp;redirectors&nbsp;&raquo; genre proxies anonymes, ce sera impossible. D&#8217;où l&#8217;aide de listes, payantes ou non, robotisées ou non, mises à jour régulièrement ou non.<br />
Soit vous payez une liste type urlblacklist.com, soit vous optez pour une gratuite, mais néanmoins efficace, comme celle de l&#8217;Université de Toulouse, cf. plus haut. Sinon, <a href="http://www.squidguard.org/blacklists.html">allez voir là</a> &#8211; je n&#8217;ai pas testé les 2 premiers liens.</p>
<p>La README évoqué ci-dessus parle d&#8217;un paquet &laquo;&nbsp;chastity-list&nbsp;&raquo;, <code>apt-cache search chastity</code> n&#8217;ayant rien donné, je n&#8217;ai pas cherché plus loin.</p>
<p>Une fois la liste choisie, vous obtiendrez généralement des fichiers textes, classés par catégories. Il faut les transformer en base de données type Berkeley-machin (fichiers .db) pour qu&#8217;ils soient efficaces en mémoire.<br />
Ce sera évidemment à scripter automatiquement toutes les nuits (nouvelles listes => nouveaux .db => rechargement de Squid).<br />
A noter que les fichiers .db seront générés par SquidGuard <strong>uniquement lorsqu&#8217;il verra que vous utilisez telle ou telle catégorie dans <code>/etc/squid/squidGuard.conf</code></strong>. SquidGuard n&#8217;ira pas compiler les bases inutilisées (ce qui prend du temps sur des grosses listes, genre &laquo;&nbsp;adult&nbsp;&raquo; (=porno))</p>
<p>Enfin, vous ajouterez les catégories qui vous intéressent en ayant pris soin de créer une belle page qui indique à l&#8217;utilisateur pourquoi tel site est bloqué (je suis sympa, je vous fournis un tel script minimaliste ; en gros une correction de celui fourni dans le package SquidGuard qui est passablement foireux)</p>
<p>Je ne parle pas des aspects communication en entreprise : filtrer les sites aura sûrement un impact important sur le moral des troupes, fonction du gain de bande passante, fonction de la productivité <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2>Mise en place pratique</h2>
<p>J&#8217;illustre la suite par le blocage de la catégorie &laquo;&nbsp;hacking&nbsp;&raquo;, où l&#8217;on pourra tester par exemple www.warez.com, à partir des listes de l&#8217;Université de Toulouse</p>
<h3>Récupération de la liste de l&#8217;Université de Toulouse</h3>
<p>La base : récupérez soit <a href="ftp://ftp.univ-tlse1.fr/blacklist/">une catégorie</a>, soit <a href="ftp://ftp.univ-tlse1.fr/blacklist/blacklists.tar.gz">la totalité</a> (je pars sur cette option). Voyez <a href="http://cri.univ-tlse1.fr/blacklists/">l&#8217;explication de chaque catégorie ici</a>.</p>
<pre>mkdir /root/squidguard
cd /root/squidguard
wget ftp://ftp.univ-tlse1.fr/blacklist/blacklists.tar.gz
tar xzvf blacklists.tar.gz
mv blacklists/* /var/lib/squidguard/db/
chown -R  proxy:proxy /var/lib/squidguard/db/
</pre>
<h3>Choix d&#8217;une catégorie</h3>
<p>Dans <code>/etc/squid/squidGuard.conf</code>, on va toucher le minimum. Ajoutez n&#8217;importe où :</p>
<pre>dest hacking {
   domainlist hacking/domains
   urllist hacking/
   log guard_hacking.log
}
</pre>
<p>Pour savoir si une catégorie contient des &laquo;&nbsp;domaines&nbsp;&raquo;, des &laquo;&nbsp;URL&nbsp;&raquo; ou des &laquo;&nbsp;expressions&nbsp;&raquo;, allez voir dans <code>/var/lib/squidguard/db/la_categorie/</code>. En effet, seules quelques catégories ont des &laquo;&nbsp;expressions&nbsp;&raquo;, il s&#8217;agit avant tout des catégories de pubs. Je considère que <a href="http://michauko.org/blog/2009/05/19/privoxy-sur-squid-virer-les-pubs-pour-tout-le-monde/">privoxy</a> est là pour ça. Donc je n&#8217;ajoute pas <code>expression hacking/expressions</code> (même pas sûr de la syntaxe). Pour m&#8217;assurer que les &laquo;&nbsp;expressions&nbsp;&raquo; sont utilisées uniquement pour la pub, j&#8217;ai fait ça et vu des fichiers de taille 0 ou non-existant pour la plupart des catégories :</p>
<pre>srv:/var/lib/squidguard/db# ls -l */expres*
-rwxr-xr-x 1 proxy proxy  57 2006-05-10 07:47 ads/expressions
-rw-r--r-- 1 proxy proxy   0 2005-10-18 16:51 adult/expressions
-rw-r----- 1 proxy proxy   0 2002-11-06 14:08 aggressive/expressions
-rw-r----- 1 proxy proxy   0 2002-11-06 14:08 agressif/expressions
-rw-r--r-- 1 proxy proxy   0 1999-03-04 08:07 forums/expressions
-rw-r--r-- 1 proxy proxy   0 1999-03-04 08:07 mail/expressions
-rw-r--r-- 1 proxy proxy  42 2009-03-19 10:42 malware/expression
-rw-r--r-- 1 proxy proxy  47 2009-03-20 13:30 malware/expressions
-rw-r--r-- 1 proxy proxy   0 2005-10-18 16:51 porn/expressions
-rw-r--r-- 1 proxy proxy   0 1999-10-06 17:37 proxy/expressions
-rwxr-xr-x 1 proxy proxy  57 2006-05-10 07:47 publicite/expressions
-rw-r--r-- 1 proxy proxy   0 1999-10-06 17:37 redirector/expressions
-rw-r--r-- 1 proxy proxy 123 2005-06-14 21:33 strict_redirector/expressions
-rw-r--r-- 1 proxy proxy 505 2006-05-23 22:05 strong_redirector/expressions
-rw-r----- 1 proxy proxy   0 2002-11-06 14:08 violence/expressions
-rw-r--r-- 1 proxy proxy   0 1999-04-19 14:04 warez/expressions</pre>
<p>Ensuite, on indique à SquidGuard (donc à Squid) comment réagir pour cette catégorie. Modifier la section <code>acl {}</code> du fichier <code>/etc/squid/squidGuard.conf</code> pour qu&#8217;il y ait ça (gardez ou non la palanquée de lignes de commentaires) :</p>
<pre>acl {
   default {
      pass !hacking all
      redirect http://srv/cgi-bin/squidGuard-simple.cgi?clientaddr=%a&#038;srcclass=%s&#038;targetclass=%t&#038;url=%u
   }
}
</pre>
<p>Si vous voulez bloquer plusieurs catégories, ce sera à base de <code>pass !hacking !adult !blabla all</code>.<br />
Notez dans la section <code>acl {}</code> l&#8217;adresse de redirection utilisée : une page spéciale hébergée sur le serveur, nommée <code>squidGuard-simple.cgi</code>. Il faut maintenant la mettre en place.<br />
A noter aussi, il me semble que de base, la ligne &laquo;&nbsp;redirect&nbsp;&raquo; contient des &laquo;&nbsp;+&nbsp;&raquo; à la place des &laquo;&nbsp;&&nbsp;&raquo; pour passer les arguments. J&#8217;ai pas bien pigé, j&#8217;ai toujours vu des &laquo;&nbsp;&&nbsp;&raquo; et avec les &laquo;&nbsp;+&nbsp;&raquo;, ça ne marchait pas.</p>
<h3>Redirection vers une page spéciale</h3>
<ul>
<li>Attention, j&#8217;ai ouï dire que si le script n&#8217;était pas là, ça passait silencieusement et la requête aboutissait malgré la demande de blocage. Je n&#8217;ai pas testé, j&#8217;ai surtout testé une URL de chaque catégorie que je suis censé bloqué.
</li>
<li>Je considère que votre site web est configuré pour que /cgi-bin/ soit en un &laquo;&nbsp;Alias&nbsp;&raquo; de &laquo;&nbsp;/usr/lib/cgi-bin/&nbsp;&raquo;, c&#8217;est en général défini dans la configuration par défaut d&#8217;Apache2 et vous pouvez vous en assurer rapidement avec cette commande <code>grep cgi-bin /etc/apache2/sites-enabled/*</code> pour voir si ça répond &#8211; en gros.</li>
<li>La liste des variables que l&#8217;on peut passer au script de redirection est donnée dans la doc HTML, <code>/usr/share/doc/squidguard/CONFIGURATION.html</code></li>
</ul>
<p>Deux scripts sont fournis par le mainteneur du paquet Debian pour nous donner une trame pour l&#8217;écriture du script de redirection &#8211; le script qui dira &laquo;&nbsp;accès bloqué blabla, si vous pensez que c&#8217;est une erreur, contactez l&#8217;administrateur blabla&nbsp;&raquo;. Ils sont là :</p>
<pre>srv:/var/lib/squidguard/db# dpkg -S squidGuard*.cgi
squidguard: /usr/share/doc/squidguard/examples/squidGuard.cgi.gz
squidguard: /usr/share/doc/squidguard/examples/squidGuard-simple.cgi.gz</pre>
<p>Le premier est apparement plus complet, prévu pour du multi-langues etc, <strong>mais récupère comme un pied les variables qu&#8217;on lui passe</strong>. J&#8217;ai opté pour l&#8217;autre car rapidement, j&#8217;ai pu mettre en place une page qui indiquait clairement et simplement le site bloqué, la catégorie, l&#8217;IP du demandeur et donnait le mail de contact de l&#8217;administrateur.<br />
Donc soit vous optez pour ces scripts, soit pour le <a href='http://michauko.org/blog/wp-content/uploads/2009/05/squidguard-simple.zip'>mien fourni ici</a>, basé sur le 2è script, traduit en français et épuré de certains trucs inutiles. Voyez :</p>
<p><a href="http://michauko.org/blog/wp-content/uploads/2009/05/20090520_092614.png"><img src="http://michauko.org/blog/wp-content/uploads/2009/05/20090520_092614-300x213.png" alt="squidguard" title="squidguard" width="300" height="213" class="aligncenter size-medium wp-image-336" /></a></p>
<p>On est fin prêt pour un test grandeur nature.</p>
<h3>Relance de Squid via la compilation des listes de blocage</h3>
<p>Lancez la commande <code>/usr/sbin/update-squidguard</code> pour contrôler les droits sur les fichiers de <code>/var/lib/squidguard/db/</code> et générer les .db.<br />
Attention, sur la liste &laquo;&nbsp;adult&nbsp;&raquo; (environ 1 million de domaines), ça peut prendre quelques minutes.<br />
Ce script recharge Squid.<br />
Testez un site de la catégorie &laquo;&nbsp;hacking&nbsp;&raquo;, exemple www.warez.com</p>
<h2>Script de mise à jour automatiques des listes</h2>
<p>Voici un script que j&#8217;ai mis en crontab pour automatiser la récupération de la liste de l&#8217;Université de Toulouse (si mise à jour), la mise à jour qui va bien, création de .db et relance de Squid.</p>
<pre>srv:~# cat /root/squidguard/update_toulouse.sh
#!/bin/sh
cd /root/squidguard
wget -N ftp://ftp.univ-tlse1.fr/blacklist/blacklists.tar.gz
rm -rf blacklists
rm -rf /var/lib/squidguard/db/*
tar -xzvf blacklists.tar.gz
# proprio et perm fixées de toute manière par update-squidguard
chown -R proxy:proxy blacklists
mv blacklists/* /var/lib/squidguard/db/
/usr/sbin/update-squidguard
# A priori, si le site est down ou connx internet HS, on reutilisera le .tar.gz actuel
# donc pas de risque de se retrouver avec une base vide
</pre>
<p>Mettez les droits d&#8217;exécution via <code>chmod u+x /root/squidguard/update_toulouse.sh</code> et collez ça dans la crontab :</p>
<pre>0 3 * * 1-5     root    /root/squidguard/update_toulouse.sh</pre>
<p>Ca devrait rouler !</p>
<h2>Divers</h2>
<h3>Log des accès interdits</h3>
<p>J&#8217;ai passé sous silence la ligne &laquo;&nbsp;log guard_hacking.log&nbsp;&raquo;. Elle est optionnelle et permet de garder ou non une trace des accès interdit, par catégorie. A voir, vie privée des gens, tout ça. J&#8217;ai choisi de la nommer quelque_chose.log car ce fichier ira directement dans <code>/var/log/squid/</code> et sera donc &laquo;&nbsp;logrotaté&nbsp;&raquo; naturellement comme tous les logs Squid, via ce qu&#8217;on trouve en standard dans le logrotate de Squid, <code>/etc/logrotate.d/squid</code>, à savoir : <code>/var/log/squid/*.log</code><br />
Vu ?</p>
<h3>Plages horaires</h3>
<p>Vous noterez que la conf simpliste ici peut être étoffée, dans le fichier <code>/etc/squid<br />
/squidGuard.conf</code>, vous avez tous les commentaires nécessaires,  notamment pour faire du [dé]blocage par plages horaires.</p>
<h3>D&#8217;autres compléments pour Squid ?</h3>
<p>Après <a href="http://michauko.org/blog/2009/05/19/privoxy-sur-squid-virer-les-pubs-pour-tout-le-monde/">Privoxy</a>, il faudrait un 3è article maintenant sur HAVP. Je vais y penser éventuellement.</p>
<h3>Générer la conf pour toutes les catégories</h3>
<p>Ne réutilisez pas le résultat brutalement, vous bloqueriez même Google, car il est listé dans ce qui ressemble plus à une whiteliste propre à l&#8217;Université de Toulouse, la catégorie &laquo;&nbsp;liste_bu&nbsp;&raquo;.<br />
Afin d&#8217;obtenir la liste complète des déclarations de catégories pour squidGuard.conf, vous pouvez utiliser celà :</p>
<pre>srv:/var/lib/squidguard/db# for i in `find . -maxdepth 1 -type d|awk -F'/' '{print $2}' | sort`
do
	echo -e dest $i {
	echo -e \\t"domainlist $i/domains"
	echo -e \\t"urllist $i/urls"
	echo -e \\t"log guard_$i.log"
	echo }
done</pre>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2009/05/20/squidguard-filtre-durl-et-listes-a-jour-le-plus-dur/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Privoxy sur Squid : virer les pubs pour tout le monde</title>
		<link>http://michauko.org/blog/2009/05/19/privoxy-sur-squid-virer-les-pubs-pour-tout-le-monde/</link>
		<comments>http://michauko.org/blog/2009/05/19/privoxy-sur-squid-virer-les-pubs-pour-tout-le-monde/#comments</comments>
		<pubDate>Tue, 19 May 2009 14:57:52 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[autres outils]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[mails]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[ie]]></category>
		<category><![CDATA[privoxy]]></category>
		<category><![CDATA[proxy]]></category>
		<category><![CDATA[squid]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=299</guid>
		<description><![CDATA[Sur mon firefox, j&#8217;utilise &#171;&#160;AdBlock Plus&#160;&#187; pour filtrer les pubs. Mais dans une société où IE est le maître (pour cause d&#8217;intranets pas compatibles, de pas de droit d&#8217;admins et d&#8217;utilisateurs contents avec IE (!)), amuse toi pour faire sauter les pubs pour tout le monde. J&#8217;ai entendu parler de IE7pro, une extension pour IE [...]]]></description>
			<content:encoded><![CDATA[<p>Sur mon firefox, j&#8217;utilise &laquo;&nbsp;<a href="https://addons.mozilla.org/fr/firefox/addon/1865">AdBlock Plus</a>&nbsp;&raquo; pour filtrer les pubs. Mais dans une société où IE est le maître (pour cause d&#8217;intranets pas compatibles, de pas de droit d&#8217;admins et d&#8217;utilisateurs contents avec IE (!)), amuse toi pour faire sauter les pubs pour tout le monde.<br />
J&#8217;ai entendu parler de IE7pro, une extension pour IE (je ne savais même pas que ça existait). Je l&#8217;ai donc installé et désinstallé dans la foulée. C&#8217;est naze.<br />
D&#8217;où l&#8217;idée de déterrer ce bon vieux <a href="http://www.privoxy.org/">privoxy</a> que j&#8217;utilisais localement sur mon PC avant que &laquo;&nbsp;Adblock Plus&nbsp;&raquo; n&#8217;existe. Il peut se chaîner avec un autre proxy, notamment Squid, afin de filtrer toutes les pubs. (toutes = le mieux possible)</p>
<p>Allez zou, mise en place de la chose sur un serveur avec Squid, pour en faire profiter tout le monde.<span id="more-299"></span></p>
<h1>Quelques remarques par rapport à Debian</h1>
<p>Je ne connais pas trop le rythme d&#8217;update des règles de privoxy. Ce que j&#8217;en ai compris, c&#8217;est qu&#8217;elles sont intégrées au package privoxy. A mon sens, ça devrait être dissocié, par exemple dans le dépôt &laquo;&nbsp;volatile&nbsp;&raquo;.<br />
Ca ne l&#8217;est pas. Et comme les pubs évoluent, j&#8217;ai un peu hésité.</p>
<blockquote><p>EDIT : j&#8217;ai changé d&#8217;avis sur ce qui suit : j&#8217;ai pris la version officielle Debian. Cf. les commentaires</p></blockquote>
<p><em>Finalement, j&#8217;ai opté pour la <a href="http://sourceforge.net/project/showfiles.php?group_id=11118">version packagée Debian sur le site de privoxy</a> plutôt que la version officielle dans la &laquo;&nbsp;stable&nbsp;&raquo;. Moins pratique pour mettre à jour, mais je n&#8217;aimerais pas qu&#8217;un nouveau genre de pubs ne soit pas filtré ou à l&#8217;inverse, trop de coups de haches sur certains sites.<br />
</em> En &laquo;&nbsp;stable&nbsp;&raquo;, on est en 3.0.9 si je ne dis pas de bêtise, contre 3.0.12 en .deb sur le site.</p>
<p>J&#8217;ai aussi essayé de trouver une méthode facile pour convertir les expressions régulières d&#8217;Adblock Plus pour privoxy. J&#8217;ai lâché l&#8217;affaire. Si quelqu&#8217;un sait faire, ça peut être intéressant.</p>
<h1>Quelques chiffres après 2 semaines d&#8217;utilisation</h1>
<p>Histoire de mettre l&#8217;eau à la bouche. 100 personnes surfant raisonnablement ont vus (façon de parler) 10% de leurs requêtes bloquées par privoxy. C&#8217;est toujours ça d&#8217;économisé, mais c&#8217;est surtout le gain sur la pollution visuelle qui vaut le coup.<br />
Je n&#8217;ai pas vu de différences sur quelques sites où j&#8217;avais l&#8217;habitude d&#8217;aller via &laquo;&nbsp;Firefox+AdBlockPlus&nbsp;&raquo; par rapport à &laquo;&nbsp;n&#8217;importe quel navigateur+privoxy sans adblock plus évidemment&nbsp;&raquo;.</p>
<h1>Mise en place sur Debian</h1>
<h2>Installation</h2>
<p>Installez donc le <a href="http://sourceforge.net/project/showfiles.php?group_id=11118">package Debian </a>, précédemment téléchargé, avec la commande suivante :</p>
<pre>dpkg -i privoxy_3.0.12-1_i386.deb</pre>
<h2>Paramétrage et tests de base</h2>
<p>Tout se passe dans <code>/etc/privoxy/config</code>. Vous n&#8217;avez qu&#8217;une chose à modifier pour tester votre privoxy en direct :</p>
<pre>listen-address  localhost:8118</pre>
<p>Si le service est sur un serveur (et pas votre PC), changez &laquo;&nbsp;localhost&nbsp;&raquo; en &laquo;&nbsp;*&nbsp;&raquo; ou l&#8217;IP de la machine sur le LAN et relancez via <code>/etc/init.d/privoxy restart</code><br />
Bien sûr, il faut indiquer à votre navigateur d&#8217;utiliser le proxy sur cette machine, port 8118.<br />
<strong>A la fin : faites bien attention à la valeur choisie (ou à vos règles de firewall si elles filtrent l&#8217;accès au serveur squid/privoxy), il ne faudrait pas qu&#8217;un utilisateur puisse adresser en direct privoxy en court-circuitant squid&#8230;</strong></p>
<h2>Interco avec Squid</h2>
<p>La doc officielle de privoxy dit de chaîner dans l&#8217;ordre : PC -> squid -> privoxy<br />
Il doit y avoir une raison, peut-être pour ne pas court-circuiter les éventuelles ACL de Squid, qui permettraient par exemple un certain traitement suivant l&#8217;IP source de la requête.<br />
Bon bref, c&#8217;est donc au niveau de Squid qu&#8217;il faut paramétrer. Cherchez le mot &laquo;&nbsp;squid&nbsp;&raquo; dans la doc <a href="http://www.privoxy.org/user-manual/config.html">http://www.privoxy.org/user-manual/config.html</a>. En résumé, ajoutez où il faut dans <code>/etc/squid/squid.conf</code> :</p>
<pre>cache_peer 127.0.0.1 parent 8118 7 no-query
acl ftp proto FTP
always_direct allow ftp
never_direct allow all</pre>
<p>Dans l&#8217;exemple, 127.0.0.1 indique que privoxy est sur la même machine que squid, sinon mettez l&#8217;IP de privoxy, et son port, par défaut 8118.<br />
A noter que squid fait proxy FTP dans mon exemple, sinon adaptez.<br />
Relancez squid, un <code>/etc/init.d/squid reload</code> doit suffire.</p>
<h1>Pour voir les stats vite fait</h1>
<p><a href="http://p.p/">http://p.p/</a><br />
Ca peut servir pour configurer l&#8217;outil aussi, si vous avez activé ce qu&#8217;il faut<br />
Evidemment, vous serez gentils de whitelister michauko.org. Je me suis pas tapé la mise en place de Google AdSense pour rien <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ouais bon, ça va&#8230; c&#8217;est pour financer un jour quelques mois de mon serveur&#8230;</p>
<h1>A suivre</h1>
<p>L&#8217;article SquidGuard, l&#8217;ami de Squid quand l&#8217;accès Internet est un peu trop surchargé par 99% d&#8217;inutile.</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2009/05/19/privoxy-sur-squid-virer-les-pubs-pour-tout-le-monde/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Installer le client Oracle sur Debian/Lenny, interco avec PHP</title>
		<link>http://michauko.org/blog/2009/05/07/installer-le-client-oracle-sur-debianlenny-interco-avec-php/</link>
		<comments>http://michauko.org/blog/2009/05/07/installer-le-client-oracle-sur-debianlenny-interco-avec-php/#comments</comments>
		<pubDate>Thu, 07 May 2009 15:48:32 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[autres outils]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[alien]]></category>
		<category><![CDATA[oci8]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[pecl]]></category>
		<category><![CDATA[phpinfo]]></category>
		<category><![CDATA[tnsnames.ora]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=285</guid>
		<description><![CDATA[Dans la série j&#8217;installe des trucs pas vraiment packagés pour Debian, voici le client Oracle ; toujours dans l&#8217;optique de faire gagner du temps à ceux qui auraient à le faire. Je n&#8217;ai pas trouvé de méthode bien propre sur Google. En mixant plusieurs docs qui sont des comptes-rendus d&#8217;install de cas particuliers, je pense [...]]]></description>
			<content:encoded><![CDATA[<p>Dans la série j&#8217;installe des trucs pas vraiment packagés pour Debian, voici le client Oracle ; toujours dans l&#8217;optique de faire gagner du temps à ceux qui auraient à le faire.<br />
Je n&#8217;ai pas trouvé de méthode bien propre sur Google. En mixant plusieurs docs qui sont des comptes-rendus d&#8217;install de cas particuliers, je pense avoir trouvé une méthode un peu générale, vu que je suis parti d&#8217;une machine vide. Quant au moteur de recherche d&#8217;infos sur oracle.com, j&#8217;ai vite renoncé.<span id="more-285"></span></p>
<h2>Contexte</h2>
<p>Un serveur Oracle sous Windows, quelque part. Une machine Linux sur laquelle je veux pouvoir faire tourner des scripts PHP (en ligne de commande et via apache) attaquant cette base, et faire du sqlplus &laquo;&nbsp;nativement&nbsp;&raquo; depuis cette machine.</p>
<h2>Repos Debian VS .zip VS .rpm</h2>
<p>Oracle propose un repo à l&#8217;adresse suivante : <code>deb http://oss.oracle.com/debian unstable main non-free</code>. Je n&#8217;ai pas ressenti le besoin de l&#8217;utiliser. Il m&#8217;a l&#8217;air d&#8217;être là pour l&#8217;installation d&#8217;Oracle XE, la version serveur gratuite, l&#8217;équivalent d&#8217;un MSQL Server Express chez Microsoft.<br />
Ensuite, entre le ZIP et le RPM, j&#8217;ai opté pour les RPM. J&#8217;explique ci-dessous.</p>
<p>Au passage, si vous voulez voir le repository, ajoutez la signature suivante :</p>
<pre>cd /tmp
wget http://oss.oracle.com/el4/RPM-GPG-KEY-oracle
apt-key add RPM-GPG-KEY-oracle</pre>
<h2>Installation des paquets</h2>
<p>Dans mon cas, j&#8217;ai été cherché les paquets suivants &#8211; <a href="http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/linuxsoft.html">tous disponibles ici</a> :</p>
<ul>
<li>oracle-instantclient11.1-basic : la lib de connexion Oracle</li>
<li>oracle-instantclient11.1-devel : Le SDK, pour la suite, notamment construire le module php oci8</li>
<li>oracle-instantclient11.1-sqlplus : l&#8217;outil sqlplus</li>
</ul>
<p>J&#8217;ai opté pour les versions RPM que j&#8217;ai converti via <a href="http://fr.wikipedia.org/wiki/Alien_(linux)">alien</a> en .deb<br />
Le seul intérêt est d&#8217;éviter de se demander où on doit mettre les fichiers qui sont livrés (en version ZIP) tous dans le même répertoire, (les lib, exe, etc). Pour autant, ça ne génère pas de script de pre/post-configuration qui auraient permis de positionner les variables habituelles Oracle (TNS_ADMIN par exemple), ce genre de manips.<br />
Donc, après avoir installé les 3 .deb, il faut faire :</p>
<pre>echo /usr/lib/oracle/11.1/client/lib >> /etc/ld.so.conf.d/oracle.conf
ldconfig -v # indique ces lib au linker ld.so
echo TNS_ADMIN=/etc/oracle >> /etc/environment
mkdir /etc/oracle # vous y stockerez le tnsnames.ora
aptitude install libaio1 # necessaire pour la comm. Oracle</pre>
<p>Si vous n&#8217;installez pas &laquo;&nbsp;libaio1&#8243;, vous planterez car sqlplus en a besoin, voyez :</p>
<pre>serveur:/# ldd `which sqlplus`
        linux-gate.so.1 =>  (0xb7fa3000)
        libsqlplus.so => /usr/lib/oracle/11.1/client/lib/libsqlplus.so (0xb7ef6000)
        libclntsh.so.11.1 => /usr/lib/oracle/11.1/client/lib/libclntsh.so.11.1 (0xb63aa000)
        libnnz11.so => /usr/lib/oracle/11.1/client/lib/libnnz11.so (0xb61fd000)
        libdl.so.2 => /lib/i686/cmov/libdl.so.2 (0xb61f9000)
        libm.so.6 => /lib/i686/cmov/libm.so.6 (0xb61d3000)
        libpthread.so.0 => /lib/i686/cmov/libpthread.so.0 (0xb61ba000)
        libnsl.so.1 => /lib/i686/cmov/libnsl.so.1 (0xb61a1000)
        libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb6046000)
<strong>        libaio.so.1 => /lib/libaio.so.1 (0xb6043000)</strong>
        /lib/ld-linux.so.2 (0xb7fa4000)
</pre>
<p>Enfin, il faut renseigner votre fichier tnsnames.ora de description de vos bases, exemple :</p>
<pre>serveur:/# cat /etc/oracle/tnsnames.ora
# Generated by ma main
MaBase =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.x.y)(PORT = 1522))
    )
    (CONNECT_DATA =
      (SID = MON_SID)
    )
  )
</pre>
<p>A ce niveau là, sqlplus devrait fonctionner, testez via :</p>
<pre>sqlplus login/pass@MaBase</pre>
<p>Bien sûr, vous vous êtes reloggué pour bénéfichier de la variable d&#8217;environnement TNS_ADMIN <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<h2>Partie PHP pure</h2>
<p>Il faut installer 2/3 compléments à PHP si ce n&#8217;est déjà fait, à savoir les paquets php5-dev, php-pear et enfin ajouter &laquo;&nbsp;l&#8217;extension oci8&#8243; pour prendre en charge les connexions Oracle.<br />
Faites-vous un script appelant phpinfo() pour voir qu&#8217;il manque l&#8217;extension &laquo;&nbsp;oci8&#8243;.<br />
Pour l&#8217;installer, on utilise &laquo;&nbsp;pecl&nbsp;&raquo; (cet outil permet d&#8217;aller chercher des extensions PHP que votre distribution n&#8217;aurait pas pré-packagé, un peu comme les modules PERL qu&#8217;on trouve chez <a href="http://www.cpan.org/">cpan.org</a> et qu&#8217;on installe en ligne de commande via &laquo;&nbsp;cpan&nbsp;&raquo; (si je me souviens bien <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ) et les compile sur votre système, automagiquement.<br />
On tape donc :</p>
<pre>pecl install oci8</pre>
<p>Ca mouline, et si ça n&#8217;insulte pas, alors on est bon :</p>
<pre>serveur:~/pecl# pecl install oci8
downloading oci8-1.3.5.tgz ...
Starting to download oci8-1.3.5.tgz (137,987 bytes)
........................done: 137,987 bytes
10 source files, building
running: phpize
Configuring for:
PHP Api Version:         20041225
Zend Module Api No:      20060613
Zend Extension Api No:   220060519
 1. Please provide the path to the ORACLE_HOME directory. Use 'instantclient,/path/to/instant/client/lib' if you're compiling with Oracle Instant Client : autodetect

1-1, 'all', 'abort', or Enter to continue:
building in /var/tmp/pear-build-root/oci8-1.3.5
running: /tmp/pear/temp/oci8/configure --with-oci8
checking for grep that handles long lines and -e... /bin/grep
[...]
configure: WARNING: You will need re2c 0.12.0 or later if you want to regenerate PHP parsers.
[...]
configure: WARNING: OCI8 extension: ORACLE_HOME is not set, looking for default Oracle Instant Client instead
[...]
checking whether to build static libraries... no
configure: creating libtool
appending configuration tag "CXX" to libtool
appending configuration tag "F77" to libtool
configure: creating ./config.status
config.status: creating config.h
running: make
/bin/sh /var/tmp/pear-build-root/oci8-1.3.5/libtool --mode=compile gcc  -I. -I/tmp/pear/temp/oci8 -DPHP_ATOM_INC -I/var/tmp/pear-build-root/oci8-1.3.5/include -I/var/tmp/pear-build-root/oci8-1.3.5/main -I/tmp/pear/temp/oci8 -I/usr/include/php5 -I/usr/include/php5/main -I/usr/include/php5/TSRM -I/usr/include/php5/Zend -I/usr/include/php5/ext -I/usr/include/php5/ext/date/lib -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/oracle/11.1/client  -DHAVE_CONFIG_H  -g -O2   -c /tmp/pear/temp/oci8/oci8.c -o oci8.lo
mkdir .libs
gcc -I. -I/tmp/pear/temp/oci8 -DPHP_ATOM_INC [...]
[...]
gcc -shared  .libs/oci8.o .libs/oci8_lob.o .libs/oci8_statement.o .libs/oci8_collection.o .libs/oci8_interface.o  -L/usr/lib/oracle/11.1/client/lib -lclntsh  -Wl,-rpath -Wl,/usr/lib/oracle/11.1/client/lib -Wl,-soname -Wl,oci8.so -o .libs/oci8.so
creating oci8.la
(cd .libs &#038;&#038; rm -f oci8.la &#038;&#038; ln -s ../oci8.la oci8.la)
/bin/sh /var/tmp/pear-build-root/oci8-1.3.5/libtool --mode=install cp ./oci8.la /var/tmp/pear-build-root/oci8-1.3.5/modules
cp ./.libs/oci8.so /var/tmp/pear-build-root/oci8-1.3.5/modules/oci8.so
cp ./.libs/oci8.lai /var/tmp/pear-build-root/oci8-1.3.5/modules/oci8.la
PATH="$PATH:/sbin" ldconfig -n /var/tmp/pear-build-root/oci8-1.3.5/modules
----------------------------------------------------------------------
Libraries have been installed in:
   /var/tmp/pear-build-root/oci8-1.3.5/modules

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-Wl,--rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------

Build complete.
Don't forget to run 'make test'.

running: make INSTALL_ROOT="/var/tmp/pear-build-root/install-oci8-1.3.5" install
Installing shared extensions:     /var/tmp/pear-build-root/install-oci8-1.3.5/usr/lib/php5/20060613+lfs/
running: find "/var/tmp/pear-build-root/install-oci8-1.3.5" -ls
 65412    4 drwxr-xr-x   3 root     root         4096 May  7 10:08 /var/tmp/pear-build-root/install-oci8-1.3.5
 65441    4 drwxr-xr-x   3 root     root         4096 May  7 10:08 /var/tmp/pear-build-root/install-oci8-1.3.5/usr
 65442    4 drwxr-xr-x   3 root     root         4096 May  7 10:08 /var/tmp/pear-build-root/install-oci8-1.3.5/usr/lib
 65443    4 drwxr-xr-x   3 root     root         4096 May  7 10:08 /var/tmp/pear-build-root/install-oci8-1.3.5/usr/lib/php5
 65444    4 drwxr-xr-x   2 root     root         4096 May  7 10:08 /var/tmp/pear-build-root/install-oci8-1.3.5/usr/lib/php5/20060613+lfs
 65440  408 -rwxr-xr-x   1 root     root       411611 May  7 10:08 /var/tmp/pear-build-root/install-oci8-1.3.5/usr/lib/php5/20060613+lfs/oci8.so

Build process completed successfully
Installing '/usr/lib/php5/20060613+lfs/oci8.so'
install ok: channel://pecl.php.net/oci8-1.3.5
configuration option "php_ini" is not set to php.ini location
You should add "extension=oci8.so" to php.ini</pre>
<p>On peut donc ajouter l&#8217;extension oci8 à PHP, via un fichier habituellement placé ici :</p>
<pre>serveur:/# cat /etc/php5/conf.d/oracle.ini
extension=oci8.so</pre>
<p>Normalement, votre script phpinfo() devrait vous indiquer votre extension oci8. Cool.</p>
<h2>Partie PHP depuis apache</h2>
<p>J&#8217;ai un peu tourné en rond pour cette partie. La difficulté est de faire bouffer le fichier tnsnames.ora à Apache pour les scripts PHP. Car tout le boulot a été fait aux étapes d&#8217;avant.<br />
J&#8217;ai testé des <code>SetEnv TNS_ADMIN</code> dans /etc/apache2/httpd.conf, mais rien, il s&#8217;en fout.<br />
Apparement, il faut que l&#8217;environnement où s&#8217;exécute Apache (en tant que www-data) contiennent TNS_ADMIN. Donc, il a fallu l&#8217;ajouter dans /etc/apache2/envvars, après la partie standard qu&#8217;il contenait :</p>
<pre>serveur:/# cat /etc/apache2/envvars
# envvars - default environment variables for apache2ctl

# Since there is no sane way to get the parsed apache2 config in scripts, some
# settings are defined via environment variables and then used in apache2ctl,
# /etc/init.d/apache2, /etc/logrotate.d/apache2, etc.
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
export APACHE_PID_FILE=/var/run/apache2.pid

<strong>export TNS_ADMIN=/etc/oracle</strong></pre>
<p>Un restart (reload ?) d&#8217;Apache et hop, un script PHP qui passait en ligne de commande, mais pas depuis Apache (erreur <a href="http://ora-12154.ora-code.com/">ORA-12154</a>), fonctionne maintenant</p>
<p>Ca roule.<br />
Vu que j&#8217;ai beaucoup tourné en rond, j&#8217;espère avoir bien enlevé les manips inutiles et pas oublié de manip indispensable</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2009/05/07/installer-le-client-oracle-sur-debianlenny-interco-avec-php/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Retour de galère d&#8217;installation de Mantis (Bug Tracking) sur Debian/Lenny</title>
		<link>http://michauko.org/blog/2009/05/06/retour-de-galere-dinstallation-de-mantis-bug-tracking-sur-debianlenny/</link>
		<comments>http://michauko.org/blog/2009/05/06/retour-de-galere-dinstallation-de-mantis-bug-tracking-sur-debianlenny/#comments</comments>
		<pubDate>Wed, 06 May 2009 08:15:24 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[autres outils]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[dev]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[active directory]]></category>
		<category><![CDATA[bts]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[mantis]]></category>
		<category><![CDATA[openldap]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=278</guid>
		<description><![CDATA[Mantis est un BTS (Bug Tracking System) comme Bugzilla, gForge, Trac etc&#8230; Je ne parlerai pas des intérêts de celui-là plutôt qu&#8217;un autre, simplement des spécificités liées au packaging Debian et d&#8217;une fonction essentielle manquante : import d&#8217;un existant de bugs depuis un tableau type CSV. J&#8217;aborde vite fait la partie LDAP pour recommander de [...]]]></description>
			<content:encoded><![CDATA[<p>Mantis est un BTS (Bug Tracking System) comme Bugzilla, gForge, Trac etc&#8230;<br />
Je ne parlerai pas des intérêts de celui-là plutôt qu&#8217;un autre, simplement des spécificités liées au packaging Debian et d&#8217;une fonction essentielle manquante : import d&#8217;un existant de bugs depuis un tableau type CSV.<br />
J&#8217;aborde vite fait la partie LDAP pour recommander de l&#8217;oublier &#8211; OpenLDAP et Active Directory aussi<span id="more-278"></span></p>
<h2>Contenu du coffret</h2>
<p>La release actuelle de Mantis est 1.1.7, une 1.2 est en préparation et Debian propose la 1.1.6 de stable à &laquo;&nbsp;SID&nbsp;&raquo;. Les langues sont packagées de base avec Debian.<br />
Quelques spécificités viennent du fait que, comme d&#8217;hab, des liens symboliques de certains fichiers de conf (des include PHP) sont en alias vers <code>/etc/mantis/</code> depuis l&#8217;arborescence du logiciel (<code>/usr/share/mantis/www/</code>).<br />
A noter que pour une fois, on n&#8217;a pas un fichier de conf standard dans /etc qu&#8217;on adapte, mais un fichier de conf standard dans /usr/share/mantis/www/ qui inclut un fichier &laquo;&nbsp;local&nbsp;&raquo; en alias vers /etc/mantis/. Il s&#8217;agit donc d&#8217;écraser des valeurs. Bon, admettons. Le but est de ne pas toucher les fichiers de l&#8217;arborescence du produit, pour prévoir l&#8217;upgrade plus facilement :</p>
<pre>#ls -l /usr/share/mantis/www/conf*
lrwx[...] /usr/share/mantis/www/config_db.php -> /etc/mantis/config_db.php
-rw-[...] /usr/share/mantis/www/config_defaults_inc.php
lrwx[...] /usr/share/mantis/www/config_inc.php -> /etc/mantis/config_inc.php
lrwx[...] /usr/share/mantis/www/config_local.php -> /etc/mantis/config_local.php
</pre>
<p>Ca veut surtout dire de lire d&#8217;un côté l&#8217;intégralité du fichier <code>/usr/share/mantis/www/config_defaults_inc.php</code> et de reprendre les paramètres qu&#8217;on veut écraser dans <code>/etc/mantis/config_local.php</code>. Exemple après conf minimaliste :</p>
<pre>$g_signup_use_captcha           = OFF;
$g_administrator_email          = 'admin@blabla.fr';
$g_webmaster_email              = $g_administrator_email;
# a voir avec les utilisateurs : $g_email_receive_own = ON ?
$g_limit_email_domain           = 'blabla.fr';
$g_smtp_host                    = 'mon.smtp.blabla.net';
# pas compris, a voir : $g_email_set_category
$g_default_language             = 'french';
$g_show_footer_menu             = ON;
# LDAP : completement moisi sur mantis, surtout pour un AD</pre>
<p>En gros, je n&#8217;y règle que la partie essentielle permettant d&#8217;envoyer des mails dans le workflow de vie du bug et je supprime les &laquo;&nbsp;CAPTCHA&nbsp;&raquo; car usage interne uniquement.</p>
<h2>Le LDAP</h2>
<p>Il y a quelques paramètres à positionner pour passer en authentification par le LDAP. Génial. Seul hic, de taille, les utilisateurs ne remontent pas &#8211; de ce que j&#8217;en ai lu &#8211; dans l&#8217;outil, ça implique une synchro à la main (login/mail/nom/prénom). Pourquoi ? pour pouvoir affecter les rôles (access levels) aux utilisateurs : rapporteurs, développeurs etc.<br />
Enfin, côté Active Directory, la page du manuel ne dit qu&#8217;un mot : &laquo;&nbsp;TODO&nbsp;&raquo; et le fichier de conf indique juste de mettre &laquo;&nbsp;samAccountName&nbsp;&raquo; au lieu de &laquo;&nbsp;uid&nbsp;&raquo;.<br />
Je me demande pourquoi j&#8217;ai pas eu confiance dans la qualité de l&#8217;intégration du LDAP&#8230;</p>
<h2>Import/export de bug &#8211; tableau CSV (XML en fait)</h2>
<p>Fonction essentielle si vous ne démarrez pas de rien. Dans mon cas, un fabullissimeux tableau excel de suivi de bug&#8230;<br />
De base il n&#8217;y a rien pour importer.<br />
Avec google, vous tomberez sur plusieurs trucs plus ou moins foireux.<br />
Je vous la fais courte, le résultat qui marche est le suivant :</p>
<h3>Installez le &laquo;&nbsp;plug-in manager&nbsp;&raquo;</h3>
<p>Disponible ici : <a href="http://deboutv.free.fr/mantis/plugin.php?plugin=PluginManager">en version 0.4.0 compatible Mantis 1.1.6</a><br />
Je résume la doc d&#8217;installation et explique 2/3 spécificités liées au packaging Debian &#8211; faites un backup complet d&#8217;abord (base, fichiers de conf) :</p>
<pre>chown www-data /usr/share/mantis/www/
cp -a core.php core.php.orig
chown www-data /usr/share/mantis/www/core.php # il y aura 5/6 lignes de code en plus à la fin
chown www-data /etc/mantis/custom_strings*
ln -sf /usr/share/mantis/www/plugins/ /etc/mantis/plugins # meme s'il n'existe pas pour l'instant
</pre>
<p>Si l&#8217;installation du plugin_manager se passe mal, DROPpez les 3 tables mantis_plugins_* afin que l&#8217;installation de l&#8217;outil ne détecte plus qu&#8217;il est déjà [mal] installé.<br />
Le checkup d&#8217;installation de l&#8217;outil peut raconter n&#8217;importe quoi, exemple si vous oubliez le droit www-data sur /etc/mantis/custom_string.php, l&#8217;installation se déroule &laquo;&nbsp;bien&nbsp;&raquo;, vous n&#8217;avez juste aucun libellé dans les menus&#8230;<br />
Après l&#8217;installation, il manquait encore un dernier <code>chown -R www-data /usr/share/mantis/www/plugins/</code><br />
Vous devriez avoir un nouveau menu disponible, nommé &laquo;&nbsp;plugin_manager&nbsp;&raquo;</p>
<h3>Installez le plug-in &laquo;&nbsp;import/export&nbsp;&raquo;</h3>
<p>Celui-ci disponible sur le même site n&#8217;est pas compatible (!) avec Mantis 1.1.6, allez chercher <a href="http://forum.morinie.fr/mantis/read.php?6,4003,4003#msg-4003">celui-là</a> (2ème message), en version 0.1.0a9, compatible. L&#8217;installation cette fois se passe toute seule par le &laquo;&nbsp;plugin manager&nbsp;&raquo;.<br />
Ensuite, pour balancer la purée, point de fichier CSV, mais du XML ; c&#8217;est pas plus mal. Un exemple de <a href="http://bugtracker.morinie.fr/mantis/dokuwiki/doku.php?id=mantis:13:importing_issue_s">syntaxe de ce fichier XML est donné là</a>.</p>
<h2>D&#8217;autres BTS ?</h2>
<p>Si quelqu&#8217;un a un retour d&#8217;expérience sur Bugzilla, gForge etc, n&#8217;hésitez pas.<br />
Mantis sait apparement être relié (dans quelle mesure ?) à un CVS. Pas de mention à SVN.</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2009/05/06/retour-de-galere-dinstallation-de-mantis-bug-tracking-sur-debianlenny/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Installer un serveur Jabber (OpenFire) sur Linux (Debian), connecté à un Active Directory (Windows, donc)</title>
		<link>http://michauko.org/blog/2009/04/29/installer-un-serveur-jabber-openfire-sur-linux-debian-connecte-a-un-active-directory-windows-donc/</link>
		<comments>http://michauko.org/blog/2009/04/29/installer-un-serveur-jabber-openfire-sur-linux-debian-connecte-a-un-active-directory-windows-donc/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 15:19:13 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[autres outils]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[active directory]]></category>
		<category><![CDATA[AD]]></category>
		<category><![CDATA[jabber]]></category>
		<category><![CDATA[openfire]]></category>
		<category><![CDATA[pidgin]]></category>
		<category><![CDATA[spark]]></category>
		<category><![CDATA[XMPP]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=258</guid>
		<description><![CDATA[(pour les lecteurs planet-libre, oui, openfire en java ça-pue-c-est-pas-libre &#8482; et active-directory-c-est-le-mal-incarné &#8482;, néanmoins openfire est à des années lumières d&#8217;ejabberd, et un paysage avec un AD pour le parc Windows et néanmoins certains serveurs d&#8217;infrastructure et applicatifs sous Linux, ça existe et si vous êtes pas content, banissez-moi, merci) Présentation du contexte Le but [...]]]></description>
			<content:encoded><![CDATA[<p><em>(pour les lecteurs planet-libre, oui, openfire en java ça-pue-c-est-pas-libre &#8482; et active-directory-c-est-le-mal-incarné &#8482;, néanmoins openfire est à des années lumières d&#8217;ejabberd, et un paysage avec un AD pour le parc Windows et néanmoins certains serveurs d&#8217;infrastructure et applicatifs sous Linux, ça existe et si vous êtes pas content, banissez-moi, merci)</em></p>
<h2>Présentation du contexte</h2>
<p><strong>Le but de cet article de montrer à des noob&#8217; de l&#8217;Active Directory (comme moi) comment connecter un outil sous Linux à un AD, sans trop connaître la structure d&#8217;un AD. Ca peut s&#8217;avérer pratique dans bien des cas d&#8217;outils très performants sous Linux mais pour lesquels on a besoin de &laquo;&nbsp;la base des utilisateurs Windows pour éviter la double déclaration des comptes et les mots de passes différents pour chaque appli&nbsp;&raquo;. Vous voyez le principe ?</strong><br />
L&#8217;autre but est de montrer un outil qui permet de s&#8217;y retrouver facilement dans un AD.</p>
<p>J&#8217;ai choisi OpenFire car mes dernières expériences avec ejabberd ne m&#8217;ont pas convaincues. OpenFire (anciennement WildFire) est super propre d&#8217;interface et est distribué par une entreprise, &laquo;&nbsp;<a href="http://www.igniterealtime.org/">Jive Software</a>&nbsp;&raquo;<br />
Connectable sans peine à des LDAP, dont AD (et OpenLDAP, Novell etc), c&#8217;est un bon cas d&#8217;école.<br />
Pour les psychos, ça reste une application publiée sous licence GPL tout de même.<span id="more-258"></span></p>
<p>Sur le <a href="http://www.igniterealtime.org/">site de l&#8217;éditeur</a>, ils proposent le serveur OpenFire packagé pour Redhat, Debian, Windows, Mac etc.<br />
Je passe sur l&#8217;installation, (sous Debian <code>dpkg -i openfire*deb</code>)<br />
Ensuite tout se passe par le web, à l&#8217;adresse http://votre.serveur:9090/</p>
<h2>La conf AD, LE outil merveilleux pour ne pas s&#8217;y perdre</h2>
<p>Quelques remarques :</p>
<ul>
<li>Les étapes de configuration sont relativement simples, je zoome uniquement sur la partie AD</li>
<li>J&#8217;ai opté pour une base de données embarquées, &laquo;&nbsp;volatile&nbsp;&raquo;</li>
<li>A noter d&#8217;ailleurs que pour sauvegarder la conf de votre serveur OpenFire, vous n&#8217;aurez besoin &#8211; si je ne dis pas d&#8217;ânerie &#8211; que de <code>/etc/openfire/</code> et de <code>/var/lib/openfire/embedded-db/openfire.script</code> qui est le script de création de base à la volée (au lancement du service). Attention, il contient des mots de passe sensibles en clair, comme l&#8217;admin AD&#8230;. de base, le package Debian est propre et prive les accès à openfire:openfire, chmod à base de 770/660</li>
</ul>
<p>Bon, une fois l&#8217;installation un peu déroulée, arrivent les premières étapes de configuration de l&#8217;AD. Et là, je ne saurais trop vous recommander l&#8217;excellent outil de <del datetime="2009-04-29T13:37:40+00:00">l&#8217;excellent sysinternals.com</del> Microsoft nommé &laquo;&nbsp;<a href="http://technet.microsoft.com/en-us/sysinternals/bb963907.aspx">Active Directory explorer</a>&laquo;&nbsp;, qui, pour chaque noeud que vous visitez dans l&#8217;AD, vous donne sa syntaxe complète et pour chaque élement, les noms des attributs, pas leur libellé. Du bonheur en barre. Exemple, je localise mes utilisateurs :<br />
<a href="http://michauko.org/blog/wp-content/uploads/2009/04/20090429_081259.png"><img src="http://michauko.org/blog/wp-content/uploads/2009/04/20090429_081259-300x221.png" alt="openfire1" title="openfire1" width="300" height="221" class="aligncenter size-medium wp-image-260" /></a></p>
<p>J&#8217;injecte ça dans la conf OpenFire :<br />
<a href="http://michauko.org/blog/wp-content/uploads/2009/04/20090429_081451.png"><img src="http://michauko.org/blog/wp-content/uploads/2009/04/20090429_081451-300x242.png" alt="openfire2" title="openfire2" width="300" height="242" class="aligncenter size-medium wp-image-261" /></a></p>
<p>Ensuite, sur l&#8217;écran suivant qui consiste à indiquer quel sous-ensemble des utilisateurs pourra s&#8217;authentifier, j&#8217;utilise encore l&#8217;&nbsp;&raquo;AD Explorer&nbsp;&raquo;, je repère quel champ caractérise mes utilisateurs réels des comptes systèmes et autres comptes qui ne sont pas des gens de la vraie vie :<br />
<a href="http://michauko.org/blog/wp-content/uploads/2009/04/20090429_081625.png"><img src="http://michauko.org/blog/wp-content/uploads/2009/04/20090429_081625-263x300.png" alt="openfire3" title="openfire3" width="263" height="300" class="aligncenter size-medium wp-image-262" /></a></p>
<p>L&#8217;idée était ensuite dans mon cas de restreindre l&#8217;accès au service à un certain groupe d&#8217;utilisateurs, à savoir les &laquo;&nbsp;Correspondants Informatiques&nbsp;&raquo;, j&#8217;ai modifié la valeur standard de filtre utilisateur pour refléter mes choix :<br />
<a href="http://michauko.org/blog/wp-content/uploads/2009/04/20090429_083841.png"><img src="http://michauko.org/blog/wp-content/uploads/2009/04/20090429_083841-220x300.png" alt="openfire4" title="openfire4" width="220" height="300" class="aligncenter size-medium wp-image-263" /></a><br />
Pour celà, vous repérerez que le champ &laquo;&nbsp;memberOf&nbsp;&raquo; indique tous les groupes d&#8217;appartenance des utilisateurs, bref, vous modifiez le filtre pour y ajouter un (memberOf=CN=blabla,blabla,DC=blabla,DC=com).<br />
Ainsi, seuls les utilisateurs de ce groupe seront pris en compte lors de l&#8217;authentification par AD.<br />
Enfin, le bas du tableau permet de &laquo;&nbsp;mapper&nbsp;&raquo; les champs de l&#8217;utilisateur aux infos personnelles visibles via Jabber. Faites votre marché, utilisez le bouton &laquo;&nbsp;test&nbsp;&raquo; en bas pour voir si ça récupère ce qu&#8217;il faut comme il faut.</p>
<p>Ensuite, dans mon cas, le tri des utilisateurs en groupe était le bon par défaut :<br />
<a href="http://michauko.org/blog/wp-content/uploads/2009/04/20090429_084916.png"><img src="http://michauko.org/blog/wp-content/uploads/2009/04/20090429_084916-300x202.png" alt="openfire5" title="openfire5" width="300" height="202" class="alignnone size-medium wp-image-264" /></a></p>
<p>Et, dernière étape, déclarer des comptes admin parmi les comptes AD existant. Mettez votre compte <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  car la modif à la main est moins simple (éditer le champ <code>admin.authorizedJIDs</code> dans les fichiers de conf de la base embarquée)</p>
<p>Voilà&#8230;<br />
Une fois connecté à la console d&#8217;admin, allez voir la liste d&#8217;utilisateurs, vous devriez trouver uniquement le sous-ensemble sélectionné, &laquo;&nbsp;Correspondants Informatiques&nbsp;&raquo; dans mon cas.</p>
<h2>Les clients</h2>
<p>Vous pourrez utiliser pidgin ou le client de l&#8217;éditeur d&#8217;OpenFire, Spark &#8211; ou même sa version web pour éviter de déployer la moindre application. Ou tout autre client XMPP.<br />
Ou faites votre choix là : <a href="http://en.wikipedia.org/wiki/List_of_XMPP_client_software">http://en.wikipedia.org/wiki/List_of_XMPP_client_software</a></p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2009/04/29/installer-un-serveur-jabber-openfire-sur-linux-debian-connecte-a-un-active-directory-windows-donc/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
	</channel>
</rss>

