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

<channel>
	<title>Prune&#039;s Blog &#187; Non classé</title>
	<atom:link href="http://www.lecentre.net/blog/archives/category/non-classe/feed" rel="self" type="application/rss+xml" />
	<link>http://www.lecentre.net/blog</link>
	<description>Internet, UNIX, Video, Leisure...</description>
	<lastBuildDate>Thu, 19 Jan 2012 20:38:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Syslog LogAnalyzer with LDAP authentication</title>
		<link>http://www.lecentre.net/blog/archives/1328</link>
		<comments>http://www.lecentre.net/blog/archives/1328#comments</comments>
		<pubDate>Thu, 19 Jan 2012 20:38:44 +0000</pubDate>
		<dc:creator>Prune</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Non classé]]></category>
		<category><![CDATA[UNIX]]></category>
		<category><![CDATA[adiscon]]></category>
		<category><![CDATA[ldap]]></category>
		<category><![CDATA[loganalyzer]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[rsyslog]]></category>
		<category><![CDATA[syslog]]></category>

		<guid isPermaLink="false">http://www.lecentre.net/blog/?p=1328</guid>
		<description><![CDATA[&#160; &#160; Adiscon is the company responsible for developping LogAnalyzer, a syslog (rsyslog, syslog-ng&#8230;) and/or flat file &#171;&#160;analyzer&#160;&#187;. By analyzer, understand that it enables you to display the log in a meaningful way, splitting it depending on &#171;&#160;views&#160;&#187; and enabling real search filters. If you don&#8217;t have the money for things liks Splunk and you [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" title="adiscon LogAnalyzer" src="http://loganalyzer.adiscon.com/wp-content/themes/loganalyzer/log-analyzer-logo.gif" alt="" width="274" height="68" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Adiscon is the company responsible for developping LogAnalyzer, a syslog (rsyslog, syslog-ng&#8230;) and/or flat file &laquo;&nbsp;analyzer&nbsp;&raquo;.<br />
By analyzer, understand that it enables you to display the log in a meaningful way, splitting it depending on &laquo;&nbsp;views&nbsp;&raquo; and enabling real search filters.</p>
<p>If you don&#8217;t have the money for things liks Splunk and you are not convinces by other new projects using Rails, NoSQL and other tools that are a pain in the ass to install, you may fallback to LogAnalyzer.<br />
<span id="more-1328"></span><br />
Loganalyzer is a LAMP (Apache, PHP, Mysql) application. Installing it is as easy as putting the PHP files in you web Documentroot and browse to it. You will be asked a few questions and you can start importing your log files.</p>
<p>To do that you need to create &laquo;&nbsp;sources&nbsp;&raquo; of data. A source can now be a flat file on the local disk or a database (Mysql).<br />
The choice for us was to use rSyslog on our servers. rSyslog is installed on every UNIX host. It is then configured to send the logs to a &laquo;&nbsp;loghost&nbsp;&raquo; server.<br />
Additionaly, on some hosts, flat files like the Apache access_log or Error_log are also sent by rSyslog.<br />
This lead to a client rsyslog.conf like :</p>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;">
<ol>
<li class="li1">
<div class="de1"><span class="co2">#rsyslog v3 config file</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># if you experience problems, check</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># http://www.rsyslog.com/troubleshoot for assistance</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#### MODULES ####</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$ModLoad</span> imuxsock<span class="sy0">.</span>so    <span class="co2"># provides support for local system logging (e.g. via logger command)</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$ModLoad</span> imklog<span class="sy0">.</span>so      <span class="co2"># provides kernel logging support (previously done by rklogd)</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#$ModLoad immark.so     # provides &#8211;MARK&#8211; message capability</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$ModLoad</span> omrelp<span class="sy0">.</span>so      <span class="co2"># load RELP output module to send logs using RELP instead of UDP-TCP</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$ModLoad</span> imfile         <span class="co2"># load the file input module to scan specific log files</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#### GLOBAL DIRECTIVES ####</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># Use default timestamp format</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$ActionFileDefaultTemplate</span> RSYSLOG_TraditionalFileFormat</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># File syncing capability is disabled by default. This feature is usually not required,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># not useful and an extreme performance hit</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#$ActionFileEnableSync on</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#### File Input module ####</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$InputFileName</span> <span class="sy0">/</span>opt<span class="sy0">/</span>app<span class="sy0">/</span><a href="http://www.php.net/log"><span class="kw3">log</span></a><span class="sy0">/</span>mylog<span class="sy0">.</span>xml</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$InputFileTag</span> mylog<span class="sy0">.</span>xml<span class="sy0">:</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$InputFileStateFile</span> mylog<span class="sy0">.</span>xml</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$InputFileFacility</span> local5</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$InputFileSeverity</span> notice</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$InputRunFileMonitor</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#### RULES ####</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$template</span> TraditionalFormatWithPRI<span class="sy0">,</span><span class="st0">&quot;%PRI-text%: %timegenerated% %HOSTNAME% <span class="es6">%s</span>yslogtag<span class="es6">%%</span>msg:::drop-last-lf%<span class="es1">\n</span>&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># Log all kernel messages to the console.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># Logging much else clutters up the screen.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#kern.* /dev/console</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># Log anything (except mail) of level info or higher.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># Don&#8217;t log private authentication messages!</span></div>
</li>
<li class="li1">
<div class="de1"><span class="sy0">*.</span>info<span class="sy0">;</span>mail<span class="sy0">.</span>none<span class="sy0">;</span>authpriv<span class="sy0">.</span>none<span class="sy0">;</span>cron<span class="sy0">.</span>none<span class="sy0">;</span>local5<span class="sy0">.!</span>notice <span class="sy0">/</span><span class="kw2">var</span><span class="sy0">/</span><a href="http://www.php.net/log"><span class="kw3">log</span></a><span class="sy0">/</span>messages<span class="sy0">;</span>TraditionalFormatWithPRI</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># The authpriv file has restricted access.</span></div>
</li>
<li class="li1">
<div class="de1">authpriv<span class="sy0">.*</span> <span class="sy0">/</span><span class="kw2">var</span><span class="sy0">/</span><a href="http://www.php.net/log"><span class="kw3">log</span></a><span class="sy0">/</span>secure</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># Log all the mail messages in one place.</span></div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/mail"><span class="kw3">mail</span></a><span class="sy0">.*</span> <span class="sy0">-/</span><span class="kw2">var</span><span class="sy0">/</span><a href="http://www.php.net/log"><span class="kw3">log</span></a><span class="sy0">/</span>maillog</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># Log cron stuff</span></div>
</li>
<li class="li1">
<div class="de1">cron<span class="sy0">.*</span> <span class="sy0">/</span><span class="kw2">var</span><span class="sy0">/</span><a href="http://www.php.net/log"><span class="kw3">log</span></a><span class="sy0">/</span>cron</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># Everybody gets emergency messages</span></div>
</li>
<li class="li1">
<div class="de1"><span class="sy0">*.</span>emerg <span class="sy0">*</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># Save news errors of level crit and higher in a special file.</span></div>
</li>
<li class="li1">
<div class="de1">uucp<span class="sy0">,</span>news<span class="sy0">.</span>crit <span class="sy0">/</span><span class="kw2">var</span><span class="sy0">/</span><a href="http://www.php.net/log"><span class="kw3">log</span></a><span class="sy0">/</span>spooler</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># Save boot messages also to boot.log</span></div>
</li>
<li class="li1">
<div class="de1">local7<span class="sy0">.*</span> <span class="sy0">/</span><span class="kw2">var</span><span class="sy0">/</span><a href="http://www.php.net/log"><span class="kw3">log</span></a><span class="sy0">/</span>boot<span class="sy0">.</span><a href="http://www.php.net/log"><span class="kw3">log</span></a></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># ### begin forwarding rule ###</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># The statement between the begin &#8230; end define a SINGLE forwarding</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># rule. They belong together, do NOT split them. If you create multiple</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># forwarding rules, duplicate the whole block!</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># Remote Logging (we use TCP for reliable delivery)</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># An on-disk queue is created for this action. If the remote host is</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># down, messages are spooled to disk and sent when it is up again.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$WorkDirectory</span> <span class="sy0">/</span><span class="kw2">var</span><span class="sy0">/</span>spool<span class="sy0">/</span>rsyslog <span class="co2"># where to place spool files</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$ActionQueueFileName</span> fwdRule1 <span class="co2"># unique name prefix for spool files</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$ActionQueueMaxDiskSpace</span> 1g <span class="co2"># 1gb space limit (use as much as possible)</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$ActionQueueSaveOnShutdown</span> on <span class="co2"># save messages to disk on shutdown</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$ActionQueueType</span> LinkedList <span class="co2"># run asynchronously</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$ActionResumeRetryCount</span> <span class="sy0">-</span><span class="nu0">1</span> <span class="co2"># infinite retries if host is down</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional</span></div>
</li>
<li class="li1">
<div class="de1"><span class="sy0">*.*</span> <span class="sy0">@@</span>loghost<span class="sy0">:</span><span class="nu0">514</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#*.* <img src='http://www.lecentre.net/blog/wp-includes/images/smilies/icon_surprised.gif' alt=':o' class='wp-smiley' /> mrelp:loghost:20514;RSYSLOG_ForwardFormat</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># ### end of the forwarding rule ###</span></div>
</li>
</ol>
</div>
</div>
<p>On the server (receiver) side, the rSyslog will put data into files, rotating every day, and inside the DB.<br />
Actualy I don&#8217;t know yet if it is a good idea. For the moment I keep everything. I may consider archiving the flat files and deleting old logs from the DB.<br />
Then the DB would act as a buffer to search and correlate.</p>
<p>This is the server rsyslog.conf :</p>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;">
<ol>
<li class="li1">
<div class="de1"><span class="co2"># if you experience problems, check</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># http://www.rsyslog.com/troubleshoot for assistance</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># rsyslog v3: load input modules</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># If you do not load inputs, nothing happens!</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># You may need to set the module load path if modules are not found.</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># stats module &#8211; experimental</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># supprimer pour la mise en prod</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$ModLoad</span> impstats</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$PStatInterval</span> 600</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$PStatSeverity</span> 7</div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/syslog"><span class="kw3">syslog</span></a><span class="sy0">.</span>debug <span class="sy0">/</span><span class="kw2">var</span><span class="sy0">/</span><a href="http://www.php.net/log"><span class="kw3">log</span></a><span class="sy0">/</span>rsyslog<span class="sy0">-</span>stats</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$ModLoad</span> immark <span class="co2"># provides &#8211;MARK&#8211; message capability</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$ModLoad</span> imuxsock <span class="co2"># provides support for local system logging (e.g. via logger command)</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$ModLoad</span> imklog <span class="co2"># kernel logging (formerly provided by rklogd)</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$ModLoad</span> ommysql <span class="co2"># locad Mysql backend module</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$WorkDirectory</span> <span class="sy0">/</span>opt<span class="sy0">/</span>rsyslog<span class="sy0">/</span>work <span class="co2"># default location for work (spool) files</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># Templates</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$template</span> RemoteHost<span class="sy0">,</span><span class="st0">&quot;/opt/rsyslog/data/%<span class="es4">$YEAR</span>%/%<span class="es4">$MONTH</span>%/%<span class="es4">$DAY</span>%/%HOSTNAME%/<span class="es6">%s</span>yslogfacility-text%.log&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># used for Cisco, vanilla syslog when we can&#8217;t parse host name</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$template</span> RemoteFromHost<span class="sy0">,</span><span class="st0">&quot;/opt/rsyslog/data/<span class="es6">%F</span>ROMHOST%/%<span class="es4">$YEAR</span>%/%<span class="es4">$MONTH</span>%/%<span class="es4">$DAY</span>%/<span class="es6">%s</span>yslogfacility-text%.log&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># ######### Receiving Messages from local host only ##########</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># Log all kernel messages to the console.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># Logging much else clutters up the screen.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#kern.* /dev/console</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># Log anything (except mail) of level info or higher.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># Don&#8217;t log private authentication messages!</span></div>
</li>
<li class="li1">
<div class="de1"><span class="sy0">*.</span>info<span class="sy0">;</span>mail<span class="sy0">.</span>none<span class="sy0">;</span>authpriv<span class="sy0">.</span>none<span class="sy0">;</span>cron<span class="sy0">.</span>none <span class="sy0">-/</span><span class="kw2">var</span><span class="sy0">/</span><a href="http://www.php.net/log"><span class="kw3">log</span></a><span class="sy0">/</span>messages</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># The authpriv file has restricted access.</span></div>
</li>
<li class="li1">
<div class="de1">authpriv<span class="sy0">.*</span> <span class="sy0">/</span><span class="kw2">var</span><span class="sy0">/</span><a href="http://www.php.net/log"><span class="kw3">log</span></a><span class="sy0">/</span>secure</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># Log all the mail messages in one place.</span></div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/mail"><span class="kw3">mail</span></a><span class="sy0">.*</span> <span class="sy0">-/</span><span class="kw2">var</span><span class="sy0">/</span><a href="http://www.php.net/log"><span class="kw3">log</span></a><span class="sy0">/</span>maillog</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># Log cron stuff</span></div>
</li>
<li class="li1">
<div class="de1">cron<span class="sy0">.*</span> <span class="sy0">-/</span><span class="kw2">var</span><span class="sy0">/</span><a href="http://www.php.net/log"><span class="kw3">log</span></a><span class="sy0">/</span>cron</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># Everybody gets emergency messages</span></div>
</li>
<li class="li1">
<div class="de1"><span class="sy0">*.</span>emerg <span class="sy0">*</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># Save news errors of level crit and higher in a special file.</span></div>
</li>
<li class="li1">
<div class="de1">uucp<span class="sy0">,</span>news<span class="sy0">.</span>crit <span class="sy0">-/</span><span class="kw2">var</span><span class="sy0">/</span><a href="http://www.php.net/log"><span class="kw3">log</span></a><span class="sy0">/</span>spooler</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># Save boot messages also to boot.log</span></div>
</li>
<li class="li1">
<div class="de1">local7<span class="sy0">.*</span> <span class="sy0">/</span><span class="kw2">var</span><span class="sy0">/</span><a href="http://www.php.net/log"><span class="kw3">log</span></a><span class="sy0">/</span>boot<span class="sy0">.</span><a href="http://www.php.net/log"><span class="kw3">log</span></a></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># ######### Receiving Messages from Remote Hosts ##########</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># at this point, we consider only remote messages</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$RuleSet</span> remote</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># TCP Syslog Server:</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># provides TCP syslog reception and GSS-API (if compiled to support it)</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$ModLoad</span> imtcp<span class="sy0">.</span>so <span class="co2"># load module</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$InputTCPServerBindRuleset</span> remote</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$InputTCPServerRun</span> <span class="nu0">514</span> <span class="co2"># start up TCP listener at port 514</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># TCP Syslog Server for Cisco &#8211; need port over 1024 :</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># provides TCP syslog reception and GSS-API (if compiled to support it)</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$ModLoad</span> imtcp<span class="sy0">.</span>so <span class="co2"># load module</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$InputTCPServerBindRuleset</span> remote</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$InputTCPServerRun</span> <span class="nu0">1470</span> <span class="co2"># start up TCP listener at port 514</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># UDP Syslog Server:</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$ModLoad</span> imudp<span class="sy0">.</span>so <span class="co2"># provides UDP syslog reception</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$InputUDPServerBindRuleset</span> remote</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$UDPServerRun</span> <span class="nu0">514</span> <span class="co2"># start a UDP syslog server at standard port 514</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># RELP Syslog (Reliable Event Logging Protocol)</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># WARNING : RELP messages are not passed through ruleset yet and will be logged localy</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$ModLoad</span> imrelp <span class="co2"># load RELP input module to send reliable messages &#8211; better than TCP and UDP</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$InputRELPServerRun</span> <span class="nu0">20514</span> <span class="co2"># RELP port on 20514</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># #########</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># log remote hosts to specific files</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$ActionQueueType</span> LinkedList <span class="co2"># use asynchronous processing</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$ActionQueueFileName</span> dbq <span class="co2"># set file name, also enables disk mode</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$ActionResumeRetryCount</span> <span class="sy0">-</span><span class="nu0">1</span> <span class="co2"># infinite retries on insert failure</span></div>
</li>
<li class="li1">
<div class="de1"><span class="sy0">*.*</span> <span class="sy0">-</span>?RemoteHost</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># log everything to mysql using default template</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#*.* <img src='http://www.lecentre.net/blog/wp-includes/images/smilies/icon_surprised.gif' alt=':o' class='wp-smiley' /> mmysql:database-server,database-name,database-userid,database-password</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#*.* <img src='http://www.lecentre.net/blog/wp-includes/images/smilies/icon_surprised.gif' alt=':o' class='wp-smiley' /> mmysql:localhost,loganalyzer,rsyslog,password</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># syslog-ng style template used by centreon-syslog</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$template</span> sysMysql<span class="sy0">,</span><span class="st0">&quot;INSERT INTO logs (host,facility, priority,level,tag,datetime,program,msg,ProcessID) VALUES (&#8216;%HOSTNAME%&#8217;,&#8217;<span class="es6">%s</span>yslogfacility%&#8217;,&#8217;<span class="es6">%s</span>yslogpriority%&#8217;,&#8217;<span class="es6">%s</span>yslogseverity%&#8217;,&#8217;<span class="es6">%s</span>yslogtag%&#8217;, &#8216;%timereported:::date-mysql%&#8217;,'%programname%&#8217;, &#8216;%msg%&#8217;,'%procid:R,ERE,0,ZERO:[0-9]+&#8211;end%&#8217;)&quot;</span><span class="sy0">,</span> SQL</div>
</li>
<li class="li1">
<div class="de1"><span class="sy0">*.*</span> <span class="sy0">:</span>ommysql<span class="sy0">:</span>localhost<span class="sy0">,</span>loganalyzer<span class="sy0">,</span>rsyslog<span class="sy0">,</span>password<span class="sy0">;</span>sysMysql</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2"># END remote logging</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#</span></div>
</li>
</ol>
</div>
</div>
<p>On the mysql side you will need to install the syslog-ng database schema. Mine is changed to also support ProcessID. (I will join the schema soon).<br />
On the Loganalyzer side you need to define sources and views.<br />
Sources will define which data source to use&#8230; flat file, mysql&#8230;<br />
To be able to use Mysql you will need to also create (or use the provided) DBMapping. This will match the DB fields to the Syslog Fields.<br />
Finaly, the &laquo;&nbsp;view&nbsp;&raquo; will decide which fields to display. For example, you could decide to display only the date and message of the error logs in a view because the hostname is not usefull. In another view you could decide that the date is not important but the host is, with the HTTP status code&#8230;</p>
<p>OK. You are all set-up with Loganalyzer&#8230; but you can only log-in with users from the mysql database.<br />
My users are in LDAP.<br />
While it would be hard to change the whole application to authenticate and search the groups in LDAP, the authentication part is easy to do.<br />
I just changed the functions_users.php so, instead of looking the user in the DB, do the auth on LDAP, create the user in the DB and continue with the normal behaviour&#8230;</p>
<p>Here is the code of the new function in <strong>include/functions_users.php</strong> :</p>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">function</span> CheckLDAPUserLogin<span class="br0">&#40;</span> <span class="re0">$username</span><span class="sy0">,</span> <span class="re0">$password</span> <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">global</span> <span class="re0">$content</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$ldap_filter</span><span class="sy0">=</span><span class="st_h">&#8216;(&amp;amp;&#8217;</span><span class="sy0">.</span><span class="re0">$content</span><span class="br0">&#91;</span><span class="st_h">&#8216;LDAPSearchFilter&#8217;</span><span class="br0">&#93;</span><span class="sy0">.</span><span class="st_h">&#8216;(&#8216;</span><span class="sy0">.</span><span class="re0">$content</span><span class="br0">&#91;</span><span class="st_h">&#8216;LDAPUidAttribute&#8217;</span><span class="br0">&#93;</span><span class="sy0">.</span><span class="st_h">&#8216;=&#8217;</span><span class="sy0">.</span><span class="re0">$username</span><span class="sy0">.</span><span class="st_h">&#8216;))&#8217;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Open LDAP connection</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><span class="br0">&#40;</span><span class="re0">$ds</span><span class="sy0">=</span><a href="http://www.php.net/ldap_connect"><span class="kw3">ldap_connect</span></a><span class="br0">&#40;</span><span class="re0">$content</span><span class="br0">&#91;</span><span class="st_h">&#8216;LDAPServer&#8217;</span><span class="br0">&#93;</span><span class="sy0">,</span><span class="re0">$content</span><span class="br0">&#91;</span><span class="st_h">&#8216;LDAPPort&#8217;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">return</span> <span class="kw4">false</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/ldap_set_option"><span class="kw3">ldap_set_option</span></a><span class="br0">&#40;</span><span class="re0">$ds</span><span class="sy0">,</span> LDAP_OPT_PROTOCOL_VERSION<span class="sy0">,</span> 3<span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Bind as the privilegied user</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><span class="br0">&#40;</span><span class="re0">$r</span><span class="sy0">=</span><a href="http://www.php.net/ldap_bind"><span class="kw3">ldap_bind</span></a><span class="br0">&#40;</span><span class="re0">$ds</span><span class="sy0">,</span><span class="re0">$content</span><span class="br0">&#91;</span><span class="st_h">&#8216;LDAPBindDN&#8217;</span><span class="br0">&#93;</span><span class="sy0">,</span><span class="re0">$content</span><span class="br0">&#91;</span><span class="st_h">&#8216;LDAPBindPassword&#8217;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">return</span> <span class="kw4">false</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// search for the user</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><span class="br0">&#40;</span><span class="re0">$r</span><span class="sy0">=</span><a href="http://www.php.net/ldap_search"><span class="kw3">ldap_search</span></a><span class="br0">&#40;</span> <span class="re0">$ds</span><span class="sy0">,</span> <span class="re0">$content</span><span class="br0">&#91;</span><span class="st_h">&#8216;LDAPBaseDN&#8217;</span><span class="br0">&#93;</span><span class="sy0">,</span> <span class="re0">$ldap_filter</span><span class="sy0">,</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="st0">&quot;uid&quot;</span><span class="sy0">,</span><span class="st0">&quot;cn&quot;</span><span class="sy0">,</span><span class="st0">&quot;localentryid&quot;</span><span class="sy0">,</span><span class="st0">&quot;userpassword&quot;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">DieWithFriendlyErrorMsg<span class="br0">&#40;</span> <span class="st0">&quot;Debug Error: Could not login user &#8216;&quot;</span> <span class="sy0">.</span> <span class="re0">$username</span> <span class="sy0">.</span> <span class="st0">&quot;&#8217;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="st0">&lt;strong&gt;Sessionarray&lt;/strong&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">&lt;pre&gt;&quot;</span> <span class="sy0">.</span> <a href="http://www.php.net/var_export"><span class="kw3">var_export</span></a><span class="br0">&#40;</span><span class="re0">$_SESSION</span><span class="sy0">,</span> <span class="kw4">true</span><span class="br0">&#41;</span> <span class="sy0">.</span> <span class="st0">&quot;&lt;/pre&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">&lt;strong&gt;Search Filter &lt;/strong&gt;: &quot;</span> <span class="sy0">.</span> <span class="re0">$ldap_filter</span> <span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">return</span> <span class="kw4">false</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$info</span> <span class="sy0">=</span> <a href="http://www.php.net/ldap_get_entries"><span class="kw3">ldap_get_entries</span></a><span class="br0">&#40;</span><span class="re0">$ds</span><span class="sy0">,</span> <span class="re0">$r</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><span class="re0">$info</span> <span class="sy0">||</span> <span class="re0">$info</span><span class="br0">&#91;</span><span class="st0">&quot;count&quot;</span><span class="br0">&#93;</span> <span class="sy0">!=</span> <span class="nu0">1</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">DieWithFriendlyErrorMsg<span class="br0">&#40;</span> <span class="st0">&quot;Debug Error: Could not login user &#8216;&quot;</span> <span class="sy0">.</span> <span class="re0">$username</span> <span class="sy0">.</span> <span class="st0">&quot;&#8217;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="st0">&lt;strong&gt;Sessionarray&lt;/strong&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">&lt;pre&gt;&quot;</span> <span class="sy0">.</span> <a href="http://www.php.net/var_export"><span class="kw3">var_export</span></a><span class="br0">&#40;</span><span class="re0">$_SESSION</span><span class="sy0">,</span> <span class="kw4">true</span><span class="br0">&#41;</span> <span class="sy0">.</span> <span class="st0">&quot;&lt;/pre&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">&lt;strong&gt;Search Filter &lt;/strong&gt;: &quot;</span> <span class="sy0">.</span> <span class="re0">$ldap_filter</span> <span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">return</span> <span class="kw4">false</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// now we have the user data. Do a bind to check for his password</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><span class="br0">&#40;</span><span class="re0">$r</span><span class="sy0">=</span><a href="http://www.php.net/ldap_bind"><span class="kw3">ldap_bind</span></a><span class="br0">&#40;</span> <span class="re0">$ds</span><span class="sy0">,</span> <span class="re0">$info</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st_h">&#8216;dn&#8217;</span><span class="br0">&#93;</span><span class="sy0">,</span><span class="re0">$password</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">return</span> <span class="kw4">false</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// for the moment when a user logs in from LDAP, create it in the DB.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// then the prefs and group management is done in the DB and we don&#8217;t rewrite the whole Loganalyzer code&#8230;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// check if the user already exist</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$sqlquery</span> <span class="sy0">=</span> <span class="st0">&quot;SELECT * FROM &quot;</span> <span class="sy0">.</span> DB_USERS <span class="sy0">.</span> <span class="st0">&quot; WHERE username = &#8216;&quot;</span> <span class="sy0">.</span> <span class="re0">$username</span> <span class="sy0">.</span> <span class="st0">&quot;&#8217;&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$result</span> <span class="sy0">=</span> DB_Query<span class="br0">&#40;</span><span class="re0">$sqlquery</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$myrow</span> <span class="sy0">=</span> DB_GetSingleRow<span class="br0">&#40;</span><span class="re0">$result</span><span class="sy0">,</span> <span class="kw4">true</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><a href="http://www.php.net/isset"><span class="kw3">isset</span></a><span class="br0">&#40;</span><span class="re0">$myrow</span><span class="br0">&#91;</span><span class="st_h">&#8216;is_admin&#8217;</span><span class="br0">&#93;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Create User</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$result</span> <span class="sy0">=</span> DB_Query<span class="br0">&#40;</span><span class="st0">&quot;INSERT INTO &quot;</span> <span class="sy0">.</span> DB_USERS <span class="sy0">.</span> <span class="st0">&quot; (id, username, password, is_admin, is_readonly) VALUES (&quot;</span><span class="sy0">.</span><span class="re0">$info</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st_h">&#8216;localentryid&#8217;</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="sy0">.</span><span class="st0">&quot;, &#8216;<span class="es4">$username</span>&#8216;, &#8216;rnd&quot;</span><span class="sy0">.</span><a href="http://www.php.net/md5"><span class="kw3">md5</span></a><span class="br0">&#40;</span><a href="http://www.php.net/mt_rand"><span class="kw3">mt_rand</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">.</span><span class="st0">&quot;rnd&quot;</span><span class="br0">&#41;</span><span class="sy0">.</span><span class="st0">&quot;&#8217;, 0, 1)&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">DB_FreeQuery<span class="br0">&#40;</span><span class="re0">$result</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$myrow</span><span class="br0">&#91;</span><span class="st_h">&#8216;is_admin&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$myrow</span><span class="br0">&#91;</span><span class="st_h">&#8216;last_login&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$myrow</span><span class="br0">&#91;</span><span class="st_h">&#8216;is_readonly&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="nu0">1</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$myrowfinal</span><span class="br0">&#91;</span><span class="st_h">&#8216;username&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="re0">$info</span><span class="br0">&#91;</span>0<span class="br0">&#93;</span><span class="br0">&#91;</span><span class="re0">$content</span><span class="br0">&#91;</span><span class="st_h">&#8216;LDAPUidAttribute&#8217;</span><span class="br0">&#93;</span><span class="br0">&#93;</span><span class="br0">&#91;</span>0<span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$myrowfinal</span><span class="br0">&#91;</span><span class="st_h">&#8216;password&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="st0">&quot;hidden&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$myrowfinal</span><span class="br0">&#91;</span><span class="st_h">&#8216;dn&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="re0">$info</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st_h">&#8216;dn&#8217;</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$myrowfinal</span><span class="br0">&#91;</span><span class="st_h">&#8216;ID&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="re0">$info</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st_h">&#8216;localentryid&#8217;</span><span class="br0">&#93;</span><span class="br0">&#91;</span>0<span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$myrowfinal</span><span class="br0">&#91;</span><span class="st_h">&#8216;is_admin&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="re0">$myrow</span><span class="br0">&#91;</span><span class="st_h">&#8216;is_admin&#8217;</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$myrowfinal</span><span class="br0">&#91;</span><span class="st_h">&#8216;is_readonly&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="re0">$myrow</span><span class="br0">&#91;</span><span class="st_h">&#8216;is_readonly&#8217;</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$myrowfinal</span><span class="br0">&#91;</span><span class="st_h">&#8216;last_login&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="re0">$myrow</span><span class="br0">&#91;</span><span class="st_h">&#8216;last_login&#8217;</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">return</span> <span class="re0">$myrowfinal</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Default return false</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">return</span> <span class="kw4">false</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> CheckUserLogin<span class="br0">&#40;</span> <span class="re0">$username</span><span class="sy0">,</span> <span class="re0">$password</span> <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">global</span> <span class="re0">$content</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// if auth LDAP is used, don&#8217;t check the DB yet</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span> <span class="br0">&#40;</span> GetConfigSetting<span class="br0">&#40;</span><span class="st0">&quot;LDAPUserLoginRequired&quot;</span><span class="sy0">,</span> <span class="st0">&quot;&quot;</span><span class="br0">&#41;</span> <span class="sy0">==</span> <span class="st0">&quot;true&quot;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$myrow</span> <span class="sy0">=</span> CheckLDAPUserLogin<span class="br0">&#40;</span> <span class="re0">$username</span><span class="sy0">,</span> <span class="re0">$password</span> <span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">else</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// TODO: SessionTime and AccessLevel check</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$md5pass</span> <span class="sy0">=</span> <a href="http://www.php.net/md5"><span class="kw3">md5</span></a><span class="br0">&#40;</span><span class="re0">$password</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$sqlquery</span> <span class="sy0">=</span> <span class="st0">&quot;SELECT * FROM &quot;</span> <span class="sy0">.</span> DB_USERS <span class="sy0">.</span> <span class="st0">&quot; WHERE username = &#8216;&quot;</span> <span class="sy0">.</span> <span class="re0">$username</span> <span class="sy0">.</span> <span class="st0">&quot;&#8217; and password = &#8216;&quot;</span> <span class="sy0">.</span> <span class="re0">$md5pass</span> <span class="sy0">.</span> <span class="st0">&quot;&#8217;&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$result</span> <span class="sy0">=</span> DB_Query<span class="br0">&#40;</span><span class="re0">$sqlquery</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$myrow</span> <span class="sy0">=</span> DB_GetSingleRow<span class="br0">&#40;</span><span class="re0">$result</span><span class="sy0">,</span> <span class="kw4">true</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
</div>
<p>The rest of the code is the same.<br />
Also I had to add some configuration entries in the config.php file</p>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;">
<ol>
<li class="li1">
<div class="de1"><span class="co1">// &#8212; LDAP auth options</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$CFG</span><span class="br0">&#91;</span><span class="st_h">&#8216;LDAPUserLoginRequired&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="kw4">true</span><span class="sy0">;</span> <span class="co1">// activate LDAP auth</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$CFG</span><span class="br0">&#91;</span><span class="st_h">&#8216;LDAPServer&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="st0">&quot;localhost&quot;</span><span class="sy0">;</span> <span class="co1">// LDAP server hostname or IP</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$CFG</span><span class="br0">&#91;</span><span class="st_h">&#8216;LDAPPort&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="nu0">389</span><span class="sy0">;</span> <span class="co1">// LDAP port, 389 or 636 for SSL</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$CFG</span><span class="br0">&#91;</span><span class="st_h">&#8216;LDAPBaseDN&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="st0">&quot;ou=my,o=ldap&quot;</span><span class="sy0">;</span> <span class="co1">// Base DN for LDAP search</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$CFG</span><span class="br0">&#91;</span><span class="st_h">&#8216;LDAPSearchFilter&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="st0">&quot;(objectclass=inetOrgPerson)&quot;</span><span class="sy0">;</span> <span class="co1">// search filter</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$CFG</span><span class="br0">&#91;</span><span class="st_h">&#8216;LDAPUidAttribute&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="st0">&quot;uid&quot;</span><span class="sy0">;</span> <span class="co1">// the LDAP attribute used in the search to find the user. ex : uid, cn</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$CFG</span><span class="br0">&#91;</span><span class="st_h">&#8216;LDAPBindDN&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="st0">&quot;cn=Manager,ou=my,o=ldap&quot;</span><span class="sy0">;</span> <span class="co1">// DN of the privileged user for the search</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$CFG</span><span class="br0">&#91;</span><span class="st_h">&#8216;LDAPBindPassword&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="st_h">&#8216;secret&#8217;</span><span class="sy0">;</span> <span class="co1">// Password of the privilegied user</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$CFG</span><span class="br0">&#91;</span><span class="st_h">&#8216;LDAPGroupAttribute&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="st_h">&#8216;member&#8217;</span><span class="sy0">;</span> <span class="co1">// attribute used to search for groups</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// &#8212;</span></div>
</li>
</ol>
</div>
</div>
<p>Here is the diff that you can put in a file and use the &laquo;&nbsp;patch&nbsp;&raquo; command to install.</p>
<div class="codesnip-container" >
<div class="diff codesnip" style="font-family:monospace;">
<ol>
<li class="li1">
<div class="de1">&#8212; include/functions_users_orig.php 2012-01-19 14:36:24.000000000 -0500</div>
</li>
<li class="li1">
<div class="de1"><span class="re4">+++ include/functions_users.php <span class="nu0">2012</span>-01-<span class="nu0">19</span> <span class="nu0">14</span>:<span class="nu0">33</span>:<span class="nu0">12.000000000</span> -0500</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re6">@@ -<span class="nu0">157</span>,<span class="nu0">16</span> +<span class="nu0">157</span>,<span class="nu0">83</span> @@</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re7">-function CheckUserLogin<span class="br0">&#40;</span> $username, $password <span class="br0">&#41;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+function CheckLDAPUserLogin<span class="br0">&#40;</span> $username, $password <span class="br0">&#41;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">global $content;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re7">- // TODO: SessionTime and AccessLevel check</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ $ldap_filter=&#8217;<span class="br0">&#40;</span>&amp;amp;&#8217;.$content<span class="br0">&#91;</span>&#8216;LDAPSearchFilter&#8217;<span class="br0">&#93;</span>.&#8217;<span class="br0">&#40;</span>&#8216;.$content<span class="br0">&#91;</span>&#8216;LDAPUidAttribute&#8217;<span class="br0">&#93;</span>.&#8217;=&#8217;.$username.&#8217;<span class="br0">&#41;</span><span class="br0">&#41;</span>&#8216;;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re7">- $md5pass = md5<span class="br0">&#40;</span>$password<span class="br0">&#41;</span>;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re7">- $sqlquery = &quot;SELECT * FROM &quot; . DB_USERS . &quot; WHERE username = &#8216;&quot; . $username . &quot;&#8217; and password = &#8216;&quot; . $md5pass . &quot;&#8217;&quot;;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re7">- $result = DB_Query<span class="br0">&#40;</span>$sqlquery<span class="br0">&#41;</span>;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re7">- $myrow = DB_GetSingleRow<span class="br0">&#40;</span>$result, true<span class="br0">&#41;</span>;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ // Open LDAP connection</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ if <span class="br0">&#40;</span>!<span class="br0">&#40;</span>$ds=ldap_connect<span class="br0">&#40;</span>$content<span class="br0">&#91;</span>&#8216;LDAPServer&#8217;<span class="br0">&#93;</span>,$content<span class="br0">&#91;</span>&#8216;LDAPPort&#8217;<span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ return false;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ <span class="br0">&#125;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ ldap_set_option<span class="br0">&#40;</span>$ds, LDAP_OPT_PROTOCOL_VERSION, 3<span class="br0">&#41;</span>;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ // Bind as the privilegied user</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ if <span class="br0">&#40;</span>!<span class="br0">&#40;</span>$r=ldap_bind<span class="br0">&#40;</span>$ds,$content<span class="br0">&#91;</span>&#8216;LDAPBindDN&#8217;<span class="br0">&#93;</span>,$content<span class="br0">&#91;</span>&#8216;LDAPBindPassword&#8217;<span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ return false;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ <span class="br0">&#125;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ // search for the user</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ if <span class="br0">&#40;</span>!<span class="br0">&#40;</span>$r=ldap_search<span class="br0">&#40;</span> $ds, $content<span class="br0">&#91;</span>&#8216;LDAPBaseDN&#8217;<span class="br0">&#93;</span>, $ldap_filter, array<span class="br0">&#40;</span>&quot;uid&quot;,&quot;cn&quot;,&quot;localentryid&quot;,&quot;userpassword&quot;<span class="br0">&#41;</span> <span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ DieWithFriendlyErrorMsg<span class="br0">&#40;</span> &quot;Debug Error: Could not login user &#8216;&quot; . $username . &quot;&#8217;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re1">&lt;strong&gt;Sessionarray&lt;/strong&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">&lt;pre&gt;&quot; . var_export<span class="br0">&#40;</span>$_SESSION, true<span class="br0">&#41;</span> . &quot;&lt;/pre&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">&lt;strong&gt;Search Filter &lt;/strong&gt;: &quot; . $ldap_filter <span class="br0">&#41;</span>;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ return false;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ <span class="br0">&#125;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ $info = ldap_get_entries<span class="br0">&#40;</span>$ds, $r<span class="br0">&#41;</span>;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ if <span class="br0">&#40;</span>!$info || $info<span class="br0">&#91;</span>&quot;count&quot;<span class="br0">&#93;</span> != <span class="nu0">1</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ DieWithFriendlyErrorMsg<span class="br0">&#40;</span> &quot;Debug Error: Could not login user &#8216;&quot; . $username . &quot;&#8217;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re1">&lt;strong&gt;Sessionarray&lt;/strong&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">&lt;pre&gt;&quot; . var_export<span class="br0">&#40;</span>$_SESSION, true<span class="br0">&#41;</span> . &quot;&lt;/pre&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">&lt;strong&gt;Search Filter &lt;/strong&gt;: &quot; . $ldap_filter <span class="br0">&#41;</span>;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ return false;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ <span class="br0">&#125;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ // now we have the user data. Do a bind to check for his password</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ if <span class="br0">&#40;</span>!<span class="br0">&#40;</span>$r=ldap_bind<span class="br0">&#40;</span> $ds, $info<span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#91;</span>&#8216;dn&#8217;<span class="br0">&#93;</span>,$password<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ return false;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ <span class="br0">&#125;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ // for the moment when a user logs in from LDAP, create it in the DB.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ // then the prefs and group management is done in the DB and we don&#8217;t rewrite the whole Loganalyzer code&#8230;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ // check if the user already exist</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ $sqlquery = &quot;SELECT * FROM &quot; . DB_USERS . &quot; WHERE username = &#8216;&quot; . $username . &quot;&#8217;&quot;;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ $result = DB_Query<span class="br0">&#40;</span>$sqlquery<span class="br0">&#41;</span>;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ $myrow = DB_GetSingleRow<span class="br0">&#40;</span>$result, true<span class="br0">&#41;</span>;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ if <span class="br0">&#40;</span>!isset<span class="br0">&#40;</span>$myrow<span class="br0">&#91;</span>&#8216;is_admin&#8217;<span class="br0">&#93;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ // Create User</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ $result = DB_Query<span class="br0">&#40;</span>&quot;INSERT INTO &quot; . DB_USERS . &quot; <span class="br0">&#40;</span>id, username, password, is_admin, is_readonly<span class="br0">&#41;</span> VALUES <span class="br0">&#40;</span>&quot;.$info<span class="br0">&#91;</span>0<span class="br0">&#93;</span><span class="br0">&#91;</span>&#8216;localentryid&#8217;<span class="br0">&#93;</span><span class="br0">&#91;</span>0<span class="br0">&#93;</span>.&quot;, &#8216;$username&#8217;, &#8216;rnd&quot;.md5<span class="br0">&#40;</span>mt_rand<span class="br0">&#40;</span><span class="br0">&#41;</span>.&quot;rnd&quot;<span class="br0">&#41;</span>.&quot;&#8217;, 0, 1<span class="br0">&#41;</span>&quot;<span class="br0">&#41;</span>;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ DB_FreeQuery<span class="br0">&#40;</span>$result<span class="br0">&#41;</span>;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ $myrow<span class="br0">&#91;</span>&#8216;is_admin&#8217;<span class="br0">&#93;</span> = <span class="nu0">0</span>;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ $myrow<span class="br0">&#91;</span>&#8216;last_login&#8217;<span class="br0">&#93;</span> = <span class="nu0">0</span>;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ $myrow<span class="br0">&#91;</span>&#8216;is_readonly&#8217;<span class="br0">&#93;</span> = <span class="nu0">1</span>;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ <span class="br0">&#125;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ $myrowfinal<span class="br0">&#91;</span>&#8216;username&#8217;<span class="br0">&#93;</span> = $info<span class="br0">&#91;</span>0<span class="br0">&#93;</span><span class="br0">&#91;</span>$content<span class="br0">&#91;</span>&#8216;LDAPUidAttribute&#8217;<span class="br0">&#93;</span><span class="br0">&#93;</span><span class="br0">&#91;</span>0<span class="br0">&#93;</span>;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ $myrowfinal<span class="br0">&#91;</span>&#8216;password&#8217;<span class="br0">&#93;</span> = &quot;hidden&quot;;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ $myrowfinal<span class="br0">&#91;</span>&#8216;dn&#8217;<span class="br0">&#93;</span> = $info<span class="br0">&#91;</span>0<span class="br0">&#93;</span><span class="br0">&#91;</span>&#8216;dn&#8217;<span class="br0">&#93;</span>;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ $myrowfinal<span class="br0">&#91;</span>&#8216;ID&#8217;<span class="br0">&#93;</span> = $info<span class="br0">&#91;</span>0<span class="br0">&#93;</span><span class="br0">&#91;</span>&#8216;localentryid&#8217;<span class="br0">&#93;</span><span class="br0">&#91;</span>0<span class="br0">&#93;</span>;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ $myrowfinal<span class="br0">&#91;</span>&#8216;is_admin&#8217;<span class="br0">&#93;</span> = $myrow<span class="br0">&#91;</span>&#8216;is_admin&#8217;<span class="br0">&#93;</span>;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ $myrowfinal<span class="br0">&#91;</span>&#8216;is_readonly&#8217;<span class="br0">&#93;</span> = $myrow<span class="br0">&#91;</span>&#8216;is_readonly&#8217;<span class="br0">&#93;</span>;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ $myrowfinal<span class="br0">&#91;</span>&#8216;last_login&#8217;<span class="br0">&#93;</span> = $myrow<span class="br0">&#91;</span>&#8216;last_login&#8217;<span class="br0">&#93;</span>;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ return $myrowfinal;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ // Default return false</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ return false;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+<span class="br0">&#125;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+function CheckUserLogin<span class="br0">&#40;</span> $username, $password <span class="br0">&#41;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+<span class="br0">&#123;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ global $content;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ // if auth LDAP is used, don&#8217;t check the DB yet</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ if <span class="br0">&#40;</span> GetConfigSetting<span class="br0">&#40;</span>&quot;LDAPUserLoginRequired&quot;, &quot;&quot;<span class="br0">&#41;</span> == &quot;true&quot;<span class="br0">&#41;</span> <span class="br0">&#123;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ $myrow = CheckLDAPUserLogin<span class="br0">&#40;</span> $username, $password <span class="br0">&#41;</span>;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ <span class="br0">&#125;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ else <span class="br0">&#123;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ // TODO: SessionTime and AccessLevel check</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ $md5pass = md5<span class="br0">&#40;</span>$password<span class="br0">&#41;</span>;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ $sqlquery = &quot;SELECT * FROM &quot; . DB_USERS . &quot; WHERE username = &#8216;&quot; . $username . &quot;&#8217; and password = &#8216;&quot; . $md5pass . &quot;&#8217;&quot;;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ $result = DB_Query<span class="br0">&#40;</span>$sqlquery<span class="br0">&#41;</span>;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ $myrow = DB_GetSingleRow<span class="br0">&#40;</span>$result, true<span class="br0">&#41;</span>;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re8">+ <span class="br0">&#125;</span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">// The admin field must be set!</div>
</li>
<li class="li1">
<div class="de1">if <span class="br0">&#40;</span> isset<span class="br0">&#40;</span>$myrow<span class="br0">&#91;</span>&#8216;is_admin&#8217;<span class="br0">&#93;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span></div>
</li>
</ol>
</div>
</div>
<p>For the SQL of the logs tables :</p>
<div class="codesnip-container" >
<div class="sql codesnip" style="font-family:monospace;">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">CREATE</span> <span class="kw1">TABLE</span> <span class="st0">`logs`</span> <span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">`host`</span> varchar<span class="br0">&#40;</span>128<span class="br0">&#41;</span> collate utf8_unicode_ci <span class="kw1">DEFAULT</span> <span class="kw1">NULL</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">`facility`</span> varchar<span class="br0">&#40;</span>10<span class="br0">&#41;</span> collate utf8_unicode_ci <span class="kw1">DEFAULT</span> <span class="kw1">NULL</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">`priority`</span> varchar<span class="br0">&#40;</span>10<span class="br0">&#41;</span> collate utf8_unicode_ci <span class="kw1">DEFAULT</span> <span class="kw1">NULL</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">`level`</span> varchar<span class="br0">&#40;</span>10<span class="br0">&#41;</span> collate utf8_unicode_ci <span class="kw1">DEFAULT</span> <span class="kw1">NULL</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">`tag`</span> varchar<span class="br0">&#40;</span>10<span class="br0">&#41;</span> collate utf8_unicode_ci <span class="kw1">DEFAULT</span> <span class="kw1">NULL</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">`datetime`</span> datetime <span class="kw1">DEFAULT</span> <span class="kw1">NULL</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">`program`</span> varchar<span class="br0">&#40;</span>256<span class="br0">&#41;</span> collate utf8_unicode_ci <span class="kw1">DEFAULT</span> <span class="kw1">NULL</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">`msg`</span> text collate utf8_unicode_ci<span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">`seq`</span> bigint<span class="br0">&#40;</span>20<span class="br0">&#41;</span> <span class="kw1">UNSIGNED</span> <span class="kw1">NOT</span> <span class="kw1">NULL</span> <span class="kw1">AUTO_INCREMENT</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">`counter`</span> int<span class="br0">&#40;</span>11<span class="br0">&#41;</span> <span class="kw1">NOT</span> <span class="kw1">NULL</span> <span class="kw1">DEFAULT</span> <span class="st0">&#8217;1&#8242;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">`fo`</span> datetime <span class="kw1">DEFAULT</span> <span class="kw1">NULL</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">`lo`</span> datetime <span class="kw1">DEFAULT</span> <span class="kw1">NULL</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">`processid`</span> char<span class="br0">&#40;</span>8<span class="br0">&#41;</span> collate utf8_unicode_ci <span class="kw1">DEFAULT</span> <span class="kw1">NULL</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">PRIMARY</span> <span class="kw1">KEY</span> <span class="br0">&#40;</span><span class="st0">`seq`</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">KEY</span> <span class="st0">`datetime`</span> <span class="br0">&#40;</span><span class="st0">`datetime`</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">KEY</span> <span class="st0">`priority`</span> <span class="br0">&#40;</span><span class="st0">`priority`</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">KEY</span> <span class="st0">`facility`</span> <span class="br0">&#40;</span><span class="st0">`facility`</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">KEY</span> <span class="st0">`program`</span> <span class="br0">&#40;</span><span class="st0">`program`</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">KEY</span> <span class="st0">`host`</span> <span class="br0">&#40;</span><span class="st0">`host`</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">KEY</span> <span class="st0">`host_datetime`</span> <span class="br0">&#40;</span><span class="st0">`host`</span><span class="sy0">,</span><span class="st0">`datetime`</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#41;</span> ENGINE<span class="sy0">=</span>MyISAM <span class="kw1">AUTO_INCREMENT</span><span class="sy0">=</span>1339013 <span class="kw1">DEFAULT</span> CHARSET<span class="sy0">=</span>utf8 COLLATE<span class="sy0">=</span>utf8_unicode_ci;</div>
</li>
</ol>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.lecentre.net/blog/archives/1328/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Steadycam l&#8217;Aigle HDV : premiers essais</title>
		<link>http://www.lecentre.net/blog/archives/1114</link>
		<comments>http://www.lecentre.net/blog/archives/1114#comments</comments>
		<pubDate>Sun, 25 Jul 2010 19:27:01 +0000</pubDate>
		<dc:creator>Prune</dc:creator>
				<category><![CDATA[Non classé]]></category>

		<guid isPermaLink="false">http://www.lecentre.net/blog/?p=1114</guid>
		<description><![CDATA[Voila les vidéo prises hier soir, dans mon parking, avec mon ami Jean-Marc, président du Groupe13. Materiel : Steadycam (stabilisateur) l&#8217;Aigle HDV Camera Sony PMW-EX1 Kit 32mm Shoot35 SG Blade monture Nikon Optique Samyang 14mm f2.8 Chaussures Timberland Pro Titane garantie confort 30 jours satisfait ou remboursé ! La mise au point n&#8217;a pas été [...]]]></description>
			<content:encoded><![CDATA[<p>Voila les vidéo prises hier soir, dans mon parking, avec mon ami Jean-Marc, président du <a href="http://www.groupe13.fr">Groupe13</a>.</p>
<p>Materiel :</p>
<ul>
<li> Steadycam (stabilisateur) l&#8217;Aigle HDV</li>
<li>Camera Sony PMW-EX1</li>
<li>Kit 32mm Shoot35 SG Blade monture Nikon</li>
<li>Optique Samyang 14mm f2.8</li>
<li>Chaussures Timberland Pro Titane garantie confort 30 jours satisfait ou remboursé !</li>
</ul>
<p>La mise au point n&#8217;a pas été faite et il y a peu de lumière. L&#8217;optique est à pleine ouverture (f2.8) et la camera à +6 db. L&#8217;enregistrement est fait en XDCAM-EX 1080p25. Le rendu en H264. Aucun etalonnage n&#8217;est fait&#8230; la balance des blancs n&#8217;était pas bonne, mais bon, pas le temps&#8230; On essaye juste de stabiliser là, c&#8217;est déjà pas mal !</p>
<p><object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=13624725&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=13624725&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object>
<p><a href="http://vimeo.com/13624725">EX1 + SG-Blade + 14mm on steadycam Aigle HDV (test 1)</a></p>
<p><object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=13624960&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=13624960&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object>
<p><a href="http://vimeo.com/13624960">EX1 + SG-Blade + 14mm on steadycam Aigle HDV (test 2)</a></p>
<p><object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=13625077&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=13625077&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object>
<p><a href="http://vimeo.com/13625077">EX1 + SG-Blade + 14mm on steadycam Aigle HDV (test 3)</a> </p>
<p><object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=13625100&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=13625100&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object>
<p><a href="http://vimeo.com/13625100">EX1 + SG-Blade + 14mm on steadycam Aigle HDV (test 4)</a></p>
<p><object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=13625102&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=13625102&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object>
<p><a href="http://vimeo.com/13625102">EX1 + SG-Blade + 14mm on steadycam Aigle HDV (test 5)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.lecentre.net/blog/archives/1114/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sending SMS from Nagios &#8211; API and script update</title>
		<link>http://www.lecentre.net/blog/archives/1020</link>
		<comments>http://www.lecentre.net/blog/archives/1020#comments</comments>
		<pubDate>Fri, 09 Jul 2010 16:52:25 +0000</pubDate>
		<dc:creator>Prune</dc:creator>
				<category><![CDATA[Non classé]]></category>

		<guid isPermaLink="false">http://www.lecentre.net/blog/?p=1020</guid>
		<description><![CDATA[It seems that today, the old API v1 from smsenvoi.com is not working anymore&#8230; In fact, I don&#8217;t know since when. I just emailed the support and hope to get an answer soon. As sending an SMS from their website was still working, I decided to try the new API v2. This is not a [...]]]></description>
			<content:encoded><![CDATA[<p>It seems that today, the old API v1 from smsenvoi.com is not working anymore&#8230; In fact, I don&#8217;t know since when.<br />
I just emailed the support and hope to get an answer soon.</p>
<p>As sending an SMS from their website was still working, I decided to try the new API v2.<br />
This is not a real change, they mostly renamed some of the fields, replaced the password by an API key, do you can give it to some other people without having them gain access to your admin interface, and the API answer is now in JSON format instead of &laquo;&nbsp;OK&nbsp;&raquo; and &laquo;&nbsp;KO&nbsp;&raquo;.</p>
<p>I just changed the script so new parameters are set. I still don&#8217;t deal with the answer.</p>
<p>See attached file  <a href="http://www.lecentre.net/blog/index.php?dl=sendSMSv2.py">sendSMSv2.py</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.lecentre.net/blog/archives/1020/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Casque moto Caberg V2X Carbon Matt</title>
		<link>http://www.lecentre.net/blog/archives/785</link>
		<comments>http://www.lecentre.net/blog/archives/785#comments</comments>
		<pubDate>Wed, 22 Jul 2009 18:45:10 +0000</pubDate>
		<dc:creator>Prune</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Non classé]]></category>

		<guid isPermaLink="false">http://www.lecentre.net/blog/?p=785</guid>
		<description><![CDATA[Je me suis rendu compte dernièrement que mon casque moto, un Shoei Z1, avait bien 4, sinon 5 ans. La mousse est un peu molle, sale, la visière est complètement rayé. Le casque, tombé plusieurs fois, fait triste mine. Du coup, pourquoi ne pas profiter des soldes pour en changer ? Après un rapide tour [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-819" title="logo" src="http://www.lecentre.net/blog/wp-content/uploads/2009/07/logo.jpg" alt="logo" width="159" height="76" />Je me suis rendu compte dernièrement que mon casque moto, un Shoei Z1, avait bien 4, sinon 5 ans. La mousse est un peu molle, sale, la visière est complètement rayé. Le casque, tombé plusieurs fois, fait triste mine.<br />
Du coup, pourquoi ne pas profiter des soldes pour en changer ?<br />
Après un rapide tour d&#8217;horizon, et hormis le nouveau Shoei qui va sortir en septembre&#8230; rien de bien nouveau.</p>
<p>Changer de casque, OK, mais au moins que ce soit pour un truc mieux. Effectivement le Z1 a simplement disparu de la gamme, sans être remplacé !</p>
<p>Au final, les casques en lignes que j&#8217;ai sélectionné sont :</p>
<li><a href="http://www.icasque.com/Casque-moto/Integral/S1-Pro-Noir-Mat/">Schuberth S1 Pro (noir)</a> : parfait, mais vieux, lourd, large et CHER ! (510€ minimum)</li>
<li><a href="http://www.icasque.com/Casque-moto/Integral/EXO-1000-Apollo-Noir-Mat/">Scorpio EXO 1000</a> : une marque que je ne connaissait pas. Un bon casque, qui semble silencieux, avec une visière teinté retractable et tout&#8230; mais lourd ! plus de 1.6Kg !!!!</li>
<li><a href="http://www.caberg-helm.com/products.aspx?p=0500">Caberg V2X Carbon</a> : la révélation !</li>
<p>Au final, seul le Schuberth existait en solde (470€ quand même), mais dans des couleurs&#8230; heuu&#8230; pas pour moi quoi.<br />
Comme on peut le comprendre c&#8217;est le Caberg que j&#8217;ai choisis.<br />
Après une brève recherche sur le net, le prix est a 399€ (245 ou 270€ HT prix revendeur). Pas donné, mais pas si cher que ça pour les fonctionnalités.<br />
Meme si certains sites en ligne n&#8217;ont aucun problème à échanger le casque (il faut juste payer la livraison retour), je ne vais pas acheter un casque sans l&#8217;avoir essayé ?<br />
En route vers les magasins parisiens. Et la&#8230;. rien !<br />
Personne n&#8217;a ce casque. Ou pire, personne ne sait qu&#8217;il existe !<br />
Je me demande bien ce que fait Caberg.</p>
<p>C&#8217;est finalement chez <a href="http://www.la-casquerie.com/">La Casquerie</a>, magasin proche de bastille, qu&#8217;un vendeur a pris le temps de me répondre :</p>
<blockquote><p>Caberg c&#8217;est du bas de gamme, seulement des coques en plastic, c&#8217;est cheap, pas fait pour une grosse moto&#8230;</p></blockquote>
<blockquote><p>Et le V2X Carbon c&#8217;est comment ?</p></blockquote>
<blockquote><p>Le quoi ?</p></blockquote>
<blockquote><p>Le Haut de gamme de Caberg, un casque en carbone, toutes options !</p></blockquote>
<p>Et bien non, franchement, même en ayant la brochure sur l&#8217;étagère, personne ne connait ce casque <img src='http://www.lecentre.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Le vendeur a heureusement bien voulu en commander un (deux en fait, un XS et un S, au cas ou) contre un acompte de 50€. Affaire dealé le samedi et le mercredi suivant, dring dring, votre casque est la. Super le service !<br />
Voila, en photo, ce qu&#8217;il en est :</p>
<p><a href="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_0053.png"><img class="alignnone size-medium wp-image-788" title="IMG_0053" src="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_0053-250x187.png" alt="IMG_0053" width="225" height="168" /></a> <a href="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_0054.JPG"><img class="alignnone size-medium wp-image-789" title="IMG_0054" src="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_0054-250x187.jpg" alt="IMG_0054" width="225" height="168" /></a> <a href="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_0055.JPG"><img class="alignnone size-medium wp-image-790" title="IMG_0055" src="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_0055-250x187.jpg" alt="IMG_0055" width="225" height="168" /></a></p>
<p>Première chose, confirmé par le vendeur : le casque est léger comme une plume. On a l&#8217;impression que la boite est vide !<br />
On voit aussi la housse de protection, le &laquo;&nbsp;pinlock&nbsp;&raquo;, un écran à coller à l&#8217;intérieur de la visière et qui empêche la buée de cacher la route. A faire soi-même, très facilement. On trouve aussi un peu d&#8217;huile pour l&#8217;entretiens des joins d&#8217;étanchéité de la visière et des auto-collants réfléchissants 3M a mettre sur le casque, même si je n&#8217;ai pas trouvé ou.</p>
<p><a href="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_0056.JPG"><img class="alignnone size-medium wp-image-791" title="IMG_0056" src="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_0056-250x187.jpg" alt="IMG_0056" width="225" height="168" /></a> <a href="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_0057.JPG"><img class="alignnone size-medium wp-image-792" title="IMG_0057" src="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_0057-250x187.jpg" alt="IMG_0057" width="225" height="168" /></a> <a href="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_0060.JPG"><img class="alignnone size-medium wp-image-794" title="IMG_0060" src="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_0060-250x187.jpg" alt="IMG_0060" width="225" height="168" /></a><br />
Carbone mate, visière &laquo;&nbsp;lunettes de soleil&nbsp;&raquo;&#8230; tout ce qu&#8217;il faut</p>
<p><a href="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_0058.JPG"></a><a href="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_00582.png"><img class="alignnone size-medium wp-image-798" title="IMG_00582" src="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_00582-187x250.png" alt="IMG_00582" width="187" height="250" /></a> <a href="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_0059.JPG"></a><a href="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_0059.png"><img class="alignnone size-medium wp-image-799" title="IMG_0059" src="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_0059-187x250.png" alt="IMG_0059" width="187" height="250" /></a></p>
<p><a href="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_0061.png"><img class="alignnone size-medium wp-image-800" title="IMG_0061" src="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_0061-250x187.png" alt="IMG_0061" width="250" height="187" /></a> <a href="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_0062.png"><img class="alignnone size-medium wp-image-801" title="IMG_0062" src="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_0062-250x187.png" alt="IMG_0062" width="250" height="187" /></a><br />
Le carbone a des imperfections &laquo;&nbsp;esthétique&nbsp;&raquo;. Sur la droite, la bavette, courte, mais aérée.</p>
<p><a href="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_0063.png"><img class="alignnone size-medium wp-image-802" title="IMG_0063" src="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_0063-187x250.png" alt="IMG_0063" width="187" height="250" /></a> <a href="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_0066.png"><img class="alignnone size-medium wp-image-803" title="IMG_0066" src="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_0066-250x187.png" alt="IMG_0066" width="250" height="187" /></a> <a href="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_0067.png"><img class="alignnone size-medium wp-image-804" title="IMG_0067" src="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_0067-187x250.png" alt="IMG_0067" width="187" height="250" /></a><br />
Les aérations sont larges, mais peu épaisses&#8230; Cela fera plus ou moins de bruit ?</p>
<p><a href="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_0069.png"><img class="alignnone size-medium wp-image-806" title="IMG_0069" src="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_0069-250x187.png" alt="IMG_0069" width="200" height="150" /></a> <a href="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_0070.png"><img class="alignnone size-medium wp-image-807" title="IMG_0070" src="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_0070-250x187.png" alt="IMG_0070" width="200" height="150" /></a> <a href="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_0071.png"><img class="alignnone size-medium wp-image-808" title="IMG_0071" src="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_0071-250x187.png" alt="IMG_0071" width="200" height="150" /></a><br />
En comparaison, le V2X est de la même taille que le Shoei. Un peu plus pointu sur le devant.</p>
<p><a href="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_0073.png"><img class="alignnone size-medium wp-image-809" title="IMG_0073" src="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_0073-187x250.png" alt="IMG_0073" width="187" height="250" /></a> <a href="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_0084.png"><img class="alignnone size-medium wp-image-810" title="IMG_0084" src="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_0084-250x187.png" alt="IMG_0084" width="250" height="187" /></a> <a href="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_0074.png"><img class="alignnone size-medium wp-image-811" title="IMG_0074" src="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_0074-187x250.png" alt="IMG_0074" width="187" height="250" /></a><br />
Le pinlock &laquo;&nbsp;anti-buée&nbsp;&raquo; avec la notice, une fois monté sur la visière et le &laquo;&nbsp;clip&nbsp;&raquo; qui permet a la visière de se bloquer. A noter que le mécanisme de la visière est plutôt dure, ce qui devrait éviter a cette dernière de s&#8217;ouvrir inopinément.</p>
<p><a href="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_0085.png"><img class="alignnone size-medium wp-image-812" title="IMG_0085" src="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_0085-250x187.png" alt="IMG_0085" width="250" height="187" /></a> <a href="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_0086.png"><img class="alignnone size-medium wp-image-817" title="IMG_0086" src="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_0086-250x187.png" alt="IMG_0086" width="250" height="187" /></a> <a href="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_0075.png"><img class="alignnone size-medium wp-image-813" title="IMG_0075" src="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_0075-187x250.png" alt="IMG_0075" width="187" height="250" /></a><br />
Pour enlever la visière, il faut défaire deux grosses vis. Une pièce de 1€ remplace largement un tournevis. Ensuite, on peut enlever la visière. Étrangement le système de cran d&#8217;ouverture en plastic n&#8217;est, à ce moment la, plus solidaire du casque.<br />
Sur la deuxième photo, sur la droite, on note le &laquo;&nbsp;levier&nbsp;&raquo; qui permet d&#8217;abaisser le pare-soleil. Il se trouve sur le coté gauche du casque. Sur la 3eme photo on voit la boucle double-D et le &laquo;&nbsp;protège menton&nbsp;&raquo;.</p>
<p><a href="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_0078.png"><img class="alignnone size-medium wp-image-816" title="IMG_0078" src="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_0078-187x250.png" alt="IMG_0078" width="187" height="250" /></a> <a href="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_0077.png"><img class="alignnone size-medium wp-image-815" title="IMG_0077" src="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_0077-187x250.png" alt="IMG_0077" width="187" height="250" /></a> <a href="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_0076.png"><img class="alignnone size-medium wp-image-814" title="IMG_0076" src="http://www.lecentre.net/blog/wp-content/uploads/2009/07/IMG_0076-187x250.png" alt="IMG_0076" width="187" height="250" /></a><br />
L&#8217;intérieur du casque. Entièrement démontable. Un peu raide pour le moment mais je pense qu&#8217;il s&#8217;assouplira avec le temps. Notez le coussin rouge, au niveau des oreilles, avec un logo qui semble dire qu&#8217;il est spécialement fait pour laisser la place au branches de lunettes.</p>
<p>Sur la tête, le casque est léger, presque comme si l&#8217;on ne portait rien. Il craque un peu, peut-être le temps que tout soit en place. Mon vieux Shoei le fait aussi&#8230;.<br />
Le casque est un peu rigide, mais comme je le disais, il est neuf.</p>
<p>Les tests de &laquo;&nbsp;roulage&nbsp;&raquo; dans un prochain article, des que le temps et mes horaires le permettent.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lecentre.net/blog/archives/785/feed</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>Flashing an Amino Set Top Box</title>
		<link>http://www.lecentre.net/blog/archives/694</link>
		<comments>http://www.lecentre.net/blog/archives/694#comments</comments>
		<pubDate>Tue, 24 Feb 2009 21:18:39 +0000</pubDate>
		<dc:creator>Prune</dc:creator>
				<category><![CDATA[IPTV]]></category>
		<category><![CDATA[Non classé]]></category>
		<category><![CDATA[UNIX]]></category>

		<guid isPermaLink="false">http://www.lecentre.net/blog/?p=694</guid>
		<description><![CDATA[Amino company and resellers are really quiet about all the possibilities of the product. I made a post some time ago about configuring the Amino to boot with DHCP and get the config through this or through DHCP. This post was really popular and people began to ask me for firmware and informations on how [...]]]></description>
			<content:encoded><![CDATA[<p>Amino company and resellers are really quiet about all the possibilities of the product.<br />
I made a post some time ago about configuring the Amino to boot with DHCP and get the config through this or through DHCP.<br />
This post was really popular and people began to ask me for firmware and informations on how to upgrade. Of course, I can&#8217;t provide anything like firmware. My reseller here is France is OK to sell it for 10€ for 4 Amino stb&#8230; Or you can find it somewhere on Internet. Please, don&#8217;t ask for it, I don&#8217;t have the latest nor the Opera firmware.</p>
<p><span id="more-694"></span>My last reseller sent me the 110 firmware while I had some dead STB. This is what I will use for this tutoriel.</p>
<p>So, the firmware comes as a tar file. Mine is <em>A110-0.15.1-fresco-ami_wm-euro-subs.tar</em> .</p>
<p>First, you need to create some directories. Please, note I&#8217;m actualy doing this on a PC running Ubuntu 7.10. The ~ stands for your home directory. It can be anything else you want, just change the paths accordinately. Of course, you don&#8217;t need to install things in /usr/local AT ALL, which is a really bad way to do things anyway.</p>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;">
<ol>
<li class="li1">
<div class="de1"><span class="kw3">cd</span>  ~</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">mkdir</span> amino</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">cd</span> amino</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">mkdir</span> keys releases releases<span class="sy0">/</span>A110 images</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">cd</span> releases<span class="sy0">/</span>A110</div>
</li>
</ol>
</div>
</div>
<p>Now you can untar your image. Mine is just a .tar but yours could be a .tgz or .tar.gz. Then use option zxvf instead of xvf :</p>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">tar</span> xvf ..<span class="sy0">/</span>..<span class="sy0">/</span>..<span class="sy0">/</span>A110-0.15.1-fresco-ami_wm-euro-subs.tar</div>
</li>
</ol>
</div>
</div>
<p>This will create a directory <em>0.15.1-A110-fresco-ami_wm-subs-1</em>. Go into it :</p>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;">
<ol>
<li class="li1">
<div class="de1"><span class="kw3">cd</span> 0.15.1-A110-fresco-ami_wm-subs-<span class="nu0">1</span></div>
</li>
</ol>
</div>
</div>
<p>You can now create and sign the two files you need for an upgrade : a bootstrap and an image.</p>
<h1>The bootstrap</h1>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;">
<ol>
<li class="li1">
<div class="de1"><span class="kw3">cd</span> bootstrap</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">export</span> <span class="re2">CUSTOMER_KEY</span>=<span class="sy0">`</span><span class="kw3">pwd</span><span class="sy0">`/</span>..<span class="sy0">/</span>utils<span class="sy0">/</span>keys<span class="sy0">/</span>amino<span class="sy0">/</span>KEY.private</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">export</span> <span class="re2">PATH</span>=<span class="re1">$PATH</span>:<span class="sy0">`</span><span class="kw3">pwd</span><span class="sy0">`/</span>..<span class="sy0">/</span>utils</div>
</li>
<li class="li1">
<div class="de1">.<span class="sy0">/</span>signbootstrap</div>
</li>
</ol>
</div>
</div>
<p>The password is &laquo;&nbsp;<em>markskey</em>&laquo;&nbsp;. You will get a OK message and a new file : <em>bootstrap.signed</em></p>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;">
<ol>
<li class="li1">
<div class="de1">Please enter passphrase <span class="kw1">for</span> <span class="sy0">/</span>home<span class="sy0">/</span>prune<span class="sy0">/</span>amino<span class="sy0">/</span>releases<span class="sy0">/</span>A110<span class="sy0">/</span>0.15.1-A110-fresco-ami_wm-subs-<span class="nu0">1</span><span class="sy0">/</span>utils<span class="sy0">/</span>keys<span class="sy0">/</span>amino<span class="sy0">/</span>KEY.private: Signed image written to <span class="st_h">&#8216;bootstrap.signed&#8217;</span></div>
</li>
<li class="li1">
<div class="de1">Multicast bootstrap image signed successfully: bootstrap.signed</div>
</li>
</ol>
</div>
</div>
<p>Copy this new file to the image directory :</p>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">cp</span> bootstrap.signed ~<span class="sy0">/</span>amino<span class="sy0">/</span>images</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">cd</span> ..</div>
</li>
</ol>
</div>
</div>
<h1>The BONUS</h1>
<p>Before we create the signed image of the real OS, I will show you how you can customize the boot procedure.<br />
In the upgradeimage/imagecomponents directory lies all the files that will be packaged in the OS. Of course you can add few files. Don&#8217;t oversize the image or it won&#8217;t be able to be used.<br />
Inside this directory you will find a splash.gif image file.<br />
<img class="alignleft size-full wp-image-695" title="splash" src="http://www.lecentre.net/blog/wp-content/uploads/2009/02/splash.gif" alt="splash" width="251" height="83" /><br />
You can replace it by any GIF image. Don&#8217;t use an image bigger than the TV resolution, around 720&#215;480. Replace the image but keep the same name ! Also, I think you have a limited number of possible colors, and the first color (?) will also be used for the backgroud around the image (can you confirm that ?)<br />
So, have fun, change files, pre-program you amino by changing the config files&#8230; play around <img src='http://www.lecentre.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h1>The OS Image</h1>
<p>If you have closed your terminal, re-set the CUSTOMER_KEY and PATH variables as above.<br />
Now create and sign the image. As suggested, if you are making an Opera firmware upgrade, une -z for compressing the image</p>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;">
<ol>
<li class="li1">
<div class="de1">.<span class="sy0">/</span>signupgradeimage <span class="re5">-z</span> 0</div>
</li>
<li class="li1">
<div class="de1">Amino signupgradeimage Version : 1.42 $</div>
</li>
<li class="li1">
<div class="de1">Using DI of 0</div>
</li>
<li class="li1">
<div class="de1">Please enter passphrase <span class="kw1">for</span> <span class="sy0">/</span>home<span class="sy0">/</span>prune<span class="sy0">/</span>amino<span class="sy0">/</span>releases<span class="sy0">/</span>A110<span class="sy0">/</span>0.15.1-A110-fresco-ami_wm-subs-1<span class="sy0">/</span>utils<span class="sy0">/</span>keys<span class="sy0">/</span>amino<span class="sy0">/</span>KEY.private:</div>
</li>
<li class="li1">
<div class="de1">0</div>
</li>
<li class="li1">
<div class="de1">Generating flash contents list</div>
</li>
<li class="li1">
<div class="de1">&#8230;.</div>
</li>
<li class="li1">
<div class="de1">FS created with packetsize of 4096</div>
</li>
<li class="li1">
<div class="de1">Warning: FS created using default values <span class="br0">&#91;</span><span class="re2">serialNumber</span>=1, <span class="re2">dirsPerCycle</span>=128<span class="br0">&#93;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">cp</span> mc2.mcfs ~<span class="sy0">/</span>amino<span class="sy0">/</span>images<span class="sy0">/</span></div>
</li>
</ol>
</div>
</div>
<h1>The DHCP Server</h1>
<p>Yes, you will need one&#8230; But you already have my previous post on this : <a title="amino DHCP" href="http://www.lecentre.net/blog/archives/119" target="_blank">http://www.lecentre.net/blog/archives/119<br />
</a>See my config below as I finaly found out that my first config was &laquo;&nbsp;<em>wrong</em>&laquo;&nbsp;</p>
<h1>The Multicast Server</h1>
<p>This server can be anything&#8230; the one provided with the image or anyone, like VLC (yes, the video player&#8230;).<br />
Go in the server directory and edit the</p>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;">
<ol>
<li class="li1">
<div class="de1"><span class="kw3">cd</span> ~<span class="sy0">/</span>amino<span class="sy0">/</span>releases<span class="sy0">/</span>A110<span class="sy0">/</span>0.15.1-A110-fresco-ami_wm-subs-1<span class="sy0">/</span>server</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">vi</span> mcastbootd.conf</div>
</li>
</ol>
</div>
</div>
<p>Match the <em>&lt;mcast address&gt;</em> and <em>&lt;port number&gt;</em> with the ones from the DHCPD config file :<br />
Here is my file :</p>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;">
<ol>
<li class="li1">
<div class="de1"><span class="br0">&#91;</span>Server<span class="br0">&#93;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re2">LogLevel</span>=4</div>
</li>
<li class="li1">
<div class="de1"><span class="re2">MulticastTTL</span>=1</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#91;</span>Image bootstrap.signed<span class="br0">&#93;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re2">MulticastIPAddress</span>=239.255.230.52</div>
</li>
<li class="li1">
<div class="de1"><span class="re2">MulticastUDPPort</span>=11111</div>
</li>
<li class="li1">
<div class="de1"><span class="re2">FileName</span>=bootstrap.signed</div>
</li>
<li class="li1">
<div class="de1"><span class="re2">Description</span>=Linux bootstrap image</div>
</li>
<li class="li1">
<div class="de1"><span class="re2">ImageType</span>=1</div>
</li>
<li class="li1">
<div class="de1"><span class="re2">SerialNumber</span>=1</div>
</li>
<li class="li1">
<div class="de1"><span class="re2">PacketSize</span>=1456</div>
</li>
<li class="li1">
<div class="de1"><span class="re2">CycleTime</span>=0</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#91;</span>Filesystem mc2<span class="br0">&#93;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re2">MulticastIPAddress</span>=239.255.230.53</div>
</li>
<li class="li1">
<div class="de1"><span class="re2">MulticastUDPPort</span>=11111</div>
</li>
<li class="li1">
<div class="de1"><span class="re2">ImageName</span>=mc2</div>
</li>
<li class="li1">
<div class="de1"><span class="re2">Description</span>=upgrade filesystem</div>
</li>
<li class="li1">
<div class="de1"><span class="re2">SerialNumber</span>=2</div>
</li>
<li class="li1">
<div class="de1"><span class="re2">DirsPerCycle</span>=128</div>
</li>
<li class="li1">
<div class="de1"><span class="re2">DataRate</span>=256</div>
</li>
<li class="li1">
<div class="de1"><span class="re2">CycleTime</span>=<span class="nu0">0</span></div>
</li>
</ol>
</div>
</div>
<h1>Start the upgrade</h1>
<p>Now you are ready to start. Go in the image directory and start the multicast software :</p>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;">
<ol>
<li class="li1">
<div class="de1"><span class="kw3">cd</span> ~<span class="sy0">/</span>amino<span class="sy0">/</span>images</div>
</li>
<li class="li1">
<div class="de1">~<span class="sy0">/</span>amino<span class="sy0">/</span>releases<span class="sy0">/</span>A110<span class="sy0">/</span>0.15.1-A110-fresco-ami_wm-subs-1<span class="sy0">/</span>server<span class="sy0">/</span>mcastbootd -D  <span class="re5">-C</span> ~<span class="sy0">/</span>amino<span class="sy0">/</span>releases<span class="sy0">/</span>A110<span class="sy0">/</span>0.15.1-A110-fresco-ami_wm-subs-<span class="nu0">1</span><span class="sy0">/</span>server<span class="sy0">/</span>mcastbootd.conf</div>
</li>
<li class="li1">
<div class="de1"><span class="nu0">16</span>:04:<span class="nu0">12.788281</span> <span class="sy0">/</span>home<span class="sy0">/</span>prune<span class="sy0">/</span>amino<span class="sy0">/</span>releases<span class="sy0">/</span>A110<span class="sy0">/</span>0.15.1-A110-fresco-ami_wm-subs-<span class="nu0">1</span><span class="sy0">/</span>server<span class="sy0">/</span>mcastbootd: Multicast boot<span class="sy0">/</span>FS server daemon version 0.01.00</div>
</li>
<li class="li1">
<div class="de1"><span class="nu0">16</span>:04:<span class="nu0">12.788591</span> <span class="sy0">/</span>home<span class="sy0">/</span>prune<span class="sy0">/</span>amino<span class="sy0">/</span>releases<span class="sy0">/</span>A110<span class="sy0">/</span>0.15.1-A110-fresco-ami_wm-subs-<span class="nu0">1</span><span class="sy0">/</span>server<span class="sy0">/</span>mcastbootd version 0.01.00 started</div>
</li>
<li class="li1">
<div class="de1"><span class="nu0">16</span>:04:<span class="nu0">12.792805</span> 239.255.230.52:<span class="nu0">11111</span> transmission of boot image <span class="st_h">&#8216;bootstrap.signed&#8217;</span> enabled</div>
</li>
<li class="li1">
<div class="de1"><span class="nu0">16</span>:04:<span class="nu0">12.796833</span> 239.255.230.53:<span class="nu0">11111</span> transmission of <span class="st_h">&#8216;mc2&#8242;</span> enabled</div>
</li>
<li class="li1">
<div class="de1"><span class="nu0">16</span>:04:<span class="nu0">12.796895</span> 239.255.230.53:<span class="nu0">11111</span> transmission of filesystem <span class="st_h">&#8216;mc2&#8242;</span> commenced</div>
</li>
<li class="li1">
<div class="de1"><span class="nu0">16</span>:04:<span class="nu0">12.817127</span> 239.255.230.52:<span class="nu0">11111</span> transmission of boot image <span class="st_h">&#8216;bootstrap.signed&#8217;</span> commenced</div>
</li>
<li class="li1">
<div class="de1">&#8230;.</div>
</li>
</ol>
</div>
</div>
<p>You can now plug in your set top box and see the magic&#8230;<br />
Or not&#8230; <img src='http://www.lecentre.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
I just found out that the DHCP config file may not be right, depending on your Amni revision. While the original Vendor-Name is &laquo;&nbsp;aminoAMINET110mboot&nbsp;&raquo;, this can change.<br />
The solution I found was to trace the IP (bootP) packets on the lan and see what is going on. I use tcpdump for that.<br />
This is also the point where I will describe my setup :<br />
My host have 2 network card. Eth0 is connected to the local LAN and is using a dhcp client to get an IP. I&#8217;m connecting to it using SSH from my Mac, where I write this blog post at the same time.<br />
The other network card, eth1, is connected to a switch where I plus the set top box. As the multicast packets of the mcastbootd only goes out by the first interface, eth0, I had to use a special command to configure eth1, so the multicast goes on it. Here is the whole config command.<br />
Of course, if you are local on the host and have only one ethernet card, you won&#8217;t have to do this :</p>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">ifconfig</span> eth1 10.20.0.2 netmask 255.255.252.0 up</div>
</li>
<li class="li1">
<div class="de1">route add <span class="re5">-net</span> 224.0.0.0 netmask 240.0.0.0 dev eth1</div>
</li>
</ol>
</div>
</div>
<p>The IP 10.20.0.2 is just part of the DHCP range I set up but outside the pool.<br />
Then, to get the &laquo;&nbsp;vendor name&nbsp;&raquo; used by the set top box to ask for bootp/dhcp, I used tcpdump on eth1, then plugged in the amino and power it. Here is the result :</p>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;">
<ol>
<li class="li1">
<div class="de1"> tcpdump <span class="re5">-s</span> 1024 <span class="re5">-x</span> <span class="re5">-i</span> eth1 <span class="re5">-vv</span> host not 239.255.230.52 and host not 239.255.230.53</div>
</li>
<li class="li1">
<div class="de1">tcpdump: listening on eth1, link-type EN10MB <span class="br0">&#40;</span>Ethernet<span class="br0">&#41;</span>, capture <span class="kw2">size</span> 1024 bytes</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">15:44:20.598588 IP <span class="br0">&#40;</span>tos 0&#215;0, ttl  64, <span class="kw2">id</span> 1, offset 0, flags <span class="br0">&#91;</span>none<span class="br0">&#93;</span>, proto: UDP <span class="br0">&#40;</span>17<span class="br0">&#41;</span>, length: 328<span class="br0">&#41;</span> 0.0.0.0.bootpc <span class="sy0">&amp;</span>gt; 255.255.255.255.bootps: <span class="br0">&#91;</span>udp <span class="kw2">sum</span> ok<span class="br0">&#93;</span> BOOTP<span class="sy0">/</span>DHCP, Request from 00:00:00:00:00:00 <span class="br0">&#40;</span>oui Unknown<span class="br0">&#41;</span>, length <span class="nu0">300</span>, xid 0x167eb0e7, Flags <span class="br0">&#91;</span> none <span class="br0">&#93;</span> <span class="br0">&#40;</span>0&#215;0000<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">          Client-Ethernet-Address 00:00:00:00:00:00 <span class="br0">&#40;</span>oui Unknown<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">          Vendor-rfc1048 Extensions</div>
</li>
<li class="li1">
<div class="de1">            Magic Cookie 0&#215;33333333</div>
</li>
<li class="li1">
<div class="de1">            DHCP-Message Option <span class="nu0">53</span>, length <span class="nu0">1</span>: Discover</div>
</li>
<li class="li1">
<div class="de1">            Vendor-Class Option <span class="nu0">60</span>, length <span class="nu0">26</span>: <span class="st0">&quot;insecureAMINET11xmboot1.32&quot;</span></div>
</li>
<li class="li1">
<div class="de1">            Vendor-Option Option <span class="nu0">43</span>, length <span class="nu0">24</span>: 2.2.2.22.22.22.22.22.22.22.120.2.2.222.22.222.222.222.2.2.22.22.22.52</div>
</li>
</ol>
</div>
</div>
<p>What is all this mess ?<br />
In fact, you don&#8217;t care !<br />
The only important part is <strong>Vendor-Class Option 60, length 26: &laquo;&nbsp;insecureAMINET11xmboot1.32&#8243;</strong>. This is what you have to set in your dhcpd.conf so it will find the amino, give it the IP and params so it can find the broadcast server.<br />
So, here is my dhcpd.conf file, right from the Ubuntu dhcpd.conf + amino specials :</p>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;">
<ol>
<li class="li1">
<div class="de1"><span class="co0"># cat /etc/dhcp3/dhcpd.conf  | grep -v \#</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">ddns-update-style none;</div>
</li>
<li class="li1">
<div class="de1">option domain-name <span class="st0">&quot;example.org&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">option domain-name-servers ns1.example.org, ns2.example.org;</div>
</li>
<li class="li1">
<div class="de1">default-lease-time <span class="nu0">600</span>;</div>
</li>
<li class="li1">
<div class="de1">max-lease-time <span class="nu0">7200</span>;</div>
</li>
<li class="li1">
<div class="de1">log-facility local7;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">option space AMINO;</div>
</li>
<li class="li1">
<div class="de1">option AMINO.address &nbsp; &nbsp;code 1 = ip-address;</div>
</li>
<li class="li1">
<div class="de1">option AMINO.port &nbsp; &nbsp; &nbsp; code 2 = integer <span class="nu0">16</span>;</div>
</li>
<li class="li1">
<div class="de1">option AMINO.product &nbsp; &nbsp;code 3 = text;</div>
</li>
<li class="li1">
<div class="de1">option AMINO.option &nbsp; &nbsp; code 4 = text;</div>
</li>
<li class="li1">
<div class="de1">option AMINO.version &nbsp; &nbsp;code 5 = text;</div>
</li>
<li class="li1">
<div class="de1">option AMINO.middleware code 6 = ip-address;</div>
</li>
<li class="li1">
<div class="de1">option AMINO.mw_port &nbsp; &nbsp;code 7 = integer <span class="nu0">16</span>;</div>
</li>
<li class="li1">
<div class="de1">option AMINO.homepage &nbsp; code 8 = text;</div>
</li>
<li class="li1">
<div class="de1">option AMINO.dindex &nbsp; &nbsp; code 9 = integer <span class="nu0">32</span>;</div>
</li>
<li class="li1">
<div class="de1">option AMINO.dindex_min code 10 = integer <span class="nu0">32</span>;</div>
</li>
<li class="li1">
<div class="de1">option AMINO.dindex_page &nbsp; &nbsp; &nbsp; &nbsp;code 11 = text;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">class <span class="st0">&quot;AmiNET110 all&quot;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">match <span class="kw1">if</span> <span class="br0">&#40;</span>option vendor-class-identifier=<span class="st0">&quot;Aminoaminet110fisys&quot;</span><span class="br0">&#41;</span> or</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#40;</span><span class="br0">&#40;</span>substring<span class="br0">&#40;</span> option vendor-encapsulated-options, <span class="nu0">2</span>, <span class="nu0">9</span><span class="br0">&#41;</span>=<span class="st0">&quot;aminet110&quot;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">and <span class="br0">&#40;</span>substring<span class="br0">&#40;</span>option vendor-encapsulated-options, <span class="nu0">13</span>, <span class="nu0">5</span><span class="br0">&#41;</span>=<span class="st0">&quot;fisys&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">vendor-option-space AMINO;</div>
</li>
<li class="li1">
<div class="de1">option AMINO.homepage <span class="st0">&quot;http://tv.portal.com/tv.html&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">class <span class="st0">&quot;AmiNET110 mboot&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; match <span class="kw1">if</span> <span class="br0">&#40;</span>option vendor-class-identifier=<span class="st0">&quot;insecureAMINET11xmboot1.32&quot;</span><span class="br0">&#41;</span> or</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="br0">&#40;</span><span class="br0">&#40;</span>substring<span class="br0">&#40;</span> option vendor-encapsulated-options, <span class="nu0">2</span>, <span class="nu0">9</span><span class="br0">&#41;</span>=<span class="st0">&quot;AMINET110&quot;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; and <span class="br0">&#40;</span>substring<span class="br0">&#40;</span>option vendor-encapsulated-options, <span class="nu0">13</span>, <span class="nu0">5</span><span class="br0">&#41;</span>=<span class="st0">&quot;mboot&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>; </div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; vendor-option-space AMINO;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; option AMINO.address 239.255.230.52;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; option AMINO.port <span class="nu0">11111</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">class <span class="st0">&quot;AmiNET110 upgrd&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; match <span class="kw1">if</span> <span class="br0">&#40;</span>option vendor-class-identifier=<span class="st0">&quot;insecureAMINET11xupgrd1.32&quot;</span><span class="br0">&#41;</span> or</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="br0">&#40;</span><span class="br0">&#40;</span>substring<span class="br0">&#40;</span> option vendor-encapsulated-options,<span class="nu0">2</span>,<span class="nu0">9</span><span class="br0">&#41;</span>=<span class="st0">&quot;aminet110&quot;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; and <span class="br0">&#40;</span>substring<span class="br0">&#40;</span> option vendor-encapsulated-options,<span class="nu0">13</span>,<span class="nu0">5</span><span class="br0">&#41;</span>=<span class="st0">&quot;upgrd&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>; </div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; vendor-option-space AMINO;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; option AMINO.address 239.255.230.53;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; option AMINO.port <span class="nu0">11111</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">shared-network IPTV <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">subnet 10.20.0.0 netmask 255.255.252.0 <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">option subnet-mask 255.255.252.0;</div>
</li>
<li class="li1">
<div class="de1">option domain-name <span class="st0">&quot;mydomain.net&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">option domain-name-servers 10.16.12.10;</div>
</li>
<li class="li1">
<div class="de1">option routers 10.20.3.254;</div>
</li>
<li class="li1">
<div class="de1">option broadcast-address 10.20.3.255;</div>
</li>
<li class="li1">
<div class="de1">option ntp-servers 10.16.12.22;</div>
</li>
<li class="li1">
<div class="de1">pool <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">range 10.20.2.70 10.20.2.250;</div>
</li>
<li class="li1">
<div class="de1">allow members of <span class="st0">&quot;all&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">allow members of <span class="st0">&quot;AmiNET110 upgrd&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">allow members of <span class="st0">&quot;AmiNET110 all&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">allow members of <span class="st0">&quot;AmiNET110 mboot&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
</div>
<p>Now, restart dhcpd server, plug the amino and power it&#8230; and VOILA !!<br />
I hope this is clear enough for you. Please comment if you need more details. Just remember it&#8217;s now 22:00 and I started all this at 19:00, so please don&#8217;t ask too newbie questions.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lecentre.net/blog/archives/694/feed</wfw:commentRss>
		<slash:comments>59</slash:comments>
		</item>
		<item>
		<title>TrucTruc à SF, day 3-4 part 2</title>
		<link>http://www.lecentre.net/blog/archives/384</link>
		<comments>http://www.lecentre.net/blog/archives/384#comments</comments>
		<pubDate>Wed, 24 Sep 2008 02:25:28 +0000</pubDate>
		<dc:creator>TrucTruc</dc:creator>
				<category><![CDATA[Non classé]]></category>

		<guid isPermaLink="false">http://www.lecentre.net/blog/?p=384</guid>
		<description><![CDATA[Alors ce matin je n&#8217;ai pas eu le temps de mettre toutes les photo. Voila celles de dimanche soir, lundi, mardi.  Tout a commencé a la &#171;&#160;welcome party&#160;&#187; Oracle : plein de nourriture, des spectacles de danse hawaïenne et de youkoulélé :         Et tous les gens qui faisaient la queue pour des [...]]]></description>
			<content:encoded><![CDATA[<p><em>Alors ce matin je n&#8217;ai pas eu le temps de mettre toutes les photo. Voila celles de dimanche soir, lundi, mardi. </em></p>
<p><em>Tout a commencé a la &laquo;&nbsp;welcome party&nbsp;&raquo; Oracle : plein de nourriture, des spectacles de danse hawaïenne et de youkoulélé :<br />
</em><a href="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6556-copie_600px.jpg"><em><img class="alignnone size-medium wp-image-385" title="img_6556-copie_600px" src="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6556-copie_600px-250x166.jpg" alt="" width="250" height="166" /> </em></a><a href="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6559-copie_600px.jpg"><em><img class="alignnone size-medium wp-image-386" title="img_6559-copie_600px" src="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6559-copie_600px-250x166.jpg" alt="" width="250" height="166" /><br />
</em></a><a href="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6561-copie_600px.jpg"><em><img class="alignnone size-medium wp-image-387" title="img_6561-copie_600px" src="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6561-copie_600px-250x166.jpg" alt="" width="250" height="166" /> </em></a><a href="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6563-copie_600px.jpg"><em><img class="alignnone size-medium wp-image-388" title="img_6563-copie_600px" src="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6563-copie_600px-250x166.jpg" alt="" width="250" height="166" /><br />
<span id="more-384"></span><br />
</em></a><a href="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6573-copie_600px.jpg"><em><img class="alignnone size-medium wp-image-398" title="img_6573-copie_600px" src="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6573-copie_600px-250x166.jpg" alt="" width="250" height="166" /> </em></a><a href="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6574-copie_600px.jpg"><em><img class="alignnone size-medium wp-image-399" title="img_6574-copie_600px" src="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6574-copie_600px-250x166.jpg" alt="" width="250" height="166" /></em></a></p>
<p><a href="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6574-copie_600px.jpg"><em> </em></a></p>
<p> </p>
<p><em>Et tous les gens qui faisaient la queue pour des bonbons (mais moi je suis passé devant) : <br />
 </em><em><a href="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6566-copie_600px.jpg"></a></em><a href="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6567-copie_600px.jpg"><em><img class="alignnone size-medium wp-image-390" title="img_6567-copie_600px" src="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6567-copie_600px-166x250.jpg" alt="" width="166" height="250" /></em></a><em> </em><a href="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6568-copie_600px.jpg"><em><img class="alignnone size-medium wp-image-391" title="img_6568-copie_600px" src="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6568-copie_600px-250x166.jpg" alt="" width="250" height="166" /></em></a></p>
<p><em>Il y avait même une fille qui se faisait tatouer avec des paillettes. Tout le monde se prenait en photo avec elle alors moi aussi. Mais bon, de près elle avait vraiment une vilaine peau : <br />
</em><a href="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6570-copie_600px.jpg"><em><img class="alignnone size-medium wp-image-394" title="img_6570-copie_600px" src="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6570-copie_600px-250x166.jpg" alt="" width="250" height="166" /> </em></a><a href="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6571-copie_600px.jpg"><em><img class="alignnone size-medium wp-image-395" title="img_6571-copie_600px" src="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6571-copie_600px-250x166.jpg" alt="" width="250" height="166" /></em></a><em><br />
 </em><a href="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6569-copie_600px.jpg"><em><img class="alignnone size-medium wp-image-392" title="img_6569-copie_600px" src="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6569-copie_600px-166x250.jpg" alt="" width="166" height="250" /></em></a><em> </em><a href="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6572-copie_600px.jpg"><em><img class="alignnone size-medium wp-image-393" title="img_6572-copie_600px" src="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6572-copie_600px-166x250.jpg" alt="" width="166" height="250" /><br />
</em></a><a href="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6578-copie_600px1.jpg"><em><img class="alignnone size-medium wp-image-397" title="img_6578-copie_600px1" src="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6578-copie_600px1-166x250.jpg" alt="" width="166" height="250" /></em></a></p>
<p><em>Apres ça je suis allé au Pub. Normalement je suis trop petit, mais ils m&#8217;ont laissé rentrer (ils arrêtaient pas de dire &laquo;&nbsp;so cute&nbsp;&raquo; mais je sais pas ce que ca veut dire) :<br />
 </em><a href="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6579-copie_600px.jpg"><em><img class="alignnone size-medium wp-image-400" title="img_6579-copie_600px" src="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6579-copie_600px-250x166.jpg" alt="" width="250" height="166" /></em></a><em> </em><a href="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6581-copie_600px.jpg"><em><img class="alignnone size-medium wp-image-401" title="img_6581-copie_600px" src="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6581-copie_600px-250x166.jpg" alt="" width="250" height="166" /></em></a><a href="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6582-copie_600px.jpg"><em><img class="alignnone size-medium wp-image-402" title="img_6582-copie_600px" src="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6582-copie_600px-250x166.jpg" alt="" width="250" height="166" /></em></a><em> </em><a href="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6584-copie_600px.jpg"><em><img class="alignnone size-medium wp-image-403" title="img_6584-copie_600px" src="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6584-copie_600px-250x166.jpg" alt="" width="250" height="166" /><br />
</em></a><a href="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6586-copie_600px.jpg"><em><img class="alignnone size-medium wp-image-404" title="img_6586-copie_600px" src="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6586-copie_600px-250x166.jpg" alt="" width="250" height="166" /></em></a><em> </em><a href="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6587-copie_600px.jpg"><em><img class="alignnone size-medium wp-image-405" title="img_6587-copie_600px" src="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6587-copie_600px-250x166.jpg" alt="" width="250" height="166" /></em></a></p>
<p><em>Et voila.</em></p>
<p><em>Aujourd&#8217;hui j&#8217;ai vu les exposants. C&#8217;est drôle mais on dirait que personne ne regarde les stands. Les gens sont juste la pour les cadeaux. Du coup, je me suis fait des nouveaux amis :<br />
</em><a href="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6593-copie_600px.jpg"><em><img class="alignnone size-medium wp-image-406" title="img_6593-copie_600px" src="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6593-copie_600px-166x250.jpg" alt="" width="166" height="250" /></em></a></p>
<p><em><a href="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6593-copie_600px.jpg"></a>Encore une fois, a mon retours, Vachette et Chaussette dormaient&#8230; elles ont vraiment un probleme avec le Jet-Lag :<br />
</em><a href="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6594-copie_600px.jpg"><em><img class="alignnone size-medium wp-image-407" title="img_6594-copie_600px" src="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6594-copie_600px-250x166.jpg" alt="" width="250" height="166" /></em></a></p>
<p><em><a href="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6594-copie_600px.jpg"></a>Moi aussi j&#8217;ai envie de dormir maintenant&#8230; </em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.lecentre.net/blog/archives/384/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TrucTruc à SF, day 3-4</title>
		<link>http://www.lecentre.net/blog/archives/379</link>
		<comments>http://www.lecentre.net/blog/archives/379#comments</comments>
		<pubDate>Tue, 23 Sep 2008 15:03:22 +0000</pubDate>
		<dc:creator>TrucTruc</dc:creator>
				<category><![CDATA[Non classé]]></category>

		<guid isPermaLink="false">http://www.lecentre.net/blog/?p=379</guid>
		<description><![CDATA[J&#8217;ai pas encore eu le temps de mettre les photo de dimanche soir et lundi (oups, j&#8217;ai pas pris de photo lundi), mais voila celles de mardi matin. Levé a 6h du mat, j&#8217;ai pris un petit dej a 7h :    MIAM!!!]]></description>
			<content:encoded><![CDATA[<p><em>J&#8217;ai pas encore eu le temps de mettre les photo de dimanche soir et lundi (oups, j&#8217;ai pas pris de photo lundi), mais voila celles de mardi matin. Levé a 6h du mat, j&#8217;ai pris un petit dej a 7h :<br />
</em><a href="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6591-copie_600px.jpg"><em><img class="alignnone size-medium wp-image-380" title="img_6591-copie_600px" src="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6591-copie_600px-250x166.jpg" alt="" width="250" height="166" /></em></a><em>  </em><a href="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6588-copie_600px.jpg"><em><img class="alignnone size-medium wp-image-381" title="img_6588-copie_600px" src="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6588-copie_600px-250x166.jpg" alt="" width="250" height="166" /><br />
</em></a><em><a href="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6590-copie_600px.jpg"></a></em></p>
<p><em>MIAM!!!<br />
</em><a href="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6590-copie_600px.jpg"><em><img class="alignnone size-medium wp-image-382" title="img_6590-copie_600px" src="http://www.lecentre.net/blog/wp-content/uploads/2008/09/img_6590-copie_600px-250x166.jpg" alt="" width="250" height="166" /></em></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.lecentre.net/blog/archives/379/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>DHL, F**K YOU !</title>
		<link>http://www.lecentre.net/blog/archives/286</link>
		<comments>http://www.lecentre.net/blog/archives/286#comments</comments>
		<pubDate>Mon, 19 May 2008 09:10:19 +0000</pubDate>
		<dc:creator>Prune</dc:creator>
				<category><![CDATA[Non classé]]></category>

		<guid isPermaLink="false">http://www.lecentre.net/blog/?p=286</guid>
		<description><![CDATA[Want to buy something and get delivered by DHL ? DON&#8217;T !! or do so, but be prepared to have to stay at home the whole day, expecting your order. It seems DHL, at least in France, only deliver &#171;&#160;between 8 and 17&#8243;. Can&#8217;t be more precise. Welcome to 2008 !]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-287" title="dhl" src="http://www.lecentre.net/blog/wp-content/uploads/2008/05/dhl.gif" alt="" width="155" height="22" /><br />
Want to buy something and get delivered by DHL ?</p>
<h1><strong> DON&#8217;T !!</strong></h1>
<p>or do so, but be prepared to have to stay at home the whole day, expecting your order. It seems DHL, at least in France, only deliver &laquo;&nbsp;between 8 and 17&#8243;. Can&#8217;t be more precise.</p>
<p>Welcome to 2008 !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lecentre.net/blog/archives/286/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Fuppes DLNA Server compilation os Os X Leopard</title>
		<link>http://www.lecentre.net/blog/archives/284</link>
		<comments>http://www.lecentre.net/blog/archives/284#comments</comments>
		<pubDate>Wed, 30 Apr 2008 14:03:07 +0000</pubDate>
		<dc:creator>Prune</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[Non classé]]></category>
		<category><![CDATA[OS X]]></category>
		<category><![CDATA[Playstation 3]]></category>

		<guid isPermaLink="false">http://www.lecentre.net/blog/?p=284</guid>
		<description><![CDATA[Fuppes is a &#171;&#160;free&#160;&#187; Upnp and DLNA server. It can work on almost any system, from Linux to Os X While you will find some usefull help to install it on Leopard (check here), it may not be so easy. First of all, install Macports. Then, change your PATH environement variable so you have /opt/local/bin [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-285" title="title-logo" src="http://www.lecentre.net/blog/wp-content/uploads/2008/04/title-logo.png" alt="" width="225" height="100" /></p>
<p>Fuppes is a &laquo;&nbsp;free&nbsp;&raquo; Upnp and DLNA server. It can work on almost any system, from Linux to Os X <img src='http://www.lecentre.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>While you will find some usefull help to install it on Leopard (check <a title="http://www.archoslounge.net/forum/showthread.php?p=37924" href="http://www.archoslounge.net/forum/showthread.php?p=37924" target="_blank">here</a>), it may not be so easy.</p>
<p>First of all, install Macports.<br />
Then, change your PATH environement variable so you have <em>/opt/local/bin</em> and <em>/opt/local/sbin</em> at the begining.<br />
Then, <em>port install</em> some packages :</p>
<ul>
<li>autoconf</li>
<li>automake</li>
<li>ffmpeg (see my other post for compilation)</li>
<li>ImageMagick</li>
<li>simage</li>
<li>taglib</li>
<li>pcre</li>
<li>pkgconfig</li>
<li>SQLite3</li>
<li>libxml2</li>
<li>ossp-uuid</li>
<li>lame</li>
<li>flac</li>
<li>vorbis</li>
</ul>
<p>Other may be needed.</p>
<p>Then, download the latest CVS trunk and install it :</p>
<pre lang="shell">$ sudo svn co http://fuppes-svn.ulrich-voelkel.de/trunk fuppes
Password:
$ cd fuppes/
$ autoreconf -vfi
$ CFLAGS="-I/opt/local/include/libavformat -I/opt/local/include/libavcodec -I/opt/local/include -I/opt/local/include/libavutil -I/opt/local/include/libswscale" \
CPPFLAGS="-I/opt/local/include/libavformat -I/opt/local/include/libavcodec -I/opt/local/include -I/opt/local/include/libavutil -I/opt/local/include/libswscale" \
LDFLAGS="-L/opt/local/lib -R/opt/local/lib" \
./configure --prefix=/opt/fuppes --enable-video-transcoding
$ make
$ sudo make install</pre>
<p>Then, start fuppes and go on the web interface :<br />
<em>/opt/fuppes/bin/fuppes</em><br />
Or start it as a standalone daemon :<br />
<em>/opt/fuppes/bin/fuppesd</em></p>
<p>Then browse to your IP on port 50865.</p>
<p>Of course, if you have no time but got money, you can just buy the Eyeconnect software from Elgato&#8230;</p>
<p>Cheers <img src='http://www.lecentre.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.lecentre.net/blog/archives/284/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>101 et 32&#8230;</title>
		<link>http://www.lecentre.net/blog/archives/274</link>
		<comments>http://www.lecentre.net/blog/archives/274#comments</comments>
		<pubDate>Wed, 09 Apr 2008 13:21:25 +0000</pubDate>
		<dc:creator>Prune</dc:creator>
				<category><![CDATA[Non classé]]></category>
		<category><![CDATA[anniversaire]]></category>

		<guid isPermaLink="false">http://www.lecentre.net/blog/?p=274</guid>
		<description><![CDATA[Et voila !! 101eme article dans le blog, et 32 ans dans 2 jours. On fait la fête&#8230; WHOOOOHOOOO. et Voila. On passe a autre chose. Merci]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="aligncenter size-medium wp-image-275" title="anniversaire_013" src="http://www.lecentre.net/blog/wp-content/uploads/2008/04/anniversaire_013.gif" alt="" width="101" height="134" /></p>
<p>Et voila !!</p>
<p>101eme article dans le blog, et 32 ans dans 2 jours. On fait la fête&#8230; WHOOOOHOOOO. et Voila. On passe a autre chose.</p>
<p>Merci <img src='http://www.lecentre.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.lecentre.net/blog/archives/274/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

