<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[Communauté Eggdrop - Un peu plus loin]]></title>
		<link>https://forum.eggdrop.fr/</link>
		<description><![CDATA[Communauté Eggdrop - https://forum.eggdrop.fr]]></description>
		<pubDate>Thu, 09 Apr 2026 16:26:37 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[Petites regexp utiles]]></title>
			<link>https://forum.eggdrop.fr/showthread.php?tid=1805</link>
			<pubDate>Fri, 15 Nov 2024 11:01:28 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.eggdrop.fr/member.php?action=profile&uid=2">CrazyCat</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.eggdrop.fr/showthread.php?tid=1805</guid>
			<description><![CDATA[Hello,<br />
<br />
Je décide d'ouvrir ce sujet pour lister les regexp utiles et pratiques.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Validation IPv4</span><br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>^([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(&#92;.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){3}&#36;</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">Validation IPv6</span><br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>^(([0-9a-f]{0,4}:){1,7}[0-9a-f]{1,4})&#36;</code></div></div><br />
A terme, je ferai un condensé des différentes regexp dans le wiki.]]></description>
			<content:encoded><![CDATA[Hello,<br />
<br />
Je décide d'ouvrir ce sujet pour lister les regexp utiles et pratiques.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Validation IPv4</span><br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>^([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(&#92;.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){3}&#36;</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">Validation IPv6</span><br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>^(([0-9a-f]{0,4}:){1,7}[0-9a-f]{1,4})&#36;</code></div></div><br />
A terme, je ferai un condensé des différentes regexp dans le wiki.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Génération de certificats SSL]]></title>
			<link>https://forum.eggdrop.fr/showthread.php?tid=1760</link>
			<pubDate>Thu, 23 Nov 2023 12:44:36 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.eggdrop.fr/member.php?action=profile&uid=2">CrazyCat</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.eggdrop.fr/showthread.php?tid=1760</guid>
			<description><![CDATA[J'ai décidé d'utiliser des certificats SSL pour identifier mes eggdrops mais je me suis rendu compte que je ne pouvais pas utiliser le même certificat pour tous, car NickServ considère qu'un certificat n'appartient qu'à un seul utilisateur.<br />
Autrement dit, si vous utilisez <code class="inline-code">eggdrop.key</code> et <code class="inline-code">eggdrop.crt</code> pour tous, ils seront reconnus comme le premier utilisateur ayant ajouté ce certificat.<br />
<br />
J'ai donc décidé de créer un certificat par eggdrop. Et comme je suis fainéant, j'ai préféré automatiser ça.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Modification de eggdrop.conf</span><br />
Chaque eggdrop a sa propre configuration (<code class="inline-code">nom_d_eggdrop.conf</code>) qui appelle eggdrop.conf qui est une légère modification du eggdrop.conf original. J'ai modifié deux lignes:<br />
<div class="codeblock"><div class="title">tcl<button class="copy">copier</button></div><div class="body"><code><pre class="tcl" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">set</span> ssl-privatekey <span style="color: #483d8b;">&quot;&#36;{username}.key&quot;</span>
<span style="color: #ff7700;font-weight:bold;">set</span> ssl-certificate <span style="color: #483d8b;">&quot;&#36;{username}.crt&quot;</span></pre></code></div></div><br /><br />
<br />
<span style="font-weight: bold;" class="mycode_b">Script de génération</span><br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>#!/bin/bash<br />
HOMEDIR=/home/moi/<br />
EGGVER=1.9.5<br />
cd &#36;{HOMEDIR}eggdrop/<br />
for f in *.conf<br />
do<br />
&nbsp;&nbsp; uname=&#36;{f%.conf}<br />
&nbsp;&nbsp; if [[ "&#36;uname" != eggdrop* ]]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/usr/bin/openssl req -new -x509 -nodes -days 365 -keyout &#36;{HOMEDIR}eggdrop/&#36;{uname}.key -out &#36;{HOMEDIR}eggdrop/&#36;{uname}.crt -config &#36;{HOMEDIR}eggdrop-&#36;{EGGVER}/ssl.conf -subj "/O=Eggdrop.fr/OU=Eggdrop/CN=Self-generated Eggdrop Certificate"<br />
&nbsp;&nbsp; fi<br />
done</code></div></div>Ce script, à exécuter depuis le répertoire où sont installés les eggdrops, va tout simplement lister les .conf disponibles (en écartant les deux fichiers eggdrop.conf et eggdrop-basic.conf) et générer de manière non-interactive les doublets crt/key en utilisant le <code class="inline-code">nom_d_eggdrop</code> pour les nommer.<br />
<br />
Ceci implique que le <code class="inline-code">&#36;username</code> de l'eggdrop doit être identique au nom de son fichier de configuration (en respectant la casse).<br />
<br />
Comme les certificats ne sont valides qu'un an, il suffit de créer une entrée crontab pour le lancer tous les ans (ce qui explique tous les chemins complets dans le script).]]></description>
			<content:encoded><![CDATA[J'ai décidé d'utiliser des certificats SSL pour identifier mes eggdrops mais je me suis rendu compte que je ne pouvais pas utiliser le même certificat pour tous, car NickServ considère qu'un certificat n'appartient qu'à un seul utilisateur.<br />
Autrement dit, si vous utilisez <code class="inline-code">eggdrop.key</code> et <code class="inline-code">eggdrop.crt</code> pour tous, ils seront reconnus comme le premier utilisateur ayant ajouté ce certificat.<br />
<br />
J'ai donc décidé de créer un certificat par eggdrop. Et comme je suis fainéant, j'ai préféré automatiser ça.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Modification de eggdrop.conf</span><br />
Chaque eggdrop a sa propre configuration (<code class="inline-code">nom_d_eggdrop.conf</code>) qui appelle eggdrop.conf qui est une légère modification du eggdrop.conf original. J'ai modifié deux lignes:<br />
<div class="codeblock"><div class="title">tcl<button class="copy">copier</button></div><div class="body"><code><pre class="tcl" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">set</span> ssl-privatekey <span style="color: #483d8b;">&quot;&#36;{username}.key&quot;</span>
<span style="color: #ff7700;font-weight:bold;">set</span> ssl-certificate <span style="color: #483d8b;">&quot;&#36;{username}.crt&quot;</span></pre></code></div></div><br /><br />
<br />
<span style="font-weight: bold;" class="mycode_b">Script de génération</span><br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>#!/bin/bash<br />
HOMEDIR=/home/moi/<br />
EGGVER=1.9.5<br />
cd &#36;{HOMEDIR}eggdrop/<br />
for f in *.conf<br />
do<br />
&nbsp;&nbsp; uname=&#36;{f%.conf}<br />
&nbsp;&nbsp; if [[ "&#36;uname" != eggdrop* ]]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/usr/bin/openssl req -new -x509 -nodes -days 365 -keyout &#36;{HOMEDIR}eggdrop/&#36;{uname}.key -out &#36;{HOMEDIR}eggdrop/&#36;{uname}.crt -config &#36;{HOMEDIR}eggdrop-&#36;{EGGVER}/ssl.conf -subj "/O=Eggdrop.fr/OU=Eggdrop/CN=Self-generated Eggdrop Certificate"<br />
&nbsp;&nbsp; fi<br />
done</code></div></div>Ce script, à exécuter depuis le répertoire où sont installés les eggdrops, va tout simplement lister les .conf disponibles (en écartant les deux fichiers eggdrop.conf et eggdrop-basic.conf) et générer de manière non-interactive les doublets crt/key en utilisant le <code class="inline-code">nom_d_eggdrop</code> pour les nommer.<br />
<br />
Ceci implique que le <code class="inline-code">&#36;username</code> de l'eggdrop doit être identique au nom de son fichier de configuration (en respectant la casse).<br />
<br />
Comme les certificats ne sont valides qu'un an, il suffit de créer une entrée crontab pour le lancer tous les ans (ce qui explique tous les chemins complets dans le script).]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Base de donnée de question trivia]]></title>
			<link>https://forum.eggdrop.fr/showthread.php?tid=1715</link>
			<pubDate>Thu, 17 Jan 2019 10:46:33 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.eggdrop.fr/member.php?action=profile&uid=3812">NuX</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.eggdrop.fr/showthread.php?tid=1715</guid>
			<description><![CDATA[Bonjour all,<br />
<br />
quelqu'un aurait une grosse base de donnée de question sur le trivia quizz ?<br />
<br />
Ca fait un moment que j'ai la mienne et je voudrais la changer.<br />
<br />
Merci de vos futurs réponses.]]></description>
			<content:encoded><![CDATA[Bonjour all,<br />
<br />
quelqu'un aurait une grosse base de donnée de question sur le trivia quizz ?<br />
<br />
Ca fait un moment que j'ai la mienne et je voudrais la changer.<br />
<br />
Merci de vos futurs réponses.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Décodage des couleurs en PHP]]></title>
			<link>https://forum.eggdrop.fr/showthread.php?tid=1684</link>
			<pubDate>Fri, 31 Mar 2017 13:32:19 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.eggdrop.fr/member.php?action=profile&uid=2">CrazyCat</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.eggdrop.fr/showthread.php?tid=1684</guid>
			<description><![CDATA[En travaillant sur un système d'affichage des logs eggdrop sur un site web, j'ai retravaillé mon système de parsing des couleurs IRC.<br />
Il semble bien fonctionner avec les logs eggdrop et mIRC.<br />
<div class="codeblock phpcodeblock"><div class="title">Code PHP :</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">class&nbsp;</span><span style="color: #0000BB">irctext&nbsp;</span><span style="color: #007700">{<br />&nbsp;&nbsp;&nbsp;var&nbsp;</span><span style="color: #0000BB">&#36;colors&nbsp;</span><span style="color: #007700">=&nbsp;array(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'#FFFFFF'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #FF8000">//0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'#000000'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #FF8000">//1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'#000080'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #FF8000">//2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'#00AA00'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #FF8000">//3<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'#FF0000'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #FF8000">//4<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'#AA0000'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #FF8000">//5<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'#AA00AA'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #FF8000">//6<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'#FF8040'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #FF8000">//7<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'#FFFF00'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #FF8000">//8<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'#00FF00'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #FF8000">//9<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'#008080'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #FF8000">//10<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'#00FFFF'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #FF8000">//11<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'#0000FF'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #FF8000">//12<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'#FF00FF'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #FF8000">//13<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'#808080'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #FF8000">//14<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'#C0C0C0'</span><span style="color: #007700">,&nbsp;</span><span style="color: #FF8000">//15<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;var&nbsp;</span><span style="color: #0000BB">&#36;ifg&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">'#FFFFFF'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;var&nbsp;</span><span style="color: #0000BB">&#36;ibg&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">'#000000'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;function&nbsp;</span><span style="color: #0000BB">__construct</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;text</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #0000BB">&#36;text</span><span style="color: #007700">==</span><span style="color: #DD0000">''</span><span style="color: #007700">)&nbsp;return;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">text&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">htmlentities</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;text</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">parseunderline</span><span style="color: #007700">();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">parsebold</span><span style="color: #007700">();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">parsecolors</span><span style="color: #007700">();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">parseitalic</span><span style="color: #007700">();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">parsereverse</span><span style="color: #007700">();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">parselink</span><span style="color: #007700">();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">text</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;</span><span style="color: #0000BB">returncolorstyle&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;fg</span><span style="color: #007700">,</span><span style="color: #0000BB">&#36;bg</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;tmp&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">'color:&nbsp;'</span><span style="color: #007700">.</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">colors</span><span style="color: #007700">[</span><span style="color: #0000BB">intval</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;fg</span><span style="color: #007700">)];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #0000BB">&#36;bg&nbsp;</span><span style="color: #007700">!=&nbsp;</span><span style="color: #DD0000">""</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;tmp&nbsp;</span><span style="color: #007700">.=&nbsp;</span><span style="color: #DD0000">'&nbsp;;&nbsp;background:&nbsp;'</span><span style="color: #007700">.</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">colors</span><span style="color: #007700">[</span><span style="color: #0000BB">intval</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;bg</span><span style="color: #007700">)].</span><span style="color: #DD0000">';'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">&#36;tmp</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;</span><span style="color: #0000BB">parseunderline</span><span style="color: #007700">()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">text&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">preg_replace</span><span style="color: #007700">(</span><span style="color: #DD0000">"/(&#092;x1f)(.*?)(&#092;&#092;1|&#36;)/"</span><span style="color: #007700">,</span><span style="color: #DD0000">'&lt;u&gt;&#36;2&lt;/u&gt;'</span><span style="color: #007700">,</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">text</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;</span><span style="color: #0000BB">parsebold</span><span style="color: #007700">()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">text&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">preg_replace</span><span style="color: #007700">(</span><span style="color: #DD0000">"/(&#092;x02)(.*?)(&#092;&#092;1|&#36;)/"</span><span style="color: #007700">,</span><span style="color: #DD0000">'&lt;b&gt;&#36;2&lt;/b&gt;'</span><span style="color: #007700">,</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">text</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;</span><span style="color: #0000BB">parselink</span><span style="color: #007700">()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">text&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">preg_replace</span><span style="color: #007700">(</span><span style="color: #DD0000">"/(https?:&#092;/&#092;/[&#092;w.:&#092;-&#092;/#&#092;?=&#092;~]{2,})&#092;b/"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'&lt;a&nbsp;href="&#092;&#092;1"&gt;&#36;1&lt;/a&gt;'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">text</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">text&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">preg_replace</span><span style="color: #007700">(</span><span style="color: #DD0000">"/(irc:&#092;/&#092;/[&#092;w.:&#092;-&#092;/#&#092;?=&#092;~&#092;/]{2,})&#092;b/"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'&lt;a&nbsp;href="&#092;&#092;1"&gt;&#36;1&lt;/a&gt;'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">text</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;</span><span style="color: #0000BB">parsecolors</span><span style="color: #007700">()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;tmp&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">preg_split</span><span style="color: #007700">(</span><span style="color: #DD0000">'/&#092;x03/'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">text</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #0000BB">count</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tmp</span><span style="color: #007700">)==</span><span style="color: #0000BB">1</span><span style="color: #007700">)&nbsp;{&nbsp;return;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;line&nbsp;</span><span style="color: #007700">=&nbsp;array();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach(</span><span style="color: #0000BB">&#36;tmp&nbsp;</span><span style="color: #007700">as&nbsp;</span><span style="color: #0000BB">&#36;piece</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;line</span><span style="color: #007700">[]&nbsp;=&nbsp;</span><span style="color: #0000BB">preg_replace_callback</span><span style="color: #007700">(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">"/^(&#092;d{1,2})(,(&#092;d{1,2}))?(.*)&#36;/"</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'self::decolor'</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;piece<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">text&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">implode</span><span style="color: #007700">(</span><span style="color: #DD0000">''</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;line</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;</span><span style="color: #0000BB">parseitalic</span><span style="color: #007700">()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">text&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">preg_replace</span><span style="color: #007700">(</span><span style="color: #DD0000">"/(&#092;x1d)(.*?)(&#092;&#092;1|&#36;)/"</span><span style="color: #007700">,</span><span style="color: #DD0000">'&lt;i&gt;&#36;2&lt;/i&gt;'</span><span style="color: #007700">,</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">text</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;</span><span style="color: #0000BB">parsereverse</span><span style="color: #007700">()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">text&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">preg_replace</span><span style="color: #007700">(</span><span style="color: #DD0000">"/(&#092;x16)(.*?)(&#092;&#092;1|&#36;)/"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'&lt;span&nbsp;style="color:'</span><span style="color: #007700">.</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">ifg</span><span style="color: #007700">.</span><span style="color: #DD0000">';background:'</span><span style="color: #007700">.</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">ibg</span><span style="color: #007700">.</span><span style="color: #DD0000">'"&gt;&#36;2&lt;/span&gt;'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">text</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;</span><span style="color: #0000BB">decolor</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;matches</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #DD0000">"&lt;span&nbsp;style=&#092;""</span><span style="color: #007700">.</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">returncolorstyle</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;matches</span><span style="color: #007700">[</span><span style="color: #0000BB">1</span><span style="color: #007700">],</span><span style="color: #0000BB">&#36;matches</span><span style="color: #007700">[</span><span style="color: #0000BB">3</span><span style="color: #007700">]).</span><span style="color: #DD0000">"&#092;"&gt;"</span><span style="color: #007700">.</span><span style="color: #0000BB">&#36;matches</span><span style="color: #007700">[</span><span style="color: #0000BB">4</span><span style="color: #007700">].</span><span style="color: #DD0000">"&lt;/span&gt;"</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;}<br />}&nbsp;<br /></span></code></div></div></div><br />
Pour l'utiliser:<br />
<div class="codeblock phpcodeblock"><div class="title">Code PHP :</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">&lt;?php<br />&#36;fi&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">fopen</span><span style="color: #007700">(</span><span style="color: #DD0000">'./monfichier.log'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'r'</span><span style="color: #007700">);<br />while&nbsp;(</span><span style="color: #0000BB">&#36;line&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">fgets</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;fi</span><span style="color: #007700">))&nbsp;{<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;newline&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">irctext</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;line</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #0000BB">&#36;newline</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">text</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'&lt;br&nbsp;/&gt;'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;<br />}<br /></span><span style="color: #0000BB">fclose</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;fi</span><span style="color: #007700">);&nbsp;<br /></span></code></div></div></div><br />
N'hésitez pas à le tester avec les logs de différents clients et me faire vos retours. Je travaille sur un parseur de log plus complet dont cette classe n'est qu'un élément.]]></description>
			<content:encoded><![CDATA[En travaillant sur un système d'affichage des logs eggdrop sur un site web, j'ai retravaillé mon système de parsing des couleurs IRC.<br />
Il semble bien fonctionner avec les logs eggdrop et mIRC.<br />
<div class="codeblock phpcodeblock"><div class="title">Code PHP :</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">class&nbsp;</span><span style="color: #0000BB">irctext&nbsp;</span><span style="color: #007700">{<br />&nbsp;&nbsp;&nbsp;var&nbsp;</span><span style="color: #0000BB">&#36;colors&nbsp;</span><span style="color: #007700">=&nbsp;array(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'#FFFFFF'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #FF8000">//0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'#000000'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #FF8000">//1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'#000080'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #FF8000">//2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'#00AA00'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #FF8000">//3<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'#FF0000'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #FF8000">//4<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'#AA0000'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #FF8000">//5<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'#AA00AA'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #FF8000">//6<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'#FF8040'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #FF8000">//7<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'#FFFF00'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #FF8000">//8<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'#00FF00'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #FF8000">//9<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'#008080'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #FF8000">//10<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'#00FFFF'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #FF8000">//11<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'#0000FF'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #FF8000">//12<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'#FF00FF'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #FF8000">//13<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'#808080'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #FF8000">//14<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'#C0C0C0'</span><span style="color: #007700">,&nbsp;</span><span style="color: #FF8000">//15<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;var&nbsp;</span><span style="color: #0000BB">&#36;ifg&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">'#FFFFFF'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;var&nbsp;</span><span style="color: #0000BB">&#36;ibg&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">'#000000'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;function&nbsp;</span><span style="color: #0000BB">__construct</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;text</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #0000BB">&#36;text</span><span style="color: #007700">==</span><span style="color: #DD0000">''</span><span style="color: #007700">)&nbsp;return;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">text&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">htmlentities</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;text</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">parseunderline</span><span style="color: #007700">();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">parsebold</span><span style="color: #007700">();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">parsecolors</span><span style="color: #007700">();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">parseitalic</span><span style="color: #007700">();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">parsereverse</span><span style="color: #007700">();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">parselink</span><span style="color: #007700">();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">text</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;</span><span style="color: #0000BB">returncolorstyle&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;fg</span><span style="color: #007700">,</span><span style="color: #0000BB">&#36;bg</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;tmp&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">'color:&nbsp;'</span><span style="color: #007700">.</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">colors</span><span style="color: #007700">[</span><span style="color: #0000BB">intval</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;fg</span><span style="color: #007700">)];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #0000BB">&#36;bg&nbsp;</span><span style="color: #007700">!=&nbsp;</span><span style="color: #DD0000">""</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;tmp&nbsp;</span><span style="color: #007700">.=&nbsp;</span><span style="color: #DD0000">'&nbsp;;&nbsp;background:&nbsp;'</span><span style="color: #007700">.</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">colors</span><span style="color: #007700">[</span><span style="color: #0000BB">intval</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;bg</span><span style="color: #007700">)].</span><span style="color: #DD0000">';'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">&#36;tmp</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;</span><span style="color: #0000BB">parseunderline</span><span style="color: #007700">()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">text&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">preg_replace</span><span style="color: #007700">(</span><span style="color: #DD0000">"/(&#092;x1f)(.*?)(&#092;&#092;1|&#36;)/"</span><span style="color: #007700">,</span><span style="color: #DD0000">'&lt;u&gt;&#36;2&lt;/u&gt;'</span><span style="color: #007700">,</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">text</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;</span><span style="color: #0000BB">parsebold</span><span style="color: #007700">()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">text&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">preg_replace</span><span style="color: #007700">(</span><span style="color: #DD0000">"/(&#092;x02)(.*?)(&#092;&#092;1|&#36;)/"</span><span style="color: #007700">,</span><span style="color: #DD0000">'&lt;b&gt;&#36;2&lt;/b&gt;'</span><span style="color: #007700">,</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">text</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;</span><span style="color: #0000BB">parselink</span><span style="color: #007700">()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">text&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">preg_replace</span><span style="color: #007700">(</span><span style="color: #DD0000">"/(https?:&#092;/&#092;/[&#092;w.:&#092;-&#092;/#&#092;?=&#092;~]{2,})&#092;b/"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'&lt;a&nbsp;href="&#092;&#092;1"&gt;&#36;1&lt;/a&gt;'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">text</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">text&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">preg_replace</span><span style="color: #007700">(</span><span style="color: #DD0000">"/(irc:&#092;/&#092;/[&#092;w.:&#092;-&#092;/#&#092;?=&#092;~&#092;/]{2,})&#092;b/"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'&lt;a&nbsp;href="&#092;&#092;1"&gt;&#36;1&lt;/a&gt;'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">text</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;</span><span style="color: #0000BB">parsecolors</span><span style="color: #007700">()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;tmp&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">preg_split</span><span style="color: #007700">(</span><span style="color: #DD0000">'/&#092;x03/'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">text</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #0000BB">count</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tmp</span><span style="color: #007700">)==</span><span style="color: #0000BB">1</span><span style="color: #007700">)&nbsp;{&nbsp;return;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;line&nbsp;</span><span style="color: #007700">=&nbsp;array();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach(</span><span style="color: #0000BB">&#36;tmp&nbsp;</span><span style="color: #007700">as&nbsp;</span><span style="color: #0000BB">&#36;piece</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;line</span><span style="color: #007700">[]&nbsp;=&nbsp;</span><span style="color: #0000BB">preg_replace_callback</span><span style="color: #007700">(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">"/^(&#092;d{1,2})(,(&#092;d{1,2}))?(.*)&#36;/"</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'self::decolor'</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;piece<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">text&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">implode</span><span style="color: #007700">(</span><span style="color: #DD0000">''</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;line</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;</span><span style="color: #0000BB">parseitalic</span><span style="color: #007700">()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">text&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">preg_replace</span><span style="color: #007700">(</span><span style="color: #DD0000">"/(&#092;x1d)(.*?)(&#092;&#092;1|&#36;)/"</span><span style="color: #007700">,</span><span style="color: #DD0000">'&lt;i&gt;&#36;2&lt;/i&gt;'</span><span style="color: #007700">,</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">text</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;</span><span style="color: #0000BB">parsereverse</span><span style="color: #007700">()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">text&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">preg_replace</span><span style="color: #007700">(</span><span style="color: #DD0000">"/(&#092;x16)(.*?)(&#092;&#092;1|&#36;)/"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'&lt;span&nbsp;style="color:'</span><span style="color: #007700">.</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">ifg</span><span style="color: #007700">.</span><span style="color: #DD0000">';background:'</span><span style="color: #007700">.</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">ibg</span><span style="color: #007700">.</span><span style="color: #DD0000">'"&gt;&#36;2&lt;/span&gt;'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">text</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;</span><span style="color: #0000BB">decolor</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;matches</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #DD0000">"&lt;span&nbsp;style=&#092;""</span><span style="color: #007700">.</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">returncolorstyle</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;matches</span><span style="color: #007700">[</span><span style="color: #0000BB">1</span><span style="color: #007700">],</span><span style="color: #0000BB">&#36;matches</span><span style="color: #007700">[</span><span style="color: #0000BB">3</span><span style="color: #007700">]).</span><span style="color: #DD0000">"&#092;"&gt;"</span><span style="color: #007700">.</span><span style="color: #0000BB">&#36;matches</span><span style="color: #007700">[</span><span style="color: #0000BB">4</span><span style="color: #007700">].</span><span style="color: #DD0000">"&lt;/span&gt;"</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;}<br />}&nbsp;<br /></span></code></div></div></div><br />
Pour l'utiliser:<br />
<div class="codeblock phpcodeblock"><div class="title">Code PHP :</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">&lt;?php<br />&#36;fi&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">fopen</span><span style="color: #007700">(</span><span style="color: #DD0000">'./monfichier.log'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'r'</span><span style="color: #007700">);<br />while&nbsp;(</span><span style="color: #0000BB">&#36;line&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">fgets</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;fi</span><span style="color: #007700">))&nbsp;{<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;newline&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">irctext</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;line</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #0000BB">&#36;newline</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">text</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'&lt;br&nbsp;/&gt;'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;<br />}<br /></span><span style="color: #0000BB">fclose</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;fi</span><span style="color: #007700">);&nbsp;<br /></span></code></div></div></div><br />
N'hésitez pas à le tester avec les logs de différents clients et me faire vos retours. Je travaille sur un parseur de log plus complet dont cette classe n'est qu'un élément.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Pré-compilation des expressions régulières afin d'en accélérer l'exécution]]></title>
			<link>https://forum.eggdrop.fr/showthread.php?tid=1666</link>
			<pubDate>Sun, 26 Feb 2017 19:15:13 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.eggdrop.fr/member.php?action=profile&uid=324">MenzAgitat</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.eggdrop.fr/showthread.php?tid=1666</guid>
			<description><![CDATA[La documentation Tcl dit ceci :<br />
<blockquote class="mycode_quote"><cite>Citation :</cite>Tcl dynamically caches the compiled regular expressions. The Tcl core caches the last 30 REs it compiled but you can cause an number of RE's to be cached by assigning them to variables.<br />
If a regular expression is assigned to a variable and the variable is not changed, the Tcl core will save the compiled version of the RE and use the precompiled version of the variable during next evaluation.<br />
In the core the compiled version of the RE is stored in the Tcl_Obj, along with its string representation.</blockquote>
<br />
En faisant ceci, on stocke "foobar" dans la variable &#36;regexp sous forme de string :<br />
<div class="codeblock"><div class="title">tcl<button class="copy">copier</button></div><div class="body"><code><pre class="tcl" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">set</span> <span style="color: #008000;">regexp</span> <span style="color: black;">&#123;</span>foobar<span style="color: black;">&#125;</span></pre></code></div></div><br /><br />
comme on peut le voir ici :<br />
<blockquote class="mycode_quote"><cite>Citation :</cite>.tcl ::tcl::unsupported::representation &#36;regexp<br />
Tcl: value is a pure string with a refcount of 6, object pointer at 0x40514d0, string representation "foobar"</blockquote>
<br />
mais dès qu'on exécute ceci, Tcl redéfinit la variable comme un Tcl_Obj contenant en plus de la string, une version précompilée :<br />
<div class="codeblock"><div class="title">tcl<button class="copy">copier</button></div><div class="body"><code><pre class="tcl" style="font-family:monospace;"><span style="color: #008000;">regexp</span> <span style="color: #ff3333;">&#36;regexp</span> foobar</pre></code></div></div><br /><br />
comme on peut le voir ici :<br />
<blockquote class="mycode_quote"><cite>Citation :</cite>.tcl ::tcl::unsupported::representation &#36;regexp<br />
Tcl: value is a regexp with a refcount of 7, object pointer at 0x40514d0, internal representation 0x40a7610:⁣(nil), string representation "foobar"</blockquote>
<br />
(à noter que la commande ::tcl::unsupported::representation existe à partir de Tcl 8.6)<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Démonstration de l'intérêt de stocker les patterns de regexp dans des variables afin de les pré-compiler et en accélérer l'exécution</span> :</span></span><br />
<br />
Sans pré-compilation :<br />
<div class="codeblock"><div class="title">tcl<button class="copy">copier</button></div><div class="body"><code><pre class="tcl" style="font-family:monospace;">.tcl <span style="color: #008000;">time</span> <span style="color: black;">&#123;</span> <span style="color: #ff7700;font-weight:bold;">for</span> <span style="color: black;">&#123;</span><span style="color: #ff7700;font-weight:bold;">set</span> i <span style="color: #ff4500;">0</span><span style="color: black;">&#125;</span> <span style="color: black;">&#123;</span><span style="color: #ff3333;">&#36;i</span> <span style="color: #66cc66;">&lt;</span> <span style="color: #ff4500;">40</span><span style="color: black;">&#125;</span> <span style="color: black;">&#123;</span><span style="color: #008000;">incr</span> i<span style="color: black;">&#125;</span> <span style="color: black;">&#123;</span> <span style="color: #008000;">regexp</span> <span style="color: black;">&#91;</span><span style="color: #008000;">concat</span> <span style="color: black;">&#123;</span><span style="color: black;">&#40;</span>f<span style="color: black;">&#41;</span><span style="color: black;">&#40;</span>o<span style="color: black;">&#123;</span><span style="color: #ff4500;">2</span>,<span style="color: black;">&#125;</span><span style="color: black;">&#41;</span><span style="color: black;">&#40;</span>b|<span style="color: black;">&#91;</span>cdefg<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span><span style="color: black;">&#40;</span>ar|fg|df|tr|uk<span style="color: black;">&#41;</span><span style="color: black;">&#125;</span> <span style="color: #ff3333;">&#36;i</span><span style="color: black;">&#93;</span> foobar <span style="color: black;">&#125;</span> <span style="color: black;">&#125;</span> <span style="color: #ff4500;">100</span>
Tcl: <span style="color: #ff4500;">11416.04</span> microseconds per iteration</pre></code></div></div><br /><br />
Avec pré-compilation :<br />
<div class="codeblock"><div class="title">tcl<button class="copy">copier</button></div><div class="body"><code><pre class="tcl" style="font-family:monospace;">.tcl <span style="color: #ff7700;font-weight:bold;">for</span> <span style="color: black;">&#123;</span><span style="color: #ff7700;font-weight:bold;">set</span> i <span style="color: #ff4500;">0</span><span style="color: black;">&#125;</span> <span style="color: black;">&#123;</span><span style="color: #ff3333;">&#36;i</span> <span style="color: #66cc66;">&lt;</span> <span style="color: #ff4500;">40</span><span style="color: black;">&#125;</span> <span style="color: black;">&#123;</span><span style="color: #008000;">incr</span> i<span style="color: black;">&#125;</span> <span style="color: black;">&#123;</span> <span style="color: #ff7700;font-weight:bold;">set</span> <span style="color: #008000;">regexp</span><span style="color: black;">&#40;</span><span style="color: #ff3333;">&#36;i</span><span style="color: black;">&#41;</span> <span style="color: black;">&#91;</span><span style="color: #008000;">concat</span> <span style="color: black;">&#123;</span><span style="color: black;">&#40;</span>f<span style="color: black;">&#41;</span><span style="color: black;">&#40;</span>o<span style="color: black;">&#123;</span><span style="color: #ff4500;">2</span>,<span style="color: black;">&#125;</span><span style="color: black;">&#41;</span><span style="color: black;">&#40;</span>b|<span style="color: black;">&#91;</span>cdefg<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span><span style="color: black;">&#40;</span>ar|fg|df|tr|uk<span style="color: black;">&#41;</span><span style="color: black;">&#125;</span> <span style="color: #ff3333;">&#36;i</span><span style="color: black;">&#93;</span> <span style="color: black;">&#125;</span>
Tcl: 
.tcl <span style="color: #008000;">time</span> <span style="color: black;">&#123;</span> <span style="color: #ff7700;font-weight:bold;">for</span> <span style="color: black;">&#123;</span><span style="color: #ff7700;font-weight:bold;">set</span> i <span style="color: #ff4500;">0</span><span style="color: black;">&#125;</span> <span style="color: black;">&#123;</span><span style="color: #ff3333;">&#36;i</span> <span style="color: #66cc66;">&lt;</span> <span style="color: #ff4500;">40</span><span style="color: black;">&#125;</span> <span style="color: black;">&#123;</span><span style="color: #008000;">incr</span> i<span style="color: black;">&#125;</span> <span style="color: black;">&#123;</span> <span style="color: #008000;">regexp</span> <span style="color: #ff3333;">&#36;regexp</span><span style="color: black;">&#40;</span><span style="color: #ff3333;">&#36;i</span><span style="color: black;">&#41;</span> foobar <span style="color: black;">&#125;</span> <span style="color: black;">&#125;</span> <span style="color: #ff4500;">100</span>
Tcl: <span style="color: #ff4500;">312.0</span> microseconds per iteration</pre></code></div></div><br /><br />
Le gain de temps d'exécution en stockant les expressions régulières dans des variables est considérable.<br />
Une fois déclarées, ces variables ne devront plus être altérées sous peine de les reconvertir en strings simples. Il faudra donc éviter de les déclarer au début d'un procédure puisque chaque exécution de cette dernière écrasera les expressions pré-compilées.<br />
Déclarez-les avec <span style="font-style: italic;" class="mycode_i">variable</span> dans votre <span style="font-style: italic;" class="mycode_i">namespace eval</span> ou avec <span style="font-style: italic;" class="mycode_i">global</span> si vous n'utilisez pas de namespace (mais ça, c'est mal).]]></description>
			<content:encoded><![CDATA[La documentation Tcl dit ceci :<br />
<blockquote class="mycode_quote"><cite>Citation :</cite>Tcl dynamically caches the compiled regular expressions. The Tcl core caches the last 30 REs it compiled but you can cause an number of RE's to be cached by assigning them to variables.<br />
If a regular expression is assigned to a variable and the variable is not changed, the Tcl core will save the compiled version of the RE and use the precompiled version of the variable during next evaluation.<br />
In the core the compiled version of the RE is stored in the Tcl_Obj, along with its string representation.</blockquote>
<br />
En faisant ceci, on stocke "foobar" dans la variable &#36;regexp sous forme de string :<br />
<div class="codeblock"><div class="title">tcl<button class="copy">copier</button></div><div class="body"><code><pre class="tcl" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">set</span> <span style="color: #008000;">regexp</span> <span style="color: black;">&#123;</span>foobar<span style="color: black;">&#125;</span></pre></code></div></div><br /><br />
comme on peut le voir ici :<br />
<blockquote class="mycode_quote"><cite>Citation :</cite>.tcl ::tcl::unsupported::representation &#36;regexp<br />
Tcl: value is a pure string with a refcount of 6, object pointer at 0x40514d0, string representation "foobar"</blockquote>
<br />
mais dès qu'on exécute ceci, Tcl redéfinit la variable comme un Tcl_Obj contenant en plus de la string, une version précompilée :<br />
<div class="codeblock"><div class="title">tcl<button class="copy">copier</button></div><div class="body"><code><pre class="tcl" style="font-family:monospace;"><span style="color: #008000;">regexp</span> <span style="color: #ff3333;">&#36;regexp</span> foobar</pre></code></div></div><br /><br />
comme on peut le voir ici :<br />
<blockquote class="mycode_quote"><cite>Citation :</cite>.tcl ::tcl::unsupported::representation &#36;regexp<br />
Tcl: value is a regexp with a refcount of 7, object pointer at 0x40514d0, internal representation 0x40a7610:⁣(nil), string representation "foobar"</blockquote>
<br />
(à noter que la commande ::tcl::unsupported::representation existe à partir de Tcl 8.6)<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Démonstration de l'intérêt de stocker les patterns de regexp dans des variables afin de les pré-compiler et en accélérer l'exécution</span> :</span></span><br />
<br />
Sans pré-compilation :<br />
<div class="codeblock"><div class="title">tcl<button class="copy">copier</button></div><div class="body"><code><pre class="tcl" style="font-family:monospace;">.tcl <span style="color: #008000;">time</span> <span style="color: black;">&#123;</span> <span style="color: #ff7700;font-weight:bold;">for</span> <span style="color: black;">&#123;</span><span style="color: #ff7700;font-weight:bold;">set</span> i <span style="color: #ff4500;">0</span><span style="color: black;">&#125;</span> <span style="color: black;">&#123;</span><span style="color: #ff3333;">&#36;i</span> <span style="color: #66cc66;">&lt;</span> <span style="color: #ff4500;">40</span><span style="color: black;">&#125;</span> <span style="color: black;">&#123;</span><span style="color: #008000;">incr</span> i<span style="color: black;">&#125;</span> <span style="color: black;">&#123;</span> <span style="color: #008000;">regexp</span> <span style="color: black;">&#91;</span><span style="color: #008000;">concat</span> <span style="color: black;">&#123;</span><span style="color: black;">&#40;</span>f<span style="color: black;">&#41;</span><span style="color: black;">&#40;</span>o<span style="color: black;">&#123;</span><span style="color: #ff4500;">2</span>,<span style="color: black;">&#125;</span><span style="color: black;">&#41;</span><span style="color: black;">&#40;</span>b|<span style="color: black;">&#91;</span>cdefg<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span><span style="color: black;">&#40;</span>ar|fg|df|tr|uk<span style="color: black;">&#41;</span><span style="color: black;">&#125;</span> <span style="color: #ff3333;">&#36;i</span><span style="color: black;">&#93;</span> foobar <span style="color: black;">&#125;</span> <span style="color: black;">&#125;</span> <span style="color: #ff4500;">100</span>
Tcl: <span style="color: #ff4500;">11416.04</span> microseconds per iteration</pre></code></div></div><br /><br />
Avec pré-compilation :<br />
<div class="codeblock"><div class="title">tcl<button class="copy">copier</button></div><div class="body"><code><pre class="tcl" style="font-family:monospace;">.tcl <span style="color: #ff7700;font-weight:bold;">for</span> <span style="color: black;">&#123;</span><span style="color: #ff7700;font-weight:bold;">set</span> i <span style="color: #ff4500;">0</span><span style="color: black;">&#125;</span> <span style="color: black;">&#123;</span><span style="color: #ff3333;">&#36;i</span> <span style="color: #66cc66;">&lt;</span> <span style="color: #ff4500;">40</span><span style="color: black;">&#125;</span> <span style="color: black;">&#123;</span><span style="color: #008000;">incr</span> i<span style="color: black;">&#125;</span> <span style="color: black;">&#123;</span> <span style="color: #ff7700;font-weight:bold;">set</span> <span style="color: #008000;">regexp</span><span style="color: black;">&#40;</span><span style="color: #ff3333;">&#36;i</span><span style="color: black;">&#41;</span> <span style="color: black;">&#91;</span><span style="color: #008000;">concat</span> <span style="color: black;">&#123;</span><span style="color: black;">&#40;</span>f<span style="color: black;">&#41;</span><span style="color: black;">&#40;</span>o<span style="color: black;">&#123;</span><span style="color: #ff4500;">2</span>,<span style="color: black;">&#125;</span><span style="color: black;">&#41;</span><span style="color: black;">&#40;</span>b|<span style="color: black;">&#91;</span>cdefg<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span><span style="color: black;">&#40;</span>ar|fg|df|tr|uk<span style="color: black;">&#41;</span><span style="color: black;">&#125;</span> <span style="color: #ff3333;">&#36;i</span><span style="color: black;">&#93;</span> <span style="color: black;">&#125;</span>
Tcl: 
.tcl <span style="color: #008000;">time</span> <span style="color: black;">&#123;</span> <span style="color: #ff7700;font-weight:bold;">for</span> <span style="color: black;">&#123;</span><span style="color: #ff7700;font-weight:bold;">set</span> i <span style="color: #ff4500;">0</span><span style="color: black;">&#125;</span> <span style="color: black;">&#123;</span><span style="color: #ff3333;">&#36;i</span> <span style="color: #66cc66;">&lt;</span> <span style="color: #ff4500;">40</span><span style="color: black;">&#125;</span> <span style="color: black;">&#123;</span><span style="color: #008000;">incr</span> i<span style="color: black;">&#125;</span> <span style="color: black;">&#123;</span> <span style="color: #008000;">regexp</span> <span style="color: #ff3333;">&#36;regexp</span><span style="color: black;">&#40;</span><span style="color: #ff3333;">&#36;i</span><span style="color: black;">&#41;</span> foobar <span style="color: black;">&#125;</span> <span style="color: black;">&#125;</span> <span style="color: #ff4500;">100</span>
Tcl: <span style="color: #ff4500;">312.0</span> microseconds per iteration</pre></code></div></div><br /><br />
Le gain de temps d'exécution en stockant les expressions régulières dans des variables est considérable.<br />
Une fois déclarées, ces variables ne devront plus être altérées sous peine de les reconvertir en strings simples. Il faudra donc éviter de les déclarer au début d'un procédure puisque chaque exécution de cette dernière écrasera les expressions pré-compilées.<br />
Déclarez-les avec <span style="font-style: italic;" class="mycode_i">variable</span> dans votre <span style="font-style: italic;" class="mycode_i">namespace eval</span> ou avec <span style="font-style: italic;" class="mycode_i">global</span> si vous n'utilisez pas de namespace (mais ça, c'est mal).]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Soucis d'affichage de l'applet]]></title>
			<link>https://forum.eggdrop.fr/showthread.php?tid=1623</link>
			<pubDate>Fri, 20 May 2016 17:43:07 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.eggdrop.fr/member.php?action=profile&uid=3402">KeeViiNou</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.eggdrop.fr/showthread.php?tid=1623</guid>
			<description><![CDATA[Bonjour,<br />
<br />
<br />
Je viens de trouver un codage de mon applet et j'éprouve un soucis avec l'affiche de celui-ci. La fenetre consacrée à l'irc est vraiment petite et j'arrive pas à comprendre pourquoi. Pouvez-vous me venir en aide ?<br />
<br />
Voici le code :<br />
<blockquote class="mycode_quote"><cite>Citation :</cite>&lt;div id="lightIRC" style="height:100%; text-align:center;"&gt;<br />
  &lt;p&gt;&lt;a href="http://www.adobe.com/go/getflashplayer"&gt;&lt;img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /&gt;&lt;/a&gt;&lt;/p&gt;<br />
 &lt;/div&gt;<br />
 <br />
 &lt;script type="text/javascript"&gt;<br />
 alphabet = new Array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','1','2','3','4','5','6','7','8','9','0','(',')','~','!','@','#','&#36;','%','^','&amp;','*','-','=','+','_','.',',','`','{','}','[',']','|','\'','\\','\"','/','?',':',';','&gt;','&lt;','!',' ','\n');<br />
tempbin = new Array("0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","a");<br />
binary = new Array();<br />
<br />
var encalphabet;<br />
var decrypted;<br />
var encrypted;<br />
<br />
function makebinary(l,start,z) {<br />
 if (l &lt; 0)<br />
 return;<br />
<br />
 if (tempbin[l] == "1") {<br />
 tempbin[l] = "0";<br />
 x = makebinary(l-1,start,z);<br />
 }else if (tempbin[l] == "0"){<br />
 tempbin[l] = "1";<br />
 }else if (tempbin[l] == "a"){<br />
 tempbin[l] = "0";<br />
 }<br />
<br />
 if (l == start) {<br />
 binary[z] = "";<br />
 for (i = 0; i &lt;= l; i++)<br />
 binary[z] += tempbin[i];<br />
 }<br />
 return;<br />
}<br />
<br />
for (z = 0; z &lt; alphabet.length; z++) {<br />
 makebinary(tempbin.length-1,tempbin.length-1,z);<br />
}<br />
<br />
function decrypt(encrypted) {<br />
 encalphabet = "";<br />
 temp = "";<br />
 decrypted = "";<br />
<br />
 for (i = 0; i &lt; encrypted.length; i+=tempbin.length) {<br />
 for (z = 0; z &lt; alphabet.length; z++) {<br />
 if (encrypted.substr(i,tempbin.length) == binary[z]) {<br />
 temp += alphabet[z];<br />
 break;<br />
 }<br />
 }<br />
 }<br />
<br />
 for (i = 0; i &lt; alphabet.length; i++)<br />
 encalphabet += temp.substr(i,1);<br />
<br />
 while (i &lt; encrypted.length) {<br />
 for (z = 0; z &lt; encalphabet.length; z++) {<br />
 if (temp.substr(i,1) == encalphabet.substr(z,1)) {<br />
 decrypted += alphabet[z];<br />
 break;<br />
 }<br />
 }<br />
 i++;<br />
 }<br />
<br />
 return decrypted;<br />
}<br />
<br />
 var params = {};<br />
params.host = "irc.org";<br />
params.accessKey = "Q4B31-DBD9B-1C543";<br />
params.policyPort = "843";<br />
params.rtmp = "212.57.51";<br />
params.port                         = 6667;<br />
params.webcam           = "true";<br />
params.webcamPrivateOnly = "true";<br />
params.webcamPublicOnly = "false";<br />
params.nick                         = "test";<br />
params.password =  "";<br />
params.language           = "fr";<br />
params.realname                     = "34 H Charente-Maritime";<br />
params.showRegisterNicknameButton = "true";<br />
params.showIdentifySelection        = "true";<br />
params.ShowNickSelection            = "true";<br />
params.ShowPasswordSelection        = "true";<br />
params.identifyMessage = "NickServ:Ce pseudo est enregistr? et prot?g?.";<br />
params.identifyCommand = "/msg nickserv identify %pass%";<br />
params.registerNicknameServiceName = "NickServ";<br />
params.registerNicknameCommand = "/msg NickServ register %password% %mail% ";<br />
params.ident          = "Secretchateur";<br />
params.quitMessage                  = "A bientot sur <a href="http://www.s.fr" target="_blank" rel="noopener" class="mycode_url">www.s.fr</a> ~~ test ~~";<br />
params.showInfoMessages = "true";<br />
params.perform = "";<br />
params.soundOnNewChannelMessage = "false";<br />
params.styleURL         = "css/blue.css";<br />
params.showJoinPartMessages = "true";<br />
params.showRegisterNicknameButton   = "false";<br />
params.fontSize                     = "12";<br />
params.showNewQueriesInBackground   = "true";<br />
params.showTimestamps               = "true";<br />
<br />
params.showNickSelection            = "false";<br />
params.showListButton               = "false";<br />
params.showNickChangeButton         = "true";<br />
params.showJoinChannelButton        = "false";<br />
params.showPartChannelButton        = "true";<br />
params.showRegisterChannelButton = "false";<br />
params.registerChannelServiceName = "ChanServ";<br />
params.registerChannelCommand = "/msg ChanServ register %channel% %password% %description%";<br />
params.showServerPasswordSelection = "false";<br />
params.showOptionsButton            = "true";<br />
params.showChannelCentralButton     = "false";<br />
params.showChannelHeader            = "true";<br />
params.channelHeader                = "&lt;b&gt;Information :&lt;/b&gt; Bienvenue sur %channel% , actuellement&lt;b&gt; %users% &lt;/b&gt;utilisateurs(trices) connecte(e)s. &lt;b&gt;Sujet de %channel% &lt;/b&gt;: %topic% ";<br />
params.autoReconnect                = "true";<br />
params.showSecurityError            = "true";<br />
params.customSecurityErrorMessage   = "Le tchat est actuellement en maintenance...";<br />
params.useUserListIcons             = "true";<br />
params.userListCustomFormatting = "mode=o:userListOperator,mode=v:userListVoice";<br />
params.showSubmitButton             = "true";<br />
params.showEmoticonsButton          = "true";<br />
params.showRichTextControls         = "true";<br />
params.showMenuButton               = "true";<br />
params.showNavigation               = "true";<br />
params.emoticonPath                 = "images/";<br />
params.iconPath                     = "images/";<br />
params.loopClientCommands = "true";<br />
params.charset = "UTF-8";<br />
params.userListInformationPopupItems       = "nick,realname,ident";<br />
params.performContinousWhoRequests         = "true";<br />
params.showUserListInformationPopup        = "true";<br />
<br />
/* Position of the navigation container (where channel and query buttons appear). Valid values: left, right, top, bottom */<br />
params.navigationPosition           = "bottom";<br />
<br />
params.performContinousWhoRequests = "true";<br />
params.userListCustomFormatting = "realname=[0-9]\\W[H](.*?):userListMan,realname=[0-9]\\W[F](.*?):userListWoman,ident=guest:userListGuest";<br />
params.emoticonList = "(censure)-&gt;censureb.swf,:zik:-&gt;zika.swf,&lt;3-&gt;coeura.swf,(h)-&gt;coola.swf,:vomi:-&gt;maladea.swf,:cafe:-&gt;cafea.swf,:rose:-&gt;rosea.swf,:fuck:-&gt;fucka.swf,<img src="https://forum.eggdrop.fr/images/smilies/smiling.png" alt="Smile" title="Smile" class="smilie smilie_4" />-&gt;smilea.swf,<img src="https://forum.eggdrop.fr/images/smilies/wink.png" alt="Wink" title="Wink" class="smilie smilie_32" />-&gt;winka.swf,<img src="https://forum.eggdrop.fr/images/smilies/happy.png" alt="Very Happy" title="Very Happy" class="smilie smilie_1" />-&gt;sdenta.swf,<img src="https://forum.eggdrop.fr/images/smilies/tounge.png" alt="Razz" title="Razz" class="smilie smilie_24" />-&gt;languea.swf,<img src="https://forum.eggdrop.fr/images/smilies/sad.png" alt="Sad" title="Sad" class="smilie smilie_7" />-&gt;tristea.swf,:&#36;-&gt;rougea.swf,:O-&gt;etonea.swf,(H)-&gt;coola.swf,:|-&gt;decua.swf,O_o-&gt;blinka.swf,:'(-&gt;pleurea.swf,:S-&gt;unsurea.swf,:[-&gt;colerea.swf";<br />
<br />
 <br />
/* See more parameters at <a href="http://redmine.lightirc.com/projects/lightirc/wiki/Customization_parameters" target="_blank" rel="noopener" class="mycode_url">http://redmine.lightirc.com/projects/lig...parameters</a> */<br />
for(var key in params) {<br />
  params[key] = params[key].toString().replace(/%/g, "%85");<br />
}<br />
function sendCommand(command) {<br />
  swfobject.getObjectById('lightIRC').sendCommand(command);<br />
}<br />
<br />
function onContextMenuSelect(nick) {<br />
//  alert("onContextMenuSelect: "+nick);<br />
}<br />
<br />
<br />
<br />
<br />
function PopupWindow(source, strWindowToOpen) { <br />
var strWindowFeatures = "toolbar=no,resize=no,titlebar=no,"; <br />
strWindowFeatures = strWindowFeatures + "menubar=no,width=800,height=600,maximize=null"; <br />
window.open(strWindowToOpen, '', strWindowFeatures); <br />
}<br />
function quitter() {<br />
document.location.href="../../index.php" <br />
}<br />
<br />
/* This method gets called if you use the parameter loopClientCommands */<br />
function onClientCommand(command) {<br />
return command;<br />
}<br />
<br />
/* This method gets called if you use the parameter contextMenuExternalEvent */<br />
function onContextMenuSelect(type, nick) {<br />
  alert("onContextMenuSelect: "+nick+" for type "+type);<br />
}<br />
<br />
/* This method gets called if you use the parameter loopServerCommands */<br />
function onServerCommand(command) {<br />
var reg0=new RegExp("(skyrock)", "gi");<br />
var reg1=new RegExp("(witix)", "gi");<br />
var reg2=new RegExp("(chat-land)", "gi");<br />
var reg3=new RegExp("(mimacy)", "gi");<br />
var reg4=new RegExp("(europnet)", "gi");<br />
var reg5=new RegExp("(blueirc)", "gi");<br />
var reg6=new RegExp("(media-tchat)", "gi");<br />
var reg7=new RegExp("(dreamchat)", "gi");<br />
var reg8=new RegExp("(irc-service)", "gi");<br />
var reg9=new RegExp("(euro-tchat)", "gi");<br />
var reg10=new RegExp("(bite)", "gi");<br />
var reg11=new RegExp("(pute)", "gi");<br />
var reg12=new RegExp("(batard)", "gi");<br />
var reg13=new RegExp("(encule)", "gi");<br />
var reg14=new RegExp("(dial-sympa)", "gi");<br />
var reg15=new RegExp("(dialova)", "gi");<br />
var reg16=new RegExp("(pussy)", "gi");<br />
var reg17=new RegExp("(bitch)", "gi");<br />
var reg18=new RegExp("(biatch)", "gi");<br />
var reg19=new RegExp("(salop)", "gi");<br />
command = command.replace(reg0, "(censure) ");<br />
command = command.replace(reg1, "(censure) ");<br />
command = command.replace(reg2, "(censure) ");<br />
command = command.replace(reg3, "(censure) ");<br />
command = command.replace(reg4, "(censure) ");<br />
command = command.replace(reg5, "(censure) ");<br />
command = command.replace(reg6, "(censure) ");<br />
command = command.replace(reg7, "(censure) ");<br />
command = command.replace(reg8, "(censure) ");<br />
command = command.replace(reg9, "(censure) ");<br />
command = command.replace(reg10, "(censure) ");<br />
command = command.replace(reg11, "(censure) ");<br />
command = command.replace(reg12, "(censure) ");<br />
command = command.replace(reg13, "(censure) ");<br />
command = command.replace(reg14, "(censure) ");<br />
command = command.replace(reg15, "(censure) ");<br />
command = command.replace(reg16, "(censure) ");<br />
command = command.replace(reg17, "(censure) ");<br />
command = command.replace(reg18, "(censure) ");<br />
command = command.replace(reg19, "(censure) ");<br />
return command;<br />
}<br />
<br />
<br />
function sendMessageToActiveWindow(message) {<br />
  swfobject.getObjectById('lightIRC').sendMessageToActiveWindow(message);<br />
}<br />
<br />
function open_infos(page) {<br />
width = 400;<br />
height = 850;<br />
if(window.innerWidth) {<br />
var left = (window.innerWidth-width)/2;<br />
var top = (window.innerHeight-height)/2;<br />
} else {<br />
var left = (document.body.clientWidth-width)/2;<br />
var top = (document.body.clientHeight-height)/2;<br />
}<br />
window.open(page,'nom_de_ma_popup','menubar=no, scrollbars=no, top='+top+', left='+left+', width='+width+', height='+height+'');<br />
}<br />
<br />
function open_ext(page) {<br />
width = 600;<br />
height = 800;<br />
if(window.innerWidth) {<br />
var left = (window.innerWidth-width)/2;<br />
var top = (window.innerHeight-height)/2;<br />
} else {<br />
var left = (document.body.clientWidth-width)/2;<br />
var top = (document.body.clientHeight-height)/2;<br />
}<br />
window.open(page,'nom_de_ma_popup','menubar=no, scrollbars=yes, top='+top+', left='+left+', width='+width+', height='+height+'');<br />
}<br />
<br />
function faq() {<br />
open_ext('faq.php');<br />
swfobject.getObjectById('lightIRC').sendCommand('/join #!Olympe!');<br />
swfobject.getObjectById('lightIRC').sendCommand('/join #!CSAdmins!');<br />
}<br />
<br />
window.onbeforeunload = function() {<br />
  swfobject.getObjectById('lightIRC').sendQuit();<br />
}<br />
<br />
function open_profils(nick) {<br />
width = 800;<br />
height = 700;<br />
if(window.innerWidth) {<br />
var left = (window.innerWidth-width)/2;<br />
var top = (window.innerHeight-height)/2;<br />
} else {<br />
var left = (document.body.clientWidth-width)/2;<br />
var top = (document.body.clientHeight-height)/2;<br />
}<br />
profil = '../../index.php?menu=trombi&amp;ssmenu=show&amp;pseudo=';<br />
caract = '#show';<br />
profil = profil+nick+caract;<br />
window.open(profil,'nom_de_ma_popup','menubar=no, scrollbars=no, top='+top+', left='+left+', width='+width+', height='+height+'');<br />
}<br />
<br />
window.onbeforeunload = function() {<br />
  swfobject.getObjectById('lightIRC').sendQuit();<br />
}<br />
<br />
/* This loop escapes % signs in parameters. You should not change it */<br />
for(var key in params) {<br />
  params[key] = params[key].toString().replace(/%/g, "%95");<br />
}<br />
<br />
swfobject.embedSWF("lightIRC.swf", "lightIRC", "100%", "100%", "10.0.0", "expressInstall.swf", params, {wmode:"transparent"});<br />
 &lt;/script&gt;</blockquote>
]]></description>
			<content:encoded><![CDATA[Bonjour,<br />
<br />
<br />
Je viens de trouver un codage de mon applet et j'éprouve un soucis avec l'affiche de celui-ci. La fenetre consacrée à l'irc est vraiment petite et j'arrive pas à comprendre pourquoi. Pouvez-vous me venir en aide ?<br />
<br />
Voici le code :<br />
<blockquote class="mycode_quote"><cite>Citation :</cite>&lt;div id="lightIRC" style="height:100%; text-align:center;"&gt;<br />
  &lt;p&gt;&lt;a href="http://www.adobe.com/go/getflashplayer"&gt;&lt;img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /&gt;&lt;/a&gt;&lt;/p&gt;<br />
 &lt;/div&gt;<br />
 <br />
 &lt;script type="text/javascript"&gt;<br />
 alphabet = new Array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','1','2','3','4','5','6','7','8','9','0','(',')','~','!','@','#','&#36;','%','^','&amp;','*','-','=','+','_','.',',','`','{','}','[',']','|','\'','\\','\"','/','?',':',';','&gt;','&lt;','!',' ','\n');<br />
tempbin = new Array("0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","a");<br />
binary = new Array();<br />
<br />
var encalphabet;<br />
var decrypted;<br />
var encrypted;<br />
<br />
function makebinary(l,start,z) {<br />
 if (l &lt; 0)<br />
 return;<br />
<br />
 if (tempbin[l] == "1") {<br />
 tempbin[l] = "0";<br />
 x = makebinary(l-1,start,z);<br />
 }else if (tempbin[l] == "0"){<br />
 tempbin[l] = "1";<br />
 }else if (tempbin[l] == "a"){<br />
 tempbin[l] = "0";<br />
 }<br />
<br />
 if (l == start) {<br />
 binary[z] = "";<br />
 for (i = 0; i &lt;= l; i++)<br />
 binary[z] += tempbin[i];<br />
 }<br />
 return;<br />
}<br />
<br />
for (z = 0; z &lt; alphabet.length; z++) {<br />
 makebinary(tempbin.length-1,tempbin.length-1,z);<br />
}<br />
<br />
function decrypt(encrypted) {<br />
 encalphabet = "";<br />
 temp = "";<br />
 decrypted = "";<br />
<br />
 for (i = 0; i &lt; encrypted.length; i+=tempbin.length) {<br />
 for (z = 0; z &lt; alphabet.length; z++) {<br />
 if (encrypted.substr(i,tempbin.length) == binary[z]) {<br />
 temp += alphabet[z];<br />
 break;<br />
 }<br />
 }<br />
 }<br />
<br />
 for (i = 0; i &lt; alphabet.length; i++)<br />
 encalphabet += temp.substr(i,1);<br />
<br />
 while (i &lt; encrypted.length) {<br />
 for (z = 0; z &lt; encalphabet.length; z++) {<br />
 if (temp.substr(i,1) == encalphabet.substr(z,1)) {<br />
 decrypted += alphabet[z];<br />
 break;<br />
 }<br />
 }<br />
 i++;<br />
 }<br />
<br />
 return decrypted;<br />
}<br />
<br />
 var params = {};<br />
params.host = "irc.org";<br />
params.accessKey = "Q4B31-DBD9B-1C543";<br />
params.policyPort = "843";<br />
params.rtmp = "212.57.51";<br />
params.port                         = 6667;<br />
params.webcam           = "true";<br />
params.webcamPrivateOnly = "true";<br />
params.webcamPublicOnly = "false";<br />
params.nick                         = "test";<br />
params.password =  "";<br />
params.language           = "fr";<br />
params.realname                     = "34 H Charente-Maritime";<br />
params.showRegisterNicknameButton = "true";<br />
params.showIdentifySelection        = "true";<br />
params.ShowNickSelection            = "true";<br />
params.ShowPasswordSelection        = "true";<br />
params.identifyMessage = "NickServ:Ce pseudo est enregistr? et prot?g?.";<br />
params.identifyCommand = "/msg nickserv identify %pass%";<br />
params.registerNicknameServiceName = "NickServ";<br />
params.registerNicknameCommand = "/msg NickServ register %password% %mail% ";<br />
params.ident          = "Secretchateur";<br />
params.quitMessage                  = "A bientot sur <a href="http://www.s.fr" target="_blank" rel="noopener" class="mycode_url">www.s.fr</a> ~~ test ~~";<br />
params.showInfoMessages = "true";<br />
params.perform = "";<br />
params.soundOnNewChannelMessage = "false";<br />
params.styleURL         = "css/blue.css";<br />
params.showJoinPartMessages = "true";<br />
params.showRegisterNicknameButton   = "false";<br />
params.fontSize                     = "12";<br />
params.showNewQueriesInBackground   = "true";<br />
params.showTimestamps               = "true";<br />
<br />
params.showNickSelection            = "false";<br />
params.showListButton               = "false";<br />
params.showNickChangeButton         = "true";<br />
params.showJoinChannelButton        = "false";<br />
params.showPartChannelButton        = "true";<br />
params.showRegisterChannelButton = "false";<br />
params.registerChannelServiceName = "ChanServ";<br />
params.registerChannelCommand = "/msg ChanServ register %channel% %password% %description%";<br />
params.showServerPasswordSelection = "false";<br />
params.showOptionsButton            = "true";<br />
params.showChannelCentralButton     = "false";<br />
params.showChannelHeader            = "true";<br />
params.channelHeader                = "&lt;b&gt;Information :&lt;/b&gt; Bienvenue sur %channel% , actuellement&lt;b&gt; %users% &lt;/b&gt;utilisateurs(trices) connecte(e)s. &lt;b&gt;Sujet de %channel% &lt;/b&gt;: %topic% ";<br />
params.autoReconnect                = "true";<br />
params.showSecurityError            = "true";<br />
params.customSecurityErrorMessage   = "Le tchat est actuellement en maintenance...";<br />
params.useUserListIcons             = "true";<br />
params.userListCustomFormatting = "mode=o:userListOperator,mode=v:userListVoice";<br />
params.showSubmitButton             = "true";<br />
params.showEmoticonsButton          = "true";<br />
params.showRichTextControls         = "true";<br />
params.showMenuButton               = "true";<br />
params.showNavigation               = "true";<br />
params.emoticonPath                 = "images/";<br />
params.iconPath                     = "images/";<br />
params.loopClientCommands = "true";<br />
params.charset = "UTF-8";<br />
params.userListInformationPopupItems       = "nick,realname,ident";<br />
params.performContinousWhoRequests         = "true";<br />
params.showUserListInformationPopup        = "true";<br />
<br />
/* Position of the navigation container (where channel and query buttons appear). Valid values: left, right, top, bottom */<br />
params.navigationPosition           = "bottom";<br />
<br />
params.performContinousWhoRequests = "true";<br />
params.userListCustomFormatting = "realname=[0-9]\\W[H](.*?):userListMan,realname=[0-9]\\W[F](.*?):userListWoman,ident=guest:userListGuest";<br />
params.emoticonList = "(censure)-&gt;censureb.swf,:zik:-&gt;zika.swf,&lt;3-&gt;coeura.swf,(h)-&gt;coola.swf,:vomi:-&gt;maladea.swf,:cafe:-&gt;cafea.swf,:rose:-&gt;rosea.swf,:fuck:-&gt;fucka.swf,<img src="https://forum.eggdrop.fr/images/smilies/smiling.png" alt="Smile" title="Smile" class="smilie smilie_4" />-&gt;smilea.swf,<img src="https://forum.eggdrop.fr/images/smilies/wink.png" alt="Wink" title="Wink" class="smilie smilie_32" />-&gt;winka.swf,<img src="https://forum.eggdrop.fr/images/smilies/happy.png" alt="Very Happy" title="Very Happy" class="smilie smilie_1" />-&gt;sdenta.swf,<img src="https://forum.eggdrop.fr/images/smilies/tounge.png" alt="Razz" title="Razz" class="smilie smilie_24" />-&gt;languea.swf,<img src="https://forum.eggdrop.fr/images/smilies/sad.png" alt="Sad" title="Sad" class="smilie smilie_7" />-&gt;tristea.swf,:&#36;-&gt;rougea.swf,:O-&gt;etonea.swf,(H)-&gt;coola.swf,:|-&gt;decua.swf,O_o-&gt;blinka.swf,:'(-&gt;pleurea.swf,:S-&gt;unsurea.swf,:[-&gt;colerea.swf";<br />
<br />
 <br />
/* See more parameters at <a href="http://redmine.lightirc.com/projects/lightirc/wiki/Customization_parameters" target="_blank" rel="noopener" class="mycode_url">http://redmine.lightirc.com/projects/lig...parameters</a> */<br />
for(var key in params) {<br />
  params[key] = params[key].toString().replace(/%/g, "%85");<br />
}<br />
function sendCommand(command) {<br />
  swfobject.getObjectById('lightIRC').sendCommand(command);<br />
}<br />
<br />
function onContextMenuSelect(nick) {<br />
//  alert("onContextMenuSelect: "+nick);<br />
}<br />
<br />
<br />
<br />
<br />
function PopupWindow(source, strWindowToOpen) { <br />
var strWindowFeatures = "toolbar=no,resize=no,titlebar=no,"; <br />
strWindowFeatures = strWindowFeatures + "menubar=no,width=800,height=600,maximize=null"; <br />
window.open(strWindowToOpen, '', strWindowFeatures); <br />
}<br />
function quitter() {<br />
document.location.href="../../index.php" <br />
}<br />
<br />
/* This method gets called if you use the parameter loopClientCommands */<br />
function onClientCommand(command) {<br />
return command;<br />
}<br />
<br />
/* This method gets called if you use the parameter contextMenuExternalEvent */<br />
function onContextMenuSelect(type, nick) {<br />
  alert("onContextMenuSelect: "+nick+" for type "+type);<br />
}<br />
<br />
/* This method gets called if you use the parameter loopServerCommands */<br />
function onServerCommand(command) {<br />
var reg0=new RegExp("(skyrock)", "gi");<br />
var reg1=new RegExp("(witix)", "gi");<br />
var reg2=new RegExp("(chat-land)", "gi");<br />
var reg3=new RegExp("(mimacy)", "gi");<br />
var reg4=new RegExp("(europnet)", "gi");<br />
var reg5=new RegExp("(blueirc)", "gi");<br />
var reg6=new RegExp("(media-tchat)", "gi");<br />
var reg7=new RegExp("(dreamchat)", "gi");<br />
var reg8=new RegExp("(irc-service)", "gi");<br />
var reg9=new RegExp("(euro-tchat)", "gi");<br />
var reg10=new RegExp("(bite)", "gi");<br />
var reg11=new RegExp("(pute)", "gi");<br />
var reg12=new RegExp("(batard)", "gi");<br />
var reg13=new RegExp("(encule)", "gi");<br />
var reg14=new RegExp("(dial-sympa)", "gi");<br />
var reg15=new RegExp("(dialova)", "gi");<br />
var reg16=new RegExp("(pussy)", "gi");<br />
var reg17=new RegExp("(bitch)", "gi");<br />
var reg18=new RegExp("(biatch)", "gi");<br />
var reg19=new RegExp("(salop)", "gi");<br />
command = command.replace(reg0, "(censure) ");<br />
command = command.replace(reg1, "(censure) ");<br />
command = command.replace(reg2, "(censure) ");<br />
command = command.replace(reg3, "(censure) ");<br />
command = command.replace(reg4, "(censure) ");<br />
command = command.replace(reg5, "(censure) ");<br />
command = command.replace(reg6, "(censure) ");<br />
command = command.replace(reg7, "(censure) ");<br />
command = command.replace(reg8, "(censure) ");<br />
command = command.replace(reg9, "(censure) ");<br />
command = command.replace(reg10, "(censure) ");<br />
command = command.replace(reg11, "(censure) ");<br />
command = command.replace(reg12, "(censure) ");<br />
command = command.replace(reg13, "(censure) ");<br />
command = command.replace(reg14, "(censure) ");<br />
command = command.replace(reg15, "(censure) ");<br />
command = command.replace(reg16, "(censure) ");<br />
command = command.replace(reg17, "(censure) ");<br />
command = command.replace(reg18, "(censure) ");<br />
command = command.replace(reg19, "(censure) ");<br />
return command;<br />
}<br />
<br />
<br />
function sendMessageToActiveWindow(message) {<br />
  swfobject.getObjectById('lightIRC').sendMessageToActiveWindow(message);<br />
}<br />
<br />
function open_infos(page) {<br />
width = 400;<br />
height = 850;<br />
if(window.innerWidth) {<br />
var left = (window.innerWidth-width)/2;<br />
var top = (window.innerHeight-height)/2;<br />
} else {<br />
var left = (document.body.clientWidth-width)/2;<br />
var top = (document.body.clientHeight-height)/2;<br />
}<br />
window.open(page,'nom_de_ma_popup','menubar=no, scrollbars=no, top='+top+', left='+left+', width='+width+', height='+height+'');<br />
}<br />
<br />
function open_ext(page) {<br />
width = 600;<br />
height = 800;<br />
if(window.innerWidth) {<br />
var left = (window.innerWidth-width)/2;<br />
var top = (window.innerHeight-height)/2;<br />
} else {<br />
var left = (document.body.clientWidth-width)/2;<br />
var top = (document.body.clientHeight-height)/2;<br />
}<br />
window.open(page,'nom_de_ma_popup','menubar=no, scrollbars=yes, top='+top+', left='+left+', width='+width+', height='+height+'');<br />
}<br />
<br />
function faq() {<br />
open_ext('faq.php');<br />
swfobject.getObjectById('lightIRC').sendCommand('/join #!Olympe!');<br />
swfobject.getObjectById('lightIRC').sendCommand('/join #!CSAdmins!');<br />
}<br />
<br />
window.onbeforeunload = function() {<br />
  swfobject.getObjectById('lightIRC').sendQuit();<br />
}<br />
<br />
function open_profils(nick) {<br />
width = 800;<br />
height = 700;<br />
if(window.innerWidth) {<br />
var left = (window.innerWidth-width)/2;<br />
var top = (window.innerHeight-height)/2;<br />
} else {<br />
var left = (document.body.clientWidth-width)/2;<br />
var top = (document.body.clientHeight-height)/2;<br />
}<br />
profil = '../../index.php?menu=trombi&amp;ssmenu=show&amp;pseudo=';<br />
caract = '#show';<br />
profil = profil+nick+caract;<br />
window.open(profil,'nom_de_ma_popup','menubar=no, scrollbars=no, top='+top+', left='+left+', width='+width+', height='+height+'');<br />
}<br />
<br />
window.onbeforeunload = function() {<br />
  swfobject.getObjectById('lightIRC').sendQuit();<br />
}<br />
<br />
/* This loop escapes % signs in parameters. You should not change it */<br />
for(var key in params) {<br />
  params[key] = params[key].toString().replace(/%/g, "%95");<br />
}<br />
<br />
swfobject.embedSWF("lightIRC.swf", "lightIRC", "100%", "100%", "10.0.0", "expressInstall.swf", params, {wmode:"transparent"});<br />
 &lt;/script&gt;</blockquote>
]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[BIND TIME -> MOIS = -1 ! Janvier = 00]]></title>
			<link>https://forum.eggdrop.fr/showthread.php?tid=1580</link>
			<pubDate>Fri, 20 Mar 2015 00:01:43 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.eggdrop.fr/member.php?action=profile&uid=2107">ZarTek</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.eggdrop.fr/showthread.php?tid=1580</guid>
			<description><![CDATA[Bonjour,<br />
<br />
Une constations faite dans le 'BIND TIME' dans la version 1.6 d'Eggdrop ( A vérifier en 1.8 ).<br />
<br />
Le mois a une valeur de -1, Janvier vaut donc 00.<br />
<br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>eggdrop v1.6.19+ctcpfix<br />
[19/03-23:55:00] &lt;BOT&gt; 55 23 19 02 2015<br />
[19/03-23:56:57] &lt;McDeffice&gt; .tcl return [string trimleft [clock format [clock seconds] -format %m] 0]<br />
[19/03-23:56:58] &lt;@BOT&gt; Return: 3 - 0.051 ms</code></div></div><br />
Je me suis permis de mettre le wiki à jour : <a href="http://wiki.eggdrop.fr/Binds#TIME" target="_blank" rel="noopener" class="mycode_url">http://wiki.eggdrop.fr/Binds#TIME</a><br />
<br />
<br />
Si vous pouvez essayer pour confirmer ou même mieux contester sur votre version d'eggdrop l'information, également sur la version 1.8<br />
<br />
<br />
Lien externe avançant la même chose : <a href="http://tclhelp.net/unb/108" target="_blank" rel="noopener" class="mycode_url">http://tclhelp.net/unb/108</a>]]></description>
			<content:encoded><![CDATA[Bonjour,<br />
<br />
Une constations faite dans le 'BIND TIME' dans la version 1.6 d'Eggdrop ( A vérifier en 1.8 ).<br />
<br />
Le mois a une valeur de -1, Janvier vaut donc 00.<br />
<br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>eggdrop v1.6.19+ctcpfix<br />
[19/03-23:55:00] &lt;BOT&gt; 55 23 19 02 2015<br />
[19/03-23:56:57] &lt;McDeffice&gt; .tcl return [string trimleft [clock format [clock seconds] -format %m] 0]<br />
[19/03-23:56:58] &lt;@BOT&gt; Return: 3 - 0.051 ms</code></div></div><br />
Je me suis permis de mettre le wiki à jour : <a href="http://wiki.eggdrop.fr/Binds#TIME" target="_blank" rel="noopener" class="mycode_url">http://wiki.eggdrop.fr/Binds#TIME</a><br />
<br />
<br />
Si vous pouvez essayer pour confirmer ou même mieux contester sur votre version d'eggdrop l'information, également sur la version 1.8<br />
<br />
<br />
Lien externe avançant la même chose : <a href="http://tclhelp.net/unb/108" target="_blank" rel="noopener" class="mycode_url">http://tclhelp.net/unb/108</a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[[Demande de suggestion] Echange entre Eggdrop de données en masse.]]></title>
			<link>https://forum.eggdrop.fr/showthread.php?tid=1578</link>
			<pubDate>Sun, 15 Feb 2015 12:39:55 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.eggdrop.fr/member.php?action=profile&uid=2107">ZarTek</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.eggdrop.fr/showthread.php?tid=1578</guid>
			<description><![CDATA[Bonjour,<br />
<br />
Il y avait longtemps. J'espère que vous allez bien en ce 2015 (bouarf) !<br />
<br />
Je ne sais pas si je poste dans la bonne section CrazyCat va surement encore dire, c'est vrai ce n'ait pas un Français!<br />
<br />
Bon concrètement je viens vers vous, pour avoir des suggestions.<br />
<br />
J'ai des eggdrops qui ne sont pas forcement connecter en BotNet et ne désire pas l'être.<br />
<br />
Ceux-ci s'échange énormément d'information entre-eux avec des commande de "demande"/"réponse" sur salon IRC.<br />
<br />
Certains demandent crée un flux important de réponses, c'est pour çà que faire défiler les informations sur un salon IRC (ou botnet), ce n'ait peut-être pas du tout idéal.<br />
<br />
J'aimerais savoir quelles sont les méthodes envisageables ?<br />
<br />
J'ai pensé à des échange de Liens URL en contenue XML, au moins c'est universel entre tout langages de programmation (pour le client)?<br />
<br />
Qu'en pensez-vous ?]]></description>
			<content:encoded><![CDATA[Bonjour,<br />
<br />
Il y avait longtemps. J'espère que vous allez bien en ce 2015 (bouarf) !<br />
<br />
Je ne sais pas si je poste dans la bonne section CrazyCat va surement encore dire, c'est vrai ce n'ait pas un Français!<br />
<br />
Bon concrètement je viens vers vous, pour avoir des suggestions.<br />
<br />
J'ai des eggdrops qui ne sont pas forcement connecter en BotNet et ne désire pas l'être.<br />
<br />
Ceux-ci s'échange énormément d'information entre-eux avec des commande de "demande"/"réponse" sur salon IRC.<br />
<br />
Certains demandent crée un flux important de réponses, c'est pour çà que faire défiler les informations sur un salon IRC (ou botnet), ce n'ait peut-être pas du tout idéal.<br />
<br />
J'aimerais savoir quelles sont les méthodes envisageables ?<br />
<br />
J'ai pensé à des échange de Liens URL en contenue XML, au moins c'est universel entre tout langages de programmation (pour le client)?<br />
<br />
Qu'en pensez-vous ?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Utilisation des archives]]></title>
			<link>https://forum.eggdrop.fr/showthread.php?tid=1565</link>
			<pubDate>Tue, 14 Oct 2014 22:35:50 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.eggdrop.fr/member.php?action=profile&uid=0">extra-cool-tchat</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.eggdrop.fr/showthread.php?tid=1565</guid>
			<description><![CDATA[comment on decompresse]]></description>
			<content:encoded><![CDATA[comment on decompresse]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Modules]]></title>
			<link>https://forum.eggdrop.fr/showthread.php?tid=1508</link>
			<pubDate>Wed, 19 Mar 2014 08:04:32 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.eggdrop.fr/member.php?action=profile&uid=3402">KeeViiNou</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.eggdrop.fr/showthread.php?tid=1508</guid>
			<description><![CDATA[Bonjour,<br />
<br />
Existe t'il des modules pour permettre à un eggdrop d'évité de "ramer" ? Parce que j'ai un soucis avec le mien dès qu'il y a 3 commandes !commande en même temps l'eggdrop ping...<br />
<br />
<br />
Merci]]></description>
			<content:encoded><![CDATA[Bonjour,<br />
<br />
Existe t'il des modules pour permettre à un eggdrop d'évité de "ramer" ? Parce que j'ai un soucis avec le mien dès qu'il y a 3 commandes !commande en même temps l'eggdrop ping...<br />
<br />
<br />
Merci]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Stripper les couleurs...]]></title>
			<link>https://forum.eggdrop.fr/showthread.php?tid=1462</link>
			<pubDate>Sun, 17 Nov 2013 16:43:41 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.eggdrop.fr/member.php?action=profile&uid=1824">pchevee</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.eggdrop.fr/showthread.php?tid=1462</guid>
			<description><![CDATA[Salut la compagnie, cela faisait longtemps que je n'avais pas posté dans ce forum.<br />
<br />
Ma question est assez élémentaire, mais un peu longue à exprimer: <br />
<br />
La plupart des scripts sous mirc écrivent en "lamer", c'est à dire rajoutent dans le texte écrit par l'utilisateur (sous mirc) des codes de couleurs ou de gras/souligné/italique pour l'enjoliver. Le problème, c'est que les eggdrops ne comprennent pas ces codes, et donc ne réagissent pas comme prévu aux commandes. Je connais même le cas d'une personne ne sachant pas envoyer son mot de passe par dcc chat (dans le but d'ouvrir la pl) pour la simple raison que le script qu'elle utilise y applique aussi des codes de couleur!<br />
<br />
Au final, y-a-t-il un flag à positionner dans le .conf pour que l'eggdrop "strippe" les messages reçus de ces codes d'enjolivement? Ou doit-on forcer les personnes souhaitant accéder à des eggdrops à utiliser des clients vierges de tout script?<br />
<br />
Merci d'avance pour vos réponses éclairées, et bien à vous tous,<br />
<br />
PC]]></description>
			<content:encoded><![CDATA[Salut la compagnie, cela faisait longtemps que je n'avais pas posté dans ce forum.<br />
<br />
Ma question est assez élémentaire, mais un peu longue à exprimer: <br />
<br />
La plupart des scripts sous mirc écrivent en "lamer", c'est à dire rajoutent dans le texte écrit par l'utilisateur (sous mirc) des codes de couleurs ou de gras/souligné/italique pour l'enjoliver. Le problème, c'est que les eggdrops ne comprennent pas ces codes, et donc ne réagissent pas comme prévu aux commandes. Je connais même le cas d'une personne ne sachant pas envoyer son mot de passe par dcc chat (dans le but d'ouvrir la pl) pour la simple raison que le script qu'elle utilise y applique aussi des codes de couleur!<br />
<br />
Au final, y-a-t-il un flag à positionner dans le .conf pour que l'eggdrop "strippe" les messages reçus de ces codes d'enjolivement? Ou doit-on forcer les personnes souhaitant accéder à des eggdrops à utiliser des clients vierges de tout script?<br />
<br />
Merci d'avance pour vos réponses éclairées, et bien à vous tous,<br />
<br />
PC]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Hébergement d'eggdrop]]></title>
			<link>https://forum.eggdrop.fr/showthread.php?tid=1415</link>
			<pubDate>Sun, 29 Sep 2013 20:16:32 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.eggdrop.fr/member.php?action=profile&uid=0">shine</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.eggdrop.fr/showthread.php?tid=1415</guid>
			<description><![CDATA[Bonsoir <img src="https://forum.eggdrop.fr/images/smilies/smiling.png" alt="Smile" title="Smile" class="smilie smilie_4" /><br />
<br />
Je lance une petite solution d'hébergement d'eggdrop (si possible assez simple).<br />
Tout se passe sur <a href="http://eggdrop.ircforge.com/" target="_blank" rel="noopener" class="mycode_url">http://eggdrop.ircforge.com/</a><br />
Vous devez vous créer un compte (un mail de confirmation vous sera envoyé).<br />
<br />
Une fois votre compte validé et une fois connecté sur le site, vous pouvez vous créer un eggdrop (juste un, pour l'instant). On vous demande un nouveau mot de passe qui servira à la gestion de votre eggdrop.<br />
<br />
Vous arrivez sur une page avec quelques informations :<br />
<ol type="1" class="mycode_list"><li>les ports utilisés par l'eggdrop (connexion avec les utilisateurs et les bots)<br />
</li>
<li>le port SFTP<br />
</li>
<li>les logs<br />
</li>
</ol>
<br />
Les ports ne sont pas modifiables. Ils seront déjà configurés dans le fichier eggdrop.conf et il ne faut pas les changer <img src="https://forum.eggdrop.fr/images/smilies/smiling.png" alt="Smile" title="Smile" class="smilie smilie_4" /><br />
Le port SFTP vous permet d'accéder aux fichiers utilisés par votre eggdrop. Vous avez plusieurs dossiers:<br />
<ol type="1" class="mycode_list"><li>conf: le fichier de configuration<br />
</li>
<li>db: les bases de données (users, channels, notes)<br />
</li>
<li>logs: logs de l'eggdrop<br />
</li>
<li>scripts: l'endroit où mettre vos scripts<br />
</li>
</ol>
<br />
Si vous avez le port 42, connectez vous en SFTP sur eggdrop.ircforge.com port 42 en tant qu'utilisateur eggdrop avec le mot de passe spécifié lors de la création.<br />
Vous pouvez maintenant gérer votre eggdrop.<br />
<br />
Attention avec la configuration par défaut, les "die" sont encore présents, donc votre eggdrop ne tournera pas.<br />
Vous pouvez stop/start/restart votre eggdrop depuis l'interface.<br />
<br />
Tout est gratuit mais limité. Il n'y a qu'une petite dizaine de places pour le moment et un seul eggdrop par compte utilisateur.<br />
L'interface est aussi un peu austère mais on verra prochainement pour faire mieux.<br />
<br />
Le code sera aussi rapidement disponible <img src="https://forum.eggdrop.fr/images/smilies/smiling.png" alt="Smile" title="Smile" class="smilie smilie_4" />]]></description>
			<content:encoded><![CDATA[Bonsoir <img src="https://forum.eggdrop.fr/images/smilies/smiling.png" alt="Smile" title="Smile" class="smilie smilie_4" /><br />
<br />
Je lance une petite solution d'hébergement d'eggdrop (si possible assez simple).<br />
Tout se passe sur <a href="http://eggdrop.ircforge.com/" target="_blank" rel="noopener" class="mycode_url">http://eggdrop.ircforge.com/</a><br />
Vous devez vous créer un compte (un mail de confirmation vous sera envoyé).<br />
<br />
Une fois votre compte validé et une fois connecté sur le site, vous pouvez vous créer un eggdrop (juste un, pour l'instant). On vous demande un nouveau mot de passe qui servira à la gestion de votre eggdrop.<br />
<br />
Vous arrivez sur une page avec quelques informations :<br />
<ol type="1" class="mycode_list"><li>les ports utilisés par l'eggdrop (connexion avec les utilisateurs et les bots)<br />
</li>
<li>le port SFTP<br />
</li>
<li>les logs<br />
</li>
</ol>
<br />
Les ports ne sont pas modifiables. Ils seront déjà configurés dans le fichier eggdrop.conf et il ne faut pas les changer <img src="https://forum.eggdrop.fr/images/smilies/smiling.png" alt="Smile" title="Smile" class="smilie smilie_4" /><br />
Le port SFTP vous permet d'accéder aux fichiers utilisés par votre eggdrop. Vous avez plusieurs dossiers:<br />
<ol type="1" class="mycode_list"><li>conf: le fichier de configuration<br />
</li>
<li>db: les bases de données (users, channels, notes)<br />
</li>
<li>logs: logs de l'eggdrop<br />
</li>
<li>scripts: l'endroit où mettre vos scripts<br />
</li>
</ol>
<br />
Si vous avez le port 42, connectez vous en SFTP sur eggdrop.ircforge.com port 42 en tant qu'utilisateur eggdrop avec le mot de passe spécifié lors de la création.<br />
Vous pouvez maintenant gérer votre eggdrop.<br />
<br />
Attention avec la configuration par défaut, les "die" sont encore présents, donc votre eggdrop ne tournera pas.<br />
Vous pouvez stop/start/restart votre eggdrop depuis l'interface.<br />
<br />
Tout est gratuit mais limité. Il n'y a qu'une petite dizaine de places pour le moment et un seul eggdrop par compte utilisateur.<br />
L'interface est aussi un peu austère mais on verra prochainement pour faire mieux.<br />
<br />
Le code sera aussi rapidement disponible <img src="https://forum.eggdrop.fr/images/smilies/smiling.png" alt="Smile" title="Smile" class="smilie smilie_4" />]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Eggdrop Password Sécurité & Crackage]]></title>
			<link>https://forum.eggdrop.fr/showthread.php?tid=1408</link>
			<pubDate>Thu, 12 Sep 2013 09:49:26 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.eggdrop.fr/member.php?action=profile&uid=2107">ZarTek</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.eggdrop.fr/showthread.php?tid=1408</guid>
			<description><![CDATA[Bonjour à tous,<br />
<br />
Suite à des recherches.. Je suis tomber sur des informations à propos de la sécurité concernant le userfile de eggdrop.<br />
<br />
Il est possible de craqués les mots de passe grace/a cause de <a href="http://passwords.openwall.net/unix-crypt" target="_blank" rel="noopener" class="mycode_url">http://passwords.openwall.net/unix-crypt</a><br />
<br />
J'ai fait un teste, chez moi il tente ~ 4645K mot de passe par secondes et ça fonctionne.<br />
<br />
Je trouve sa énorme.<br />
<br />
Afin d’éviter ce problème, il est possible de modifier sa manière d'encrypter les mots de passe.<br />
<br />
Editez src/mod/blowfish.mod/blowfish.c<br />
Aller vers la ligne 264<br />
<br />
<blockquote class="mycode_quote"><cite>Citation :</cite>/* Of course, if you change either of these, then your userfile will<br />
* no longer be able to be shared. <img src="https://forum.eggdrop.fr/images/smilies/smiling.png" alt="Smile" title="Smile" class="smilie smilie_4" /><br />
*/<br />
#define SALT1 0xdeadd061<br />
#define SALT2 0x23f6b095<br />
<br />
/* Convert 64-bit encrypted password to text for userfile */<br />
static char *base64 =<br />
            "./0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";</blockquote>
<br />
Modifier les valeurs de SALT1, SALT2 en mettant d'autre valeur HEXadecimal.<br />
<br />
Tout comme indiquer, il est évident que si modifier ces valeurs, il faut le faire sur tout les eggdrops qui sont en botnet.]]></description>
			<content:encoded><![CDATA[Bonjour à tous,<br />
<br />
Suite à des recherches.. Je suis tomber sur des informations à propos de la sécurité concernant le userfile de eggdrop.<br />
<br />
Il est possible de craqués les mots de passe grace/a cause de <a href="http://passwords.openwall.net/unix-crypt" target="_blank" rel="noopener" class="mycode_url">http://passwords.openwall.net/unix-crypt</a><br />
<br />
J'ai fait un teste, chez moi il tente ~ 4645K mot de passe par secondes et ça fonctionne.<br />
<br />
Je trouve sa énorme.<br />
<br />
Afin d’éviter ce problème, il est possible de modifier sa manière d'encrypter les mots de passe.<br />
<br />
Editez src/mod/blowfish.mod/blowfish.c<br />
Aller vers la ligne 264<br />
<br />
<blockquote class="mycode_quote"><cite>Citation :</cite>/* Of course, if you change either of these, then your userfile will<br />
* no longer be able to be shared. <img src="https://forum.eggdrop.fr/images/smilies/smiling.png" alt="Smile" title="Smile" class="smilie smilie_4" /><br />
*/<br />
#define SALT1 0xdeadd061<br />
#define SALT2 0x23f6b095<br />
<br />
/* Convert 64-bit encrypted password to text for userfile */<br />
static char *base64 =<br />
            "./0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";</blockquote>
<br />
Modifier les valeurs de SALT1, SALT2 en mettant d'autre valeur HEXadecimal.<br />
<br />
Tout comme indiquer, il est évident que si modifier ces valeurs, il faut le faire sur tout les eggdrops qui sont en botnet.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Cours de TCL]]></title>
			<link>https://forum.eggdrop.fr/showthread.php?tid=1385</link>
			<pubDate>Mon, 12 Aug 2013 14:52:06 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.eggdrop.fr/member.php?action=profile&uid=2">CrazyCat</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.eggdrop.fr/showthread.php?tid=1385</guid>
			<description><![CDATA[Au détour du net, j'ai trouvé le livre <a href="http://www.vuibert.fr/ouvrage-9782711748785-tcl-tk.html" target="_blank" rel="noopener" class="mycode_url">TCL/TK - Apprentissage et référence</a> par <a href="http://www.vuibert.fr/auteur-bernard-desgraupes.html" target="_blank" rel="noopener" class="mycode_url">Bernard Desgraupes</a>.<br />
<br />
Dans les <span style="font-weight: bold;" class="mycode_b">ressources complémentaires</span>, il y a le "complément de l'ouvrage 1" qui est fort intéressant, c'est une synthèse de la référence des commandes TCL (version 8.4) et c'est gratuit.]]></description>
			<content:encoded><![CDATA[Au détour du net, j'ai trouvé le livre <a href="http://www.vuibert.fr/ouvrage-9782711748785-tcl-tk.html" target="_blank" rel="noopener" class="mycode_url">TCL/TK - Apprentissage et référence</a> par <a href="http://www.vuibert.fr/auteur-bernard-desgraupes.html" target="_blank" rel="noopener" class="mycode_url">Bernard Desgraupes</a>.<br />
<br />
Dans les <span style="font-weight: bold;" class="mycode_b">ressources complémentaires</span>, il y a le "complément de l'ouvrage 1" qui est fort intéressant, c'est une synthèse de la référence des commandes TCL (version 8.4) et c'est gratuit.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[BOPM IRCu .. Aucune détection ..]]></title>
			<link>https://forum.eggdrop.fr/showthread.php?tid=1365</link>
			<pubDate>Sat, 13 Jul 2013 11:49:43 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.eggdrop.fr/member.php?action=profile&uid=0">Subsonic</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.eggdrop.fr/showthread.php?tid=1365</guid>
			<description><![CDATA[Bonjour,<br />
<br />
<span style="font-weight: bold;" class="mycode_b">C'est avec grand intérêt que je viens vers vous en ce jour.</span><br />
<br />
Je tiens dans un premier temps à féliciter la communauté <span style="font-weight: bold;" class="mycode_b">Eggdrop.fr</span> pour <br />
son travail et son entraide mit à disposition du public sur les posts du forum.<br />
<br />
--<br />
<br />
<span style="text-decoration: underline;" class="mycode_u">Voici ma problématique actuelle</span> : <br />
<br />
Suite à de <span style="font-weight: bold;" class="mycode_b">multiples attaques de proxys via botnet</span> sur notre <span style="font-weight: bold;" class="mycode_b">IRCu</span> Exchange,<br />
il m'est dans l'urgence de pouvoir monter un robot de scan port style <span style="font-weight: bold;" class="mycode_b">BOPM</span>.<br />
<br />
Actuellement nous avons un anti-proxy via liste <span style="font-weight: bold;" class="mycode_b">DNSBL</span> <br />
+ Blacklist perso sur <span style="font-weight: bold;" class="mycode_b">.tld</span>, il manque vraiment un scan port.<br />
<br />
Dans l'idéal un simple <span style="font-weight: bold;" class="mycode_b">TCL</span> pourrait faire l'affaire, mais en ayant testé<br />
 plusieurs (eggdrop.fr, eggheads, pastebin code...) aucun ne marche.<br />
<br />
J'ai donc tenté <span style="font-weight: bold;" class="mycode_b">BOPM</span>, l'OPER se passe correctement et la connexion<br />
<span style="font-weight: bold;" class="mycode_b">IRC</span> est <span style="font-weight: bold;" class="mycode_b">OK</span> mais aucune détection n'est effectué de sa part.<br />
<br />
Je suis technicien réseaux / systèmes sur le réseau IRC.<br />
(Unix server, iptables, NAT, répartition de flux, etc ..)<br />
<br />
Hélas Le développement IRC n'est pas mon poste à la base,<br />
je ne suis ni un développeur IRC ni un codeur TCL,<br />
ce n'est irrémédiablement pas mon domaine de prédilection.<br />
<br />
--<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Je reste ouvert à tout bout de code aussi simpliste qu'il soit.</span><br />
<br />
Et pour ceux qui voudraient se pencher sur mon <span style="font-weight: bold;" class="mycode_b">BOPM</span>, qui ne doit <br />
vraiment pas être configuré comme il faut, je mets le <span style="font-weight: bold;" class="mycode_b">.conf </span>en pièce jointe.<br />
<br />
--<br />
<br />
Bonne journée !<br />
<br />
Très codialement <img src="https://forum.eggdrop.fr/images/smilies/wink.png" alt="Wink" title="Wink" class="smilie smilie_32" />]]></description>
			<content:encoded><![CDATA[Bonjour,<br />
<br />
<span style="font-weight: bold;" class="mycode_b">C'est avec grand intérêt que je viens vers vous en ce jour.</span><br />
<br />
Je tiens dans un premier temps à féliciter la communauté <span style="font-weight: bold;" class="mycode_b">Eggdrop.fr</span> pour <br />
son travail et son entraide mit à disposition du public sur les posts du forum.<br />
<br />
--<br />
<br />
<span style="text-decoration: underline;" class="mycode_u">Voici ma problématique actuelle</span> : <br />
<br />
Suite à de <span style="font-weight: bold;" class="mycode_b">multiples attaques de proxys via botnet</span> sur notre <span style="font-weight: bold;" class="mycode_b">IRCu</span> Exchange,<br />
il m'est dans l'urgence de pouvoir monter un robot de scan port style <span style="font-weight: bold;" class="mycode_b">BOPM</span>.<br />
<br />
Actuellement nous avons un anti-proxy via liste <span style="font-weight: bold;" class="mycode_b">DNSBL</span> <br />
+ Blacklist perso sur <span style="font-weight: bold;" class="mycode_b">.tld</span>, il manque vraiment un scan port.<br />
<br />
Dans l'idéal un simple <span style="font-weight: bold;" class="mycode_b">TCL</span> pourrait faire l'affaire, mais en ayant testé<br />
 plusieurs (eggdrop.fr, eggheads, pastebin code...) aucun ne marche.<br />
<br />
J'ai donc tenté <span style="font-weight: bold;" class="mycode_b">BOPM</span>, l'OPER se passe correctement et la connexion<br />
<span style="font-weight: bold;" class="mycode_b">IRC</span> est <span style="font-weight: bold;" class="mycode_b">OK</span> mais aucune détection n'est effectué de sa part.<br />
<br />
Je suis technicien réseaux / systèmes sur le réseau IRC.<br />
(Unix server, iptables, NAT, répartition de flux, etc ..)<br />
<br />
Hélas Le développement IRC n'est pas mon poste à la base,<br />
je ne suis ni un développeur IRC ni un codeur TCL,<br />
ce n'est irrémédiablement pas mon domaine de prédilection.<br />
<br />
--<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Je reste ouvert à tout bout de code aussi simpliste qu'il soit.</span><br />
<br />
Et pour ceux qui voudraient se pencher sur mon <span style="font-weight: bold;" class="mycode_b">BOPM</span>, qui ne doit <br />
vraiment pas être configuré comme il faut, je mets le <span style="font-weight: bold;" class="mycode_b">.conf </span>en pièce jointe.<br />
<br />
--<br />
<br />
Bonne journée !<br />
<br />
Très codialement <img src="https://forum.eggdrop.fr/images/smilies/wink.png" alt="Wink" title="Wink" class="smilie smilie_32" />]]></content:encoded>
		</item>
	</channel>
</rss>